mirror of
https://github.com/amtoaer/bili-sync.git
synced 2026-05-07 06:22:54 +08:00
56 lines
1.7 KiB
Python
56 lines
1.7 KiB
Python
import asyncio
|
|
import os
|
|
import signal
|
|
import sys
|
|
|
|
import uvloop
|
|
from loguru import logger
|
|
|
|
from commands import recheck, refresh_nfo, refresh_poster, refresh_subtitle, refresh_upper, refresh_video
|
|
from models import init_model
|
|
from processor import cleanup, process
|
|
from settings import settings
|
|
|
|
asyncio.set_event_loop_policy(uvloop.EventLoopPolicy())
|
|
|
|
|
|
async def entry() -> None:
|
|
await init_model()
|
|
force = any("force" in _ for _ in sys.argv)
|
|
for command, func in (
|
|
("once", process),
|
|
("recheck", recheck),
|
|
("refresh_poster", refresh_poster),
|
|
("refresh_upper", refresh_upper),
|
|
("refresh_nfo", refresh_nfo),
|
|
("refresh_video", refresh_video),
|
|
("refresh_subtitle", refresh_subtitle),
|
|
):
|
|
if any(command in _ for _ in sys.argv):
|
|
logger.info("Running {}...", command)
|
|
if command.startswith("refresh"):
|
|
await func(force=force)
|
|
else:
|
|
await func()
|
|
return
|
|
logger.info("Running daemon...")
|
|
while True:
|
|
await process()
|
|
await asyncio.sleep(settings.interval * 60)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
# 确保 docker 退出时正确触发资源释放
|
|
signal.signal(signal.SIGTERM, lambda *_: os.kill(os.getpid(), signal.SIGINT))
|
|
with asyncio.Runner() as runner:
|
|
try:
|
|
runner.run(entry())
|
|
except Exception:
|
|
logger.exception("Unexpected error occurred, exiting...")
|
|
except KeyboardInterrupt:
|
|
logger.error("Exit Signal Received, exiting...")
|
|
finally:
|
|
logger.info("Cleaning up resources...")
|
|
runner.run(cleanup())
|
|
logger.info("Done, exited.")
|