From 28945ef153c593643da28a790f68d809219f5e80 Mon Sep 17 00:00:00 2001 From: Castell Date: Tue, 3 Mar 2026 01:58:49 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E5=B0=86=20download.py=20=E4=B8=AD?= =?UTF-8?q?=E9=87=8D=E5=A4=8D=E7=9A=84=E5=AA=92=E4=BD=93=E8=AF=86=E5=88=AB?= =?UTF-8?q?=E6=A8=A1=E5=BC=8F=E9=80=89=E6=8B=A9=E9=80=BB=E8=BE=91=E5=B0=81?= =?UTF-8?q?=E8=A3=85=E8=BF=9B=E9=80=89=E6=8B=A9=E5=99=A8=E5=87=BD=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/endpoints/download.py | 21 ++++++--------------- app/chain/media.py | 12 ++++++------ 2 files changed, 12 insertions(+), 21 deletions(-) diff --git a/app/api/endpoints/download.py b/app/api/endpoints/download.py index 88657afe..ca1ed633 100644 --- a/app/api/endpoints/download.py +++ b/app/api/endpoints/download.py @@ -78,21 +78,12 @@ def add( # 元数据 metainfo = MetaInfo(title=torrent_in.title, subtitle=torrent_in.description) # 媒体信息 - mediainfo: MediaInfo = None - plugin_available = eventmanager.check(ChainEventType.NameRecognize) - # 定义识别函数 - native_recognize = lambda: MediaChain().recognize_media(meta=metainfo, tmdbid=tmdbid, doubanid=doubanid) - plugin_recognize = lambda: MediaChain().recognize_help(title=torrent_in.title, org_meta=metainfo) - if settings.RECOGNIZE_PLUGIN_FIRST and plugin_available: - # 插件优先 - mediainfo = plugin_recognize() - if not mediainfo: - mediainfo = native_recognize() - else: - # 原生优先 - mediainfo = native_recognize() - if not mediainfo and plugin_available: - mediainfo = plugin_recognize() + mediainfo = MediaChain().select_recognize_source( + log_name=torrent_in.title, + log_context=torrent_in.title, + native_fn=lambda: MediaChain().recognize_media(meta=metainfo, tmdbid=tmdbid, doubanid=doubanid), + plugin_fn=lambda: MediaChain().recognize_help(title=torrent_in.title, org_meta=metainfo) + ) if not mediainfo: return schemas.Response(success=False, message="无法识别媒体信息") # 种子信息 diff --git a/app/chain/media.py b/app/chain/media.py index 3d2e3995..f1446362 100644 --- a/app/chain/media.py +++ b/app/chain/media.py @@ -85,7 +85,7 @@ class MediaChain(ChainBase): """ return self.run_module("metadata_nfo", meta=meta, mediainfo=mediainfo, season=season, episode=episode) - def _select_recognize_source(self, log_name: str, log_context: str, + def select_recognize_source(self, log_name: str, log_context: str, native_fn, plugin_fn) -> Optional[MediaInfo]: """ 选择识别模式,插件优先或原生优先 @@ -118,7 +118,7 @@ class MediaChain(ChainBase): """ title = metainfo.title # 按 config 中设置的识别顺序识别 - mediainfo = self._select_recognize_source( + mediainfo = self.select_recognize_source( log_name=title, log_context=title, native_fn=lambda: self.recognize_media(meta=metainfo, episode_group=episode_group), @@ -191,7 +191,7 @@ class MediaChain(ChainBase): # 元数据 file_meta = MetaInfoPath(file_path) # 按 config 中设置的识别顺序识别 - mediainfo = self._select_recognize_source( + mediainfo = self.select_recognize_source( log_name=file_path.name, log_context=path, native_fn=lambda: self.recognize_media(meta=file_meta, episode_group=episode_group), @@ -847,7 +847,7 @@ class MediaChain(ChainBase): logger.warn("无法识别元数据,跳过") logger.info(f"{filepath.name} 刮削完成") - async def _async_select_recognize_source(self, log_name: str, log_context: str, + async def async_select_recognize_source(self, log_name: str, log_context: str, native_fn, plugin_fn) -> Optional[MediaInfo]: """ 选择识别模式,插件优先或原生优先(异步版本) @@ -886,7 +886,7 @@ class MediaChain(ChainBase): async def plugin_recognize(): return await self.async_recognize_help(title=title, org_meta=metainfo) # 按 config 中设置的识别顺序识别 - mediainfo = await self._async_select_recognize_source( + mediainfo = await self.async_select_recognize_source( log_name=title, log_context=title, native_fn=native_recognize, @@ -964,7 +964,7 @@ class MediaChain(ChainBase): async def plugin_recognize(): return await self.async_recognize_help(title=path, org_meta=file_meta) # 按 config 中设置的识别顺序识别 - mediainfo = await self._async_select_recognize_source( + mediainfo = await self.async_select_recognize_source( log_name=file_path.name, log_context=path, native_fn=native_recognize,