refactor: 简化媒体识别模式选择逻辑中的 if/else 结构

This commit is contained in:
Castell
2026-03-03 00:21:55 +08:00
parent 894756000c
commit 002ebeaade
2 changed files with 86 additions and 87 deletions
+12 -13
View File
@@ -79,21 +79,20 @@ def add(
metainfo = MetaInfo(title=torrent_in.title, subtitle=torrent_in.description) metainfo = MetaInfo(title=torrent_in.title, subtitle=torrent_in.description)
# 媒体信息 # 媒体信息
mediainfo: MediaInfo = None mediainfo: MediaInfo = None
if settings.RECOGNIZE_PLUGIN_FIRST and eventmanager.check(ChainEventType.NameRecognize): plugin_available = eventmanager.check(ChainEventType.NameRecognize)
# 插件优先模式:优先使用辅助识别 # 定义识别函数
mediainfo = MediaChain().recognize_help(title=torrent_in.title, org_meta=metainfo) 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: if not mediainfo:
# 尝试使用原生识别 mediainfo = native_recognize()
mediainfo = MediaChain().recognize_media(meta=metainfo, tmdbid=tmdbid, doubanid=doubanid)
if not mediainfo:
return schemas.Response(success=False, message="无法识别媒体信息")
else: else:
# 标准模式:优先使用原生识别 # 原生优先
mediainfo = MediaChain().recognize_media(meta=metainfo, tmdbid=tmdbid, doubanid=doubanid) mediainfo = native_recognize()
if not mediainfo: if not mediainfo and plugin_available:
# 尝试使用辅助识别,如果有注册响应事件的话 mediainfo = plugin_recognize()
if eventmanager.check(ChainEventType.NameRecognize):
mediainfo = MediaChain().recognize_help(title=torrent_in.title, org_meta=metainfo)
if not mediainfo: if not mediainfo:
return schemas.Response(success=False, message="无法识别媒体信息") return schemas.Response(success=False, message="无法识别媒体信息")
# 种子信息 # 种子信息
+60 -60
View File
@@ -91,25 +91,24 @@ class MediaChain(ChainBase):
""" """
title = metainfo.title title = metainfo.title
mediainfo: MediaInfo = None mediainfo: MediaInfo = None
if settings.RECOGNIZE_PLUGIN_FIRST and eventmanager.check(ChainEventType.NameRecognize): plugin_available = eventmanager.check(ChainEventType.NameRecognize)
# 插件优先模式:优先使用辅助识别 # 定义识别函数
native_recognize = lambda: self.recognize_media(meta=metainfo, episode_group=episode_group)
plugin_recognize = lambda: self.recognize_help(title=title, org_meta=metainfo)
if settings.RECOGNIZE_PLUGIN_FIRST and plugin_available:
# 插件优先
logger.info(f"插件优先模式已开启。请求辅助识别,标题:{title} ...") logger.info(f"插件优先模式已开启。请求辅助识别,标题:{title} ...")
mediainfo = self.recognize_help(title=title, org_meta=metainfo) mediainfo = plugin_recognize()
if not mediainfo: if not mediainfo:
# 尝试使用原生识别
logger.info(f'辅助识别未识别到 {title} 的媒体信息,尝试使用原生识别') logger.info(f'辅助识别未识别到 {title} 的媒体信息,尝试使用原生识别')
mediainfo = self.recognize_media(meta=metainfo, episode_group=episode_group) mediainfo = native_recognize()
if not mediainfo:
logger.warn(f'{title} 未识别到媒体信息')
return None
else: else:
# 标准模式:优先使用原生识别 # 原生优先
mediainfo = self.recognize_media(meta=metainfo, episode_group=episode_group) logger.info(f"插件优先模式未开启。尝试原生识别,标题:{title} ...")
if not mediainfo: mediainfo = native_recognize()
# 尝试使用辅助识别,如果有注册响应事件的话 if not mediainfo and plugin_available:
if eventmanager.check(ChainEventType.NameRecognize): logger.info(f'原生识别未识别到 {title} 的媒体信息,尝试使用辅助识别')
logger.info(f'请求辅助识别,标题:{title} ...') mediainfo = plugin_recognize()
mediainfo = self.recognize_help(title=title, org_meta=metainfo)
if not mediainfo: if not mediainfo:
logger.warn(f'{title} 未识别到媒体信息') logger.warn(f'{title} 未识别到媒体信息')
return None return None
@@ -177,25 +176,24 @@ class MediaChain(ChainBase):
# 元数据 # 元数据
file_meta = MetaInfoPath(file_path) file_meta = MetaInfoPath(file_path)
mediainfo: MediaInfo = None mediainfo: MediaInfo = None
if settings.RECOGNIZE_PLUGIN_FIRST and eventmanager.check(ChainEventType.NameRecognize): plugin_available = eventmanager.check(ChainEventType.NameRecognize)
# 插件优先模式:优先使用辅助识别 # 定义识别函数
native_recognize = lambda: self.recognize_media(meta=file_meta, episode_group=episode_group)
plugin_recognize = lambda: self.recognize_help(title=path, org_meta=file_meta)
if settings.RECOGNIZE_PLUGIN_FIRST and plugin_available:
# 插件优先
logger.info(f"插件优先模式已开启。请求辅助识别,标题:{file_path.name} ...") logger.info(f"插件优先模式已开启。请求辅助识别,标题:{file_path.name} ...")
mediainfo = self.recognize_help(title=path, org_meta=file_meta) mediainfo = plugin_recognize()
if not mediainfo: if not mediainfo:
# 尝试使用原生识别
logger.info(f'辅助识别未识别到 {path} 的媒体信息,尝试使用原生识别') logger.info(f'辅助识别未识别到 {path} 的媒体信息,尝试使用原生识别')
mediainfo = self.recognize_media(meta=file_meta, episode_group=episode_group) mediainfo = native_recognize()
if not mediainfo:
logger.warn(f'{path} 未识别到媒体信息')
return Context(meta_info=file_meta)
else: else:
# 标准模式:优先使用原生识别 # 原生优先
mediainfo = self.recognize_media(meta=file_meta, episode_group=episode_group) logger.info(f"插件优先模式未开启。尝试原生识别,标题:{file_path.name} ...")
if not mediainfo: mediainfo = native_recognize()
# 尝试使用辅助识别,如果有注册响应事件的话 if not mediainfo and plugin_available:
if eventmanager.check(ChainEventType.NameRecognize): logger.info(f'原生识别未识别到 {path} 的媒体信息,尝试使用辅助识别')
logger.info(f'请求辅助识别,标题:{file_path.name} ...') mediainfo = plugin_recognize()
mediainfo = self.recognize_help(title=path, org_meta=file_meta)
if not mediainfo: if not mediainfo:
logger.warn(f'{path} 未识别到媒体信息') logger.warn(f'{path} 未识别到媒体信息')
return Context(meta_info=file_meta) return Context(meta_info=file_meta)
@@ -853,25 +851,26 @@ class MediaChain(ChainBase):
""" """
title = metainfo.title title = metainfo.title
mediainfo: MediaInfo = None mediainfo: MediaInfo = None
if settings.RECOGNIZE_PLUGIN_FIRST and eventmanager.check(ChainEventType.NameRecognize): plugin_available = eventmanager.check(ChainEventType.NameRecognize)
# 插件优先模式:优先使用辅助识别 # 定义识别函数
async def native_recognize():
return await self.async_recognize_media(meta=metainfo, episode_group=episode_group)
async def plugin_recognize():
return await self.async_recognize_help(title=title, org_meta=metainfo)
if settings.RECOGNIZE_PLUGIN_FIRST and plugin_available:
# 插件优先
logger.info(f"插件优先模式已开启。请求辅助识别,标题:{title} ...") logger.info(f"插件优先模式已开启。请求辅助识别,标题:{title} ...")
mediainfo = await self.async_recognize_help(title=title, org_meta=metainfo) mediainfo = plugin_recognize()
if not mediainfo: if not mediainfo:
# 尝试使用原生识别
logger.info(f'辅助识别未识别到 {title} 的媒体信息,尝试使用原生识别') logger.info(f'辅助识别未识别到 {title} 的媒体信息,尝试使用原生识别')
mediainfo = await self.async_recognize_media(meta=metainfo, episode_group=episode_group) mediainfo = native_recognize()
if not mediainfo:
logger.warn(f'{title} 未识别到媒体信息')
return None
else: else:
# 标准模式:优先使用原生识别 # 原生优先
mediainfo = await self.async_recognize_media(meta=metainfo, episode_group=episode_group) logger.info(f"插件优先模式未开启。尝试原生识别,标题:{title} ...")
if not mediainfo: mediainfo = native_recognize()
# 尝试使用辅助识别,如果有注册响应事件的话 if not mediainfo and plugin_available:
if eventmanager.check(ChainEventType.NameRecognize): logger.info(f'原生识别未识别到 {title} 的媒体信息,尝试使用辅助识别')
logger.info(f'请求辅助识别,标题:{title} ...') mediainfo = plugin_recognize()
mediainfo = await self.async_recognize_help(title=title, org_meta=metainfo)
if not mediainfo: if not mediainfo:
logger.warn(f'{title} 未识别到媒体信息') logger.warn(f'{title} 未识别到媒体信息')
return None return None
@@ -939,25 +938,26 @@ class MediaChain(ChainBase):
# 元数据 # 元数据
file_meta = MetaInfoPath(file_path) file_meta = MetaInfoPath(file_path)
mediainfo: MediaInfo = None mediainfo: MediaInfo = None
if settings.RECOGNIZE_PLUGIN_FIRST and eventmanager.check(ChainEventType.NameRecognize): plugin_available = eventmanager.check(ChainEventType.NameRecognize)
# 插件优先模式:优先使用辅助识别 # 定义识别函数
async def native_recognize():
return await self.async_recognize_media(meta=file_meta, episode_group=episode_group)
async def plugin_recognize():
return await self.async_recognize_help(title=path, org_meta=file_meta)
if settings.RECOGNIZE_PLUGIN_FIRST and plugin_available:
# 插件优先
logger.info(f"插件优先模式已开启。请求辅助识别,标题:{file_path.name} ...") logger.info(f"插件优先模式已开启。请求辅助识别,标题:{file_path.name} ...")
mediainfo = await self.async_recognize_help(title=path, org_meta=file_meta) mediainfo = plugin_recognize()
if not mediainfo: if not mediainfo:
# 尝试使用原生识别
logger.info(f'辅助识别未识别到 {path} 的媒体信息,尝试使用原生识别') logger.info(f'辅助识别未识别到 {path} 的媒体信息,尝试使用原生识别')
mediainfo = await self.async_recognize_media(meta=file_meta, episode_group=episode_group) mediainfo = native_recognize()
if not mediainfo:
logger.warn(f'{path} 未识别到媒体信息')
return Context(meta_info=file_meta)
else: else:
# 标准模式:优先使用原生识别 # 原生优先
mediainfo = await self.async_recognize_media(meta=file_meta, episode_group=episode_group) logger.info(f"插件优先模式未开启。尝试原生识别,标题:{file_path.name} ...")
if not mediainfo: mediainfo = native_recognize()
# 尝试使用辅助识别,如果有注册响应事件的话 if not mediainfo and plugin_available:
if eventmanager.check(ChainEventType.NameRecognize): logger.info(f'原生识别未识别到 {path} 的媒体信息,尝试使用辅助识别')
logger.info(f'请求辅助识别,标题:{file_path.name} ...') mediainfo = plugin_recognize()
mediainfo = await self.async_recognize_help(title=path, org_meta=file_meta)
if not mediainfo: if not mediainfo:
logger.warn(f'{path} 未识别到媒体信息') logger.warn(f'{path} 未识别到媒体信息')
return Context(meta_info=file_meta) return Context(meta_info=file_meta)