diff options
Diffstat (limited to 'data_analyser/utils.py')
| -rw-r--r-- | data_analyser/utils.py | 28 |
1 files changed, 28 insertions, 0 deletions
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 |
