summaryrefslogtreecommitdiff
path: root/data_analyser
diff options
context:
space:
mode:
authorA Farzat <a@farzat.xyz>2025-10-06 05:45:19 +0300
committerA Farzat <a@farzat.xyz>2025-10-06 05:45:19 +0300
commiteaeb27d20a4d212a3ec3260ca0ccbfff31496358 (patch)
tree2468277ffe50785b435f4ce7feb441c768f44d31 /data_analyser
parent8b61cb7f0374c804373937b9c041e3f11c95d366 (diff)
downloadcsca5028-eaeb27d20a4d212a3ec3260ca0ccbfff31496358.tar.gz
csca5028-eaeb27d20a4d212a3ec3260ca0ccbfff31496358.zip
Move analyse functions to a separate file
This way they can be imported by other modules (e.g. for testing).
Diffstat (limited to 'data_analyser')
-rwxr-xr-xdata_analyser/__main__.py25
-rw-r--r--data_analyser/utils.py28
2 files changed, 29 insertions, 24 deletions
diff --git a/data_analyser/__main__.py b/data_analyser/__main__.py
index 6f996d9..8b4a984 100755
--- a/data_analyser/__main__.py
+++ b/data_analyser/__main__.py
@@ -1,32 +1,9 @@
#!/usr/bin/env python
from time import sleep
+from .utils import analyse_collection
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)
diff --git a/data_analyser/utils.py b/data_analyser/utils.py
new file mode 100644
index 0000000..115c216
--- /dev/null
+++ b/data_analyser/utils.py
@@ -0,0 +1,28 @@
+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]) -> int:
+ num_updated = 0
+ for sub_dict in subs_collection.find():
+ sub = Subscription(**sub_dict)
+ sub._collection = subs_collection
+ if analyse_subscription(sub):
+ sub.update_videos()
+ num_updated += 1
+ return num_updated