diff options
| author | A Farzat <a@farzat.xyz> | 2025-10-06 05:45:19 +0300 |
|---|---|---|
| committer | A Farzat <a@farzat.xyz> | 2025-10-06 05:45:19 +0300 |
| commit | eaeb27d20a4d212a3ec3260ca0ccbfff31496358 (patch) | |
| tree | 2468277ffe50785b435f4ce7feb441c768f44d31 /data_analyser | |
| parent | 8b61cb7f0374c804373937b9c041e3f11c95d366 (diff) | |
| download | csca5028-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-x | data_analyser/__main__.py | 25 | ||||
| -rw-r--r-- | data_analyser/utils.py | 28 |
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 |
