From 2bcfb88c75763e09b594b428150cfeac9646214c Mon Sep 17 00:00:00 2001 From: EstrellaXD Date: Thu, 4 May 2023 22:19:22 +0800 Subject: [PATCH] Update notification --- src/main.py | 14 +++++++++++++- src/module/api.py | 9 --------- src/module/manager/renamer.py | 6 +++--- src/module/parser/analyser/torrent_parser.py | 20 ++++++++++++-------- 4 files changed, 28 insertions(+), 21 deletions(-) diff --git a/src/main.py b/src/main.py index 435389d2..bcb2b773 100644 --- a/src/main.py +++ b/src/main.py @@ -19,6 +19,19 @@ logger = logging.getLogger(__name__) main_process = multiprocessing.Process(target=app.run, args=(settings,)) +@router.on_event("startup") +async def startup(): + global main_process + main_process.start() + + +@router.on_event("shutdown") +async def shutdown(): + global main_process + if main_process.is_alive(): + os.kill(main_process.pid, signal.SIGTERM) + + @router.get("/api/v1/restart", tags=["program"]) async def restart(): global main_process @@ -85,6 +98,5 @@ else: if __name__ == "__main__": log_config = uvicorn.config.LOGGING_CONFIG log_config["formatters"]["default"]["fmt"] = "[%(asctime)s] %(levelname)-8s %(message)s" - main_process.start() uvicorn.run(router, host="0.0.0.0", port=settings.program.webui_port, log_config=log_config) diff --git a/src/module/api.py b/src/module/api.py index 48c66129..9d80015c 100644 --- a/src/module/api.py +++ b/src/module/api.py @@ -15,15 +15,6 @@ router = FastAPI() api_func = APIProcess(settings) -@router.on_event("startup") -async def startup_event(): - logger = logging.getLogger("uvicorn.access") - handler = logging.StreamHandler() - handler.setLevel(logging.INFO) - handler.setFormatter(logging.Formatter("[%(asctime)s] %(levelname)-8s %(message)s")) - logger.addHandler(handler) - - @router.get("/api/v1/data", tags=["info"]) async def get_data(): try: diff --git a/src/module/manager/renamer.py b/src/module/manager/renamer.py index 04f68936..417fb106 100644 --- a/src/module/manager/renamer.py +++ b/src/module/manager/renamer.py @@ -47,7 +47,7 @@ class Renamer: torrent_name = info.name suffix = os.path.splitext(media_path)[-1] compare_name = self.get_file_name(media_path) - new_path = self._renamer.torrent_parser( + new_path, episode = self._renamer.torrent_parser( torrent_name=torrent_name, bangumi_name=bangumi_name, season=season, @@ -57,7 +57,7 @@ class Renamer: if compare_name != new_path: try: self._client.rename_torrent_file(_hash=info.hash, old_path=media_path, new_path=new_path) - self._notification.send_msg(bangumi_name, "最新剧集已经更新,已自动重命名。") + self._notification.send_msg(bangumi_name, f"第{episode}集已经更新,已自动重命名。") except Exception as e: logger.warning(f"{torrent_name} rename failed") logger.warning(f"Season name: {bangumi_name}, Season: {season}, Suffix: {suffix}") @@ -72,7 +72,7 @@ class Renamer: if path_len <= 2: suffix = os.path.splitext(media_path)[-1] torrent_name = self.get_file_name(media_path) - new_name = self._renamer.torrent_parser( + new_name, episode = self._renamer.torrent_parser( torrent_name=torrent_name, bangumi_name=bangumi_name, season=season, diff --git a/src/module/parser/analyser/torrent_parser.py b/src/module/parser/analyser/torrent_parser.py index 0b96b7dd..85334d7a 100644 --- a/src/module/parser/analyser/torrent_parser.py +++ b/src/module/parser/analyser/torrent_parser.py @@ -44,9 +44,10 @@ def rename_normal(info: DownloadInfo): for rule in RULES: match_obj = re.match(rule, info.name, re.I) if match_obj is not None: + episode = match_obj.group(2) title = re.sub(r"([Ss]|Season )\d{1,3}", "", match_obj.group(1)).strip() - new_name = f"{title} S{info.season}E{match_obj.group(2)}{match_obj.group(3)}" - return new_name + new_name = f"{title} S{info.season}E{episode}{match_obj.group(3)}" + return new_name, episode def rename_pn(info: DownloadInfo): @@ -55,24 +56,26 @@ def rename_pn(info: DownloadInfo): if match_obj is not None: title = re.sub(r"([Ss]|Season )\d{1,3}", "", match_obj.group(1)).strip() title = title if title != "" else info.folder_name + episode = match_obj.group(2) new_name = re.sub( r"[\[\]]", "", - f"{title} S{info.season}E{match_obj.group(2)}{info.suffix}", + f"{title} S{info.season}E{episode}{info.suffix}", ) - return new_name + return new_name, episode def rename_advance(info: DownloadInfo): for rule in RULES: match_obj = re.match(rule, info.file_name, re.I) if match_obj is not None: + episode = match_obj.group(2) new_name = re.sub( r"[\[\]]", "", - f"{info.folder_name} S{info.season}E{match_obj.group(2)}{info.suffix}", + f"{info.folder_name} S{info.season}E{episode}{info.suffix}", ) - return new_name + return new_name, episode def rename_no_season_pn(info: DownloadInfo): @@ -80,12 +83,13 @@ def rename_no_season_pn(info: DownloadInfo): match_obj = re.match(rule, info.file_name, re.I) if match_obj is not None: title = match_obj.group(1).strip() + episode = match_obj.group(2) new_name = re.sub( r"[\[\]]", "", - f"{title} E{match_obj.group(2)}{info.suffix}", + f"{title} E{episode}{info.suffix}", ) - return new_name + return new_name, episode def rename_none(info: DownloadInfo):