From 132fde2308486e162438b46a8c418ded964feb7a Mon Sep 17 00:00:00 2001 From: zhanglijun <1074176954@qq.com> Date: Tue, 26 Nov 2024 22:01:00 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=AD=A3=E6=B5=B7?= =?UTF-8?q?=E6=8A=A5=E4=B8=8B=E8=BD=BD=E8=B7=AF=E5=BE=84=E5=92=8C=E7=AC=AC?= =?UTF-8?q?0=E5=AD=A3=E6=B5=B7=E6=8A=A5=E5=91=BD=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/chain/media.py | 5 +++-- app/modules/themoviedb/scraper.py | 6 +++++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/app/chain/media.py b/app/chain/media.py index edafd390..a734baa2 100644 --- a/app/chain/media.py +++ b/app/chain/media.py @@ -547,9 +547,10 @@ class MediaChain(ChainBase, metaclass=Singleton): continue # 下载图片 content = __download_image(image_url) - # 保存图片文件到当前目录 + # 保存图片文件到剧集目录 if content: - __save_file(_fileitem=fileitem, _path=image_path, _content=content) + parent = self.storagechain.get_parent_item(fileitem) + __save_file(_fileitem=parent, _path=image_path, _content=content) # 判断当前目录是不是剧集根目录 if not season_meta.season: # 是否已存在 diff --git a/app/modules/themoviedb/scraper.py b/app/modules/themoviedb/scraper.py index 4c07b1a0..e1cfe046 100644 --- a/app/modules/themoviedb/scraper.py +++ b/app/modules/themoviedb/scraper.py @@ -102,7 +102,11 @@ class TmdbScraper: ext = Path(seasoninfo.get('poster_path')).suffix # URL url = f"https://{settings.TMDB_IMAGE_DOMAIN}/t/p/original{seasoninfo.get('poster_path')}" - image_name = f"season{sea_seq}-poster{ext}" + # S0海报格式不同 + if season == 0: + image_name = f"season-specials-poster{ext}" + else: + image_name = f"season{sea_seq}-poster{ext}" return image_name, url return "", "" From 7f2c6ef167371c18a89897b594e5154947121ec7 Mon Sep 17 00:00:00 2001 From: zhanglijun <1074176954@qq.com> Date: Tue, 26 Nov 2024 22:25:42 +0800 Subject: [PATCH 2/4] =?UTF-8?q?fix:=20=E5=A2=9E=E5=8A=A0=E5=85=A5=E5=8F=82?= =?UTF-8?q?=E5=88=A4=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/chain/media.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/chain/media.py b/app/chain/media.py index a734baa2..1c145c34 100644 --- a/app/chain/media.py +++ b/app/chain/media.py @@ -549,7 +549,8 @@ class MediaChain(ChainBase, metaclass=Singleton): content = __download_image(image_url) # 保存图片文件到剧集目录 if content: - parent = self.storagechain.get_parent_item(fileitem) + if not parent: + parent = self.storagechain.get_parent_item(fileitem) __save_file(_fileitem=parent, _path=image_path, _content=content) # 判断当前目录是不是剧集根目录 if not season_meta.season: From e160a745a7c59306cd318c43bd927b71aa0b3728 Mon Sep 17 00:00:00 2001 From: InfinityPacer <160988576+InfinityPacer@users.noreply.github.com> Date: Wed, 27 Nov 2024 00:49:37 +0800 Subject: [PATCH 3/4] fix(event): correct visualize_handlers --- app/core/event.py | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/app/core/event.py b/app/core/event.py index f61ac6f6..7bd66add 100644 --- a/app/core/event.py +++ b/app/core/event.py @@ -233,23 +233,29 @@ class EventManager(metaclass=Singleton): 可视化所有事件处理器,包括是否被禁用的状态 :return: 处理器列表,包含事件类型、处理器标识符、优先级(如果有)和状态 """ + + def parse_handler_data(data): + """ + 解析处理器数据,判断是否包含优先级 + :param data: 订阅者数据,可能是元组或单一值 + :return: (priority, handler),若没有优先级则返回 (None, handler) + """ + if isinstance(data, tuple) and len(data) == 2: + return data + return None, data + handler_info = [] # 统一处理广播事件和链式事件 for event_type, subscribers in {**self.__broadcast_subscribers, **self.__chain_subscribers}.items(): - for handler_data in subscribers: - if isinstance(subscribers, dict): - priority, handler = handler_data - else: - priority = None - handler = handler_data - # 获取处理器的唯一标识符 - handler_id = self.__get_handler_identifier(handler) + for handler_identifier, handler_data in subscribers.items(): + # 解析优先级和处理器 + priority, handler = parse_handler_data(handler_data) # 检查处理器的启用状态 status = "enabled" if self.__is_handler_enabled(handler) else "disabled" # 构建处理器信息字典 handler_dict = { "event_type": event_type.value, - "handler_identifier": handler_id, + "handler_identifier": handler_identifier, "status": status } if priority is not None: From a98de604a146b4f9a010703faa9d4ff59dde8e49 Mon Sep 17 00:00:00 2001 From: InfinityPacer <160988576+InfinityPacer@users.noreply.github.com> Date: Wed, 27 Nov 2024 00:50:34 +0800 Subject: [PATCH 4/4] refactor(event): rename SmartRename to TransferRename --- app/modules/filemanager/__init__.py | 8 ++++---- app/schemas/event.py | 4 ++-- app/schemas/types.py | 4 ++-- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/app/modules/filemanager/__init__.py b/app/modules/filemanager/__init__.py index 0d4686c2..1709818a 100644 --- a/app/modules/filemanager/__init__.py +++ b/app/modules/filemanager/__init__.py @@ -17,7 +17,7 @@ from app.log import logger from app.modules import _ModuleBase from app.modules.filemanager.storages import StorageBase from app.schemas import TransferInfo, ExistMediaInfo, TmdbEpisode, TransferDirectoryConf, FileItem, StorageUsage -from app.schemas.event import SmartRenameEventData +from app.schemas.event import TransferRenameEventData from app.schemas.types import MediaType, ModuleType, ChainEventType from app.utils.system import SystemUtils @@ -1213,16 +1213,16 @@ class FileManagerModule(_ModuleBase): logger.debug(f"Initial render string: {render_str}") # 发送智能重命名事件 - event_data = SmartRenameEventData( + event_data = TransferRenameEventData( template_string=template_string, rename_dict=rename_dict, render_str=render_str, path=path ) - event = eventmanager.send_event(ChainEventType.SmartRename, event_data) + event = eventmanager.send_event(ChainEventType.TransferRename, event_data) # 检查事件返回的结果 if event and event.event_data: - event_data: SmartRenameEventData = event.event_data + event_data: TransferRenameEventData = event.event_data if event_data.updated and event_data.updated_str: logger.debug(f"Render string updated by event: " f"{render_str} -> {event_data.updated_str} (source: {event_data.source})") diff --git a/app/schemas/event.py b/app/schemas/event.py index 57142e74..58d77005 100644 --- a/app/schemas/event.py +++ b/app/schemas/event.py @@ -117,9 +117,9 @@ class CommandRegisterEventData(ChainEventData): source: str = Field("未知拦截源", description="拦截源") -class SmartRenameEventData(ChainEventData): +class TransferRenameEventData(ChainEventData): """ - SmartRename 事件的数据模型 + TransferRename 事件的数据模型 Attributes: # 输入参数 diff --git a/app/schemas/types.py b/app/schemas/types.py index dfc2e29c..e77c769b 100644 --- a/app/schemas/types.py +++ b/app/schemas/types.py @@ -68,8 +68,8 @@ class ChainEventType(Enum): AuthIntercept = "auth.intercept" # 命令注册 CommandRegister = "command.register" - # 智能重命名 - SmartRename = "SmartRename" + # 整理重命名 + TransferRename = "transfer.rename" # 系统配置Key字典