From bc5e68230844e4ad703d1dc68bc8b3932963f277 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=99=AF=E5=A4=A7=E4=BE=A0?= Date: Sat, 5 Jul 2025 19:31:16 +0800 Subject: [PATCH] =?UTF-8?q?fix=20=E6=9C=AC=E5=9C=B0=E5=AA=92=E4=BD=93?= =?UTF-8?q?=E6=A3=80=E6=9F=A5=E6=BD=9C=E5=9C=A8=E7=9A=84=E9=A2=9D=E5=A4=96?= =?UTF-8?q?=E6=89=AB=E7=9B=98=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/chain/subscribe.py | 9 +++++---- app/modules/filemanager/__init__.py | 16 +++++++++++++++- 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/app/chain/subscribe.py b/app/chain/subscribe.py index b0a14034..452ed8fa 100644 --- a/app/chain/subscribe.py +++ b/app/chain/subscribe.py @@ -434,14 +434,15 @@ class SubscribeChain(ChainBase): else: self.messagehelper.put('没有找到订阅!', title="订阅搜索", role="system") - logger.debug(f"search Lock released at {datetime.now()}") finally: subscribes.clear() del subscribes - # 如果不是大内存模式,进行垃圾回收 - if not settings.BIG_MEMORY_MODE: - gc.collect() + logger.debug(f"search Lock released at {datetime.now()}") + + # 如果不是大内存模式,进行垃圾回收 + if not settings.BIG_MEMORY_MODE: + gc.collect() def update_subscribe_priority(self, subscribe: Subscribe, meta: MetaBase, mediainfo: MediaInfo, downloads: Optional[List[Context]]): diff --git a/app/modules/filemanager/__init__.py b/app/modules/filemanager/__init__.py index 3ed87abe..5e65cd88 100644 --- a/app/modules/filemanager/__init__.py +++ b/app/modules/filemanager/__init__.py @@ -512,17 +512,31 @@ class FileManagerModule(_ModuleBase): # 重命名格式 rename_format = settings.TV_RENAME_FORMAT \ if mediainfo.type == MediaType.TV else settings.MOVIE_RENAME_FORMAT + # 元数据补上常用属性,尽可能确保重命名后的路径不出现空白 + meta = MetaInfo(mediainfo.title) + if meta.type == MediaType.UNKNOWN and mediainfo.type is not None: + meta.type = mediainfo.type + if meta.year is None: + meta.year = mediainfo.year + if meta.begin_season is None: + meta.begin_season = 1 + if meta.begin_episode is None: + meta.begin_episode = 1 # 获取路径(重命名路径) target_path = handler.get_rename_path( path=dir_path, template_string=rename_format, - rename_dict=handler.get_naming_dict(meta=MetaInfo(mediainfo.title), + rename_dict=handler.get_naming_dict(meta=meta, mediainfo=mediainfo) ) # 计算重命名中的文件夹层数 rename_format_level = len(rename_format.split("/")) - 1 # 取相对路径的第1层目录 media_path = target_path.parents[rename_format_level - 1] + if dir_path.is_relative_to(media_path): + # 兜底检查,避免不必要的扫盘 + logger.warn(f"{media_path} 是媒体库目录 {dir_path} 的父目录,忽略获取媒体文件列表,请检查重命名格式!") + continue # 检索媒体文件 fileitem = storage_oper.get_item(media_path) if not fileitem: