From fdbfd66bfdfb5f7e3a4e21bde42e708a467b9f08 Mon Sep 17 00:00:00 2001 From: EstrellaXD Date: Wed, 10 May 2023 10:35:02 +0800 Subject: [PATCH] Rename thread --- src/main.py | 56 +++++++++++++++++++++-------------- src/module/manager/renamer.py | 2 +- src/module/models/config.py | 4 +-- 3 files changed, 36 insertions(+), 26 deletions(-) diff --git a/src/main.py b/src/main.py index 857e0d9e..a30ccc30 100644 --- a/src/main.py +++ b/src/main.py @@ -11,6 +11,7 @@ from fastapi.templating import Jinja2Templates from module.api import router from module.conf import VERSION, settings, setup_logger from module.rss import RSSAnalyser +from module.manager import Renamer from module.conf.uvicorn_logging import logging_config @@ -27,7 +28,14 @@ def rss_loop(stop_event, rss_link: str): while not stop_event.is_set(): rss_analyser.run(rss_link) logger.info("RSS loop finished.") - stop_event.wait(settings.program.sleep_time) + stop_event.wait(settings.program.rss_time) + +def rename_loop(stop_event): + while not stop_event.is_set(): + with Renamer() as renamer: + renamer.rename() + logger.info("Rename loop finished.") + stop_event.wait(settings.program.rename_time) rss_thread = threading.Thread( @@ -35,68 +43,70 @@ rss_thread = threading.Thread( args=(stop_event, rss_link), ) +rename_thread = threading.Thread( + target=rename_loop, + args=(stop_event,), +) + @router.on_event("startup") async def startup(): - global rss_thread + global rss_thread, rename_thread setup_logger() - rss_thread = threading.Thread( - target=rss_loop, - args=(stop_event, rss_link), - ) rss_thread.start() + rename_thread.start() @router.on_event("shutdown") async def shutdown(): stop_event.set() - logger.info("Stopping RSS analyser...") + logger.info("Stopping program...") @router.get("/api/v1/restart", tags=["program"]) async def restart(): - global rss_thread + global rss_thread, rename_thread if not rss_thread.is_alive(): return {"status": "Already stopped."} stop_event.set() logger.info("Stopping RSS analyser...") rss_thread.join() + rename_thread.join() stop_event.clear() time.sleep(1) settings.load() rss_link = settings.rss_link() - if "://" not in rss_link: - rss_link = f"https://{rss_link}" - rss_thread = threading.Thread( - target=rss_loop, - args=(stop_event, rss_link), - ) + setup_logger() + rss_thread = threading.Thread(target=rss_loop, args=(stop_event, rss_link)) + rename_thread = threading.Thread(target=rename_loop, args=(stop_event,)) rss_thread.start() + rename_thread.start() return {"status": "ok"} @router.get("/api/v1/start", tags=["program"]) async def start(): - global rss_thread - if rss_thread.is_alive(): + global rss_thread, rename_thread + if not stop_event.is_set(): return {"status": "Already started."} - rss_thread = threading.Thread( - target=rss_loop, - args=(stop_event, rss_link), - ) + rss_thread = threading.Thread(target=rss_loop, args=(stop_event, rss_link)) + rename_thread = threading.Thread(target=rename_loop,args=(stop_event,)) rss_thread.start() + rename_thread.start() return {"status": "ok"} @router.get("/api/v1/stop", tags=["program"]) async def stop(): - global rss_thread - if not rss_thread.is_alive(): + global rss_thread, rename_thread + if stop_event.is_set(): return {"status": "Already stopped."} stop_event.set() - logger.info("Stopping RSS analyser...") + logger.info("Stopping program...") + rename_thread.join() rss_thread.join() stop_event.clear() + logger.info("Program stopped.") return {"status": "ok"} diff --git a/src/module/manager/renamer.py b/src/module/manager/renamer.py index 1b7c4843..a684623d 100644 --- a/src/module/manager/renamer.py +++ b/src/module/manager/renamer.py @@ -54,7 +54,7 @@ class Renamer(DownloadClient): elif method == "pn": return f"{file_info.title} S{season}E{episode}{file_info.suffix}" elif method == "advance": - return f"{bangumi_name} S{file_info.season}E{file_info.episode}{file_info.suffix}" + return f"{bangumi_name} S{season}E{episode}{file_info.suffix}" elif method == "subtitle_pn": return f"{file_info.title} S{season}E{episode}.{file_info.language}{file_info.suffix}" elif method == "subtitle_advance": diff --git a/src/module/models/config.py b/src/module/models/config.py index 8c96c326..6e260c31 100644 --- a/src/module/models/config.py +++ b/src/module/models/config.py @@ -4,8 +4,8 @@ from pydantic import BaseModel, Field class Program(BaseModel): - sleep_time: int = Field(7200, description="Sleep time") - rename_times: int = Field(20, description="Rename times in one loop") + rss_time: int = Field(7200, description="Sleep time") + rename_time: int = Field(60, description="Rename times in one loop") webui_port: int = Field(7892, description="WebUI port")