diff options
| author | A Farzat <a@farzat.xyz> | 2025-10-05 08:21:54 +0300 |
|---|---|---|
| committer | A Farzat <a@farzat.xyz> | 2025-10-05 08:21:54 +0300 |
| commit | 79855563ffdb82d9dce02587708c65467473ec22 (patch) | |
| tree | a0a757731b16a0f316751a5b051f4d3e605a7d65 /data_analyser | |
| parent | 89e8ba0a180c5c0cef5f6539156ae58a69661b75 (diff) | |
| download | csca5028-79855563ffdb82d9dce02587708c65467473ec22.tar.gz csca5028-79855563ffdb82d9dce02587708c65467473ec22.zip | |
Add data_analyser module
Diffstat (limited to 'data_analyser')
| -rwxr-xr-x | data_analyser/__main__.py | 33 |
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) |
