summaryrefslogtreecommitdiff
path: root/data_analyser/__main__.py
blob: 6f996d92a32b946dba516e63cb9adebeef22add4 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
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)