29 lines
1.1 KiB
Python
29 lines
1.1 KiB
Python
import json
|
|
from io import BytesIO
|
|
from youtube_dl.extractor import youtube
|
|
from . import config, client, seen_videos
|
|
|
|
youtube._try_get = _try_get = youtube.try_get
|
|
def traverse_dict(src):
|
|
for (key, value) in src.items():
|
|
if key == 'scheduledStartTime':
|
|
return value
|
|
if isinstance(value, dict):
|
|
if value := traverse_dict(value):
|
|
return value
|
|
return None
|
|
|
|
def try_get(src, getter, expected_type=None):
|
|
if reason := src.get('reason'):
|
|
if isinstance(reason, str) and (reason.startswith('This live event will begin in ') or reason.startswith('Premieres in ')):
|
|
if t := _try_get(src, traverse_dict, str):
|
|
src['reason'] = f'autoytarchive:{t} {reason}'
|
|
return _try_get(src, getter, expected_type)
|
|
youtube.try_get = try_get
|
|
|
|
async def update_seen_videos():
|
|
with BytesIO(json.dumps(seen_videos).encode()) as file:
|
|
file.name = 'autoytarchive.json'
|
|
file.seek(0)
|
|
await client.edit_message(config['config']['storage_chat_id'], config['config']['storage_message_id'], file=file)
|