summaryrefslogtreecommitdiff
path: root/data_analyser
diff options
context:
space:
mode:
authorA Farzat <a@farzat.xyz>2025-10-05 08:21:54 +0300
committerA Farzat <a@farzat.xyz>2025-10-05 08:21:54 +0300
commit79855563ffdb82d9dce02587708c65467473ec22 (patch)
treea0a757731b16a0f316751a5b051f4d3e605a7d65 /data_analyser
parent89e8ba0a180c5c0cef5f6539156ae58a69661b75 (diff)
downloadcsca5028-79855563ffdb82d9dce02587708c65467473ec22.tar.gz
csca5028-79855563ffdb82d9dce02587708c65467473ec22.zip
Add data_analyser module
Diffstat (limited to 'data_analyser')
-rwxr-xr-xdata_analyser/__main__.py33
1 files changed, 33 insertions, 0 deletions
diff --git a/data_analyser/__main__.py b/data_analyser/__main__.py
new file mode 100755
index 0000000..6f996d9
--- /dev/null
+++ b/data_analyser/__main__.py
@@ -0,0 +1,33 @@
+#!/usr/bin/env python
+
+from time import sleep
+
+from components.database import subscriptions
+from components.subscriptions.main import Subscription
+from components.subscriptions.typing import SubsDict
+from components.videos import VideoTuple
+from components.ytdlp import obtain_vid_info
+
+from pymongo.collection import Collection
+
+def analyse_video(vid_tuple: VideoTuple) -> VideoTuple:
+ info = obtain_vid_info(vid_tuple.link)
+ return vid_tuple._replace(analysed=True, duration_string=info["duration_string"])
+
+def analyse_subscription(sub: Subscription) -> bool:
+ updated = False
+ for i, vid in enumerate(sub.videos):
+ if not vid.analysed:
+ sub.videos[i] = analyse_video(vid)
+ updated = True
+ return updated
+
+def analyse_collection(subs_collection: Collection[SubsDict]) -> None:
+ for sub_dict in subs_collection.find():
+ sub = Subscription(**sub_dict)
+ if analyse_subscription(sub):
+ sub.update_videos()
+
+while True:
+ analyse_collection(subscriptions)
+ sleep(30)