Files
biliup/engine/__init__.py
T
2021-01-13 19:22:29 +08:00

50 lines
1.5 KiB
Python

import asyncio
import yaml
from common.decorators import Plugin
from common.event import Event, event_manager
from common.reload import AutoReload
from common.timer import Timer
with open(r'config.yaml', encoding='utf-8') as stream:
config = yaml.load(stream, Loader=yaml.FullLoader)
def invert_dict(d: dict):
inverse_dict = {}
for k, v in d.items():
for item in v:
inverse_dict[item] = k
return inverse_dict
async def main():
import engine.plugins
streamers = config['streamers']
streamer_url = {k: v['url'] for k, v in streamers.items()}
inverted_index = invert_dict(streamer_url)
urls = list(inverted_index.keys())
url_status = dict.fromkeys(inverted_index, 0)
checker = Plugin(engine.plugins).sorted_checker(urls)
# 初始化事件管理器
event_manager.context = {**config, 'urls': urls, 'url_status': url_status,
'checker': checker, 'inverted_index': inverted_index, 'streamer_url': streamer_url}
from engine.handler import CHECK_UPLOAD, CHECK
event_manager.start()
async def check_timer():
event_manager.send_event(Event(CHECK_UPLOAD))
for k in checker.keys():
event_manager.send_event(Event(CHECK, (k,)))
# 初始化定时器
timer = Timer(func=check_timer, interval=40)
# 模块更新自动重启
detector = AutoReload(event_manager, timer, interval=15)
await asyncio.gather(detector.astart(), timer.astart(), return_exceptions=True)
__all__ = ['downloader', 'uploader', 'plugins', 'main']