From 2a2af44eacf0e962853dba0b6ecae19fe18f9ea3 Mon Sep 17 00:00:00 2001 From: A Farzat Date: Thu, 9 Oct 2025 18:10:00 +0300 Subject: Add the ability to use YouTube API This is to circumvent YouTube blocking. --- data_analyser/utils.py | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) (limited to 'data_analyser/utils.py') diff --git a/data_analyser/utils.py b/data_analyser/utils.py index 95dc2fe..921015d 100644 --- a/data_analyser/utils.py +++ b/data_analyser/utils.py @@ -1,31 +1,34 @@ +from traceback import print_exc + +from pymongo.collection import Collection + from components.subscriptions.main import Subscription from components.subscriptions.typing import SubsDict from components.videos import VideoTuple from components.extractor.obtain_vid_info import obtain_vid_duration -from pymongo.collection import Collection - -def analyse_video(vid_tuple: VideoTuple) -> VideoTuple: +def analyse_video(vid_tuple: VideoTuple, api_key: str='') -> VideoTuple: try: - duration = obtain_vid_duration(vid_tuple.link) + duration = obtain_vid_duration(vid_tuple.link, vid_tuple.id, api_key=api_key) except: + print_exc() duration = -2 return vid_tuple._replace(analysed=True, duration=duration) -def analyse_subscription(sub: Subscription) -> bool: +def analyse_subscription(sub: Subscription, api_key: str='') -> bool: updated = False for i, vid in enumerate(sub.videos): if not vid.analysed: - sub.videos[i] = analyse_video(vid) + sub.videos[i] = analyse_video(vid, api_key) updated = True return updated -def analyse_collection(subs_collection: Collection[SubsDict]) -> int: +def analyse_collection(subs_collection: Collection[SubsDict], api_key: str='') -> int: num_updated = 0 for sub_dict in subs_collection.find(): sub = Subscription(**sub_dict) sub._collection = subs_collection - if analyse_subscription(sub): + if analyse_subscription(sub, api_key): sub.update_videos() num_updated += 1 return num_updated -- cgit v1.2.3-70-g09d2