diff --git a/app/modules/filemanager/transhandler.py b/app/modules/filemanager/transhandler.py index 8bd122eb..36aeae47 100644 --- a/app/modules/filemanager/transhandler.py +++ b/app/modules/filemanager/transhandler.py @@ -129,7 +129,8 @@ class TransHandler: path=target_path, template_string=rename_format, rename_dict=self.get_naming_dict(meta=in_meta, - mediainfo=mediainfo) + mediainfo=mediainfo), + source_path=fileitem.path ) new_path = DirectoryHelper.get_media_root_path( rename_format, rename_path=new_path @@ -218,7 +219,8 @@ class TransHandler: mediainfo=mediainfo, episodes_info=episodes_info, file_ext=f".{fileitem.extension}" - ) + ), + source_path=fileitem.path ) # 针对字幕文件,文件名中补充额外标识信息 @@ -814,12 +816,14 @@ class TransHandler: return True @staticmethod - def get_rename_path(template_string: str, rename_dict: dict, path: Path = None) -> Path: + def get_rename_path(template_string: str, rename_dict: dict, + path: Path = None, source_path: str = None) -> Path: """ 生成重命名后的完整路径,支持智能重命名事件 :param template_string: Jinja2 模板字符串 :param rename_dict: 渲染上下文,用于替换模板中的变量 :param path: 可选的基础路径,如果提供,将在其基础上拼接生成的路径 + :param source_path: 源文件路径,即待整理的文件路径 :return: 生成的完整路径 """ # 创建jinja2模板对象 @@ -833,7 +837,8 @@ class TransHandler: template_string=template_string, rename_dict=rename_dict, render_str=render_str, - path=path + path=path, + source_path=source_path ) event = eventmanager.send_event(ChainEventType.TransferRename, event_data) # 检查事件返回的结果 diff --git a/app/schemas/event.py b/app/schemas/event.py index e0ed7eb8..3d6c7db5 100644 --- a/app/schemas/event.py +++ b/app/schemas/event.py @@ -168,6 +168,7 @@ class TransferRenameEventData(ChainEventData): rename_dict (dict): 渲染上下文 render_str (str): 渲染生成的字符串 path (Optional[Path]): 当前文件的目标路径 + source_path (Optional[str]): 源文件路径,即待整理的文件路径 # 输出参数 updated (bool): 是否已更新,默认值为 False @@ -179,6 +180,7 @@ class TransferRenameEventData(ChainEventData): rename_dict: Dict[str, Any] = Field(..., description="渲染上下文") path: Optional[Path] = Field(None, description="文件的目标路径") render_str: str = Field(..., description="渲染生成的字符串") + source_path: Optional[str] = Field(None, description="源文件路径,即待整理的文件路径") # 输出参数 updated: bool = Field(default=False, description="是否已更新")