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)