fix #984
This commit is contained in:
@ -114,13 +114,15 @@ class ChainBase(metaclass=ABCMeta):
|
|||||||
def recognize_media(self, meta: MetaBase = None,
|
def recognize_media(self, meta: MetaBase = None,
|
||||||
mtype: MediaType = None,
|
mtype: MediaType = None,
|
||||||
tmdbid: int = None,
|
tmdbid: int = None,
|
||||||
doubanid: str = None) -> Optional[MediaInfo]:
|
doubanid: str = None,
|
||||||
|
cache: bool = True) -> Optional[MediaInfo]:
|
||||||
"""
|
"""
|
||||||
识别媒体信息
|
识别媒体信息
|
||||||
:param meta: 识别的元数据
|
:param meta: 识别的元数据
|
||||||
:param mtype: 识别的媒体类型,与tmdbid配套
|
:param mtype: 识别的媒体类型,与tmdbid配套
|
||||||
:param tmdbid: tmdbid
|
:param tmdbid: tmdbid
|
||||||
:param doubanid: 豆瓣ID
|
:param doubanid: 豆瓣ID
|
||||||
|
:param cache: 是否使用缓存
|
||||||
:return: 识别的媒体信息,包括剧集信息
|
:return: 识别的媒体信息,包括剧集信息
|
||||||
"""
|
"""
|
||||||
# 识别用名中含指定信息情形
|
# 识别用名中含指定信息情形
|
||||||
@ -131,7 +133,7 @@ class ChainBase(metaclass=ABCMeta):
|
|||||||
if not doubanid and hasattr(meta, "doubanid"):
|
if not doubanid and hasattr(meta, "doubanid"):
|
||||||
doubanid = meta.doubanid
|
doubanid = meta.doubanid
|
||||||
return self.run_module("recognize_media", meta=meta, mtype=mtype,
|
return self.run_module("recognize_media", meta=meta, mtype=mtype,
|
||||||
tmdbid=tmdbid, doubanid=doubanid)
|
tmdbid=tmdbid, doubanid=doubanid, cache=cache)
|
||||||
|
|
||||||
def match_doubaninfo(self, name: str, imdbid: str = None,
|
def match_doubaninfo(self, name: str, imdbid: str = None,
|
||||||
mtype: MediaType = None, year: str = None, season: int = None) -> Optional[dict]:
|
mtype: MediaType = None, year: str = None, season: int = None) -> Optional[dict]:
|
||||||
|
@ -71,11 +71,11 @@ class SubscribeChain(ChainBase):
|
|||||||
if tmdbinfo:
|
if tmdbinfo:
|
||||||
mediainfo = MediaInfo(tmdb_info=tmdbinfo)
|
mediainfo = MediaInfo(tmdb_info=tmdbinfo)
|
||||||
else:
|
else:
|
||||||
# 识别TMDB信息
|
# 识别TMDB信息,不使用缓存
|
||||||
mediainfo = self.recognize_media(meta=metainfo, mtype=mtype, tmdbid=tmdbid)
|
mediainfo = self.recognize_media(meta=metainfo, mtype=mtype, tmdbid=tmdbid, cache=False)
|
||||||
else:
|
else:
|
||||||
# 豆瓣识别模式
|
# 豆瓣识别模式,不使用缓存
|
||||||
mediainfo = self.recognize_media(meta=metainfo, mtype=mtype, doubanid=doubanid)
|
mediainfo = self.recognize_media(meta=metainfo, mtype=mtype, doubanid=doubanid, cache=False)
|
||||||
if mediainfo:
|
if mediainfo:
|
||||||
# 豆瓣标题处理
|
# 豆瓣标题处理
|
||||||
meta = MetaInfo(mediainfo.title)
|
meta = MetaInfo(mediainfo.title)
|
||||||
@ -96,7 +96,8 @@ class SubscribeChain(ChainBase):
|
|||||||
# 补充媒体信息
|
# 补充媒体信息
|
||||||
mediainfo = self.recognize_media(mtype=mediainfo.type,
|
mediainfo = self.recognize_media(mtype=mediainfo.type,
|
||||||
tmdbid=mediainfo.tmdb_id,
|
tmdbid=mediainfo.tmdb_id,
|
||||||
doubanid=mediainfo.douban_id)
|
doubanid=mediainfo.douban_id,
|
||||||
|
cache=False)
|
||||||
if not mediainfo:
|
if not mediainfo:
|
||||||
logger.error(f"媒体信息识别失败!")
|
logger.error(f"媒体信息识别失败!")
|
||||||
return None, "媒体信息识别失败"
|
return None, "媒体信息识别失败"
|
||||||
@ -197,7 +198,8 @@ class SubscribeChain(ChainBase):
|
|||||||
# 识别媒体信息
|
# 识别媒体信息
|
||||||
mediainfo: MediaInfo = self.recognize_media(meta=meta, mtype=meta.type,
|
mediainfo: MediaInfo = self.recognize_media(meta=meta, mtype=meta.type,
|
||||||
tmdbid=subscribe.tmdbid,
|
tmdbid=subscribe.tmdbid,
|
||||||
doubanid=subscribe.doubanid)
|
doubanid=subscribe.doubanid,
|
||||||
|
cache=False)
|
||||||
if not mediainfo:
|
if not mediainfo:
|
||||||
logger.warn(
|
logger.warn(
|
||||||
f'未识别到媒体信息,标题:{subscribe.name},tmdbid:{subscribe.tmdbid},doubanid:{subscribe.doubanid}')
|
f'未识别到媒体信息,标题:{subscribe.name},tmdbid:{subscribe.tmdbid},doubanid:{subscribe.doubanid}')
|
||||||
@ -523,7 +525,8 @@ class SubscribeChain(ChainBase):
|
|||||||
# 识别媒体信息
|
# 识别媒体信息
|
||||||
mediainfo: MediaInfo = self.recognize_media(meta=meta, mtype=meta.type,
|
mediainfo: MediaInfo = self.recognize_media(meta=meta, mtype=meta.type,
|
||||||
tmdbid=subscribe.tmdbid,
|
tmdbid=subscribe.tmdbid,
|
||||||
doubanid=subscribe.doubanid)
|
doubanid=subscribe.doubanid,
|
||||||
|
cache=False)
|
||||||
if not mediainfo:
|
if not mediainfo:
|
||||||
logger.warn(
|
logger.warn(
|
||||||
f'未识别到媒体信息,标题:{subscribe.name},tmdbid:{subscribe.tmdbid},doubanid:{subscribe.doubanid}')
|
f'未识别到媒体信息,标题:{subscribe.name},tmdbid:{subscribe.tmdbid},doubanid:{subscribe.doubanid}')
|
||||||
@ -709,7 +712,9 @@ class SubscribeChain(ChainBase):
|
|||||||
meta.type = MediaType(subscribe.type)
|
meta.type = MediaType(subscribe.type)
|
||||||
# 识别媒体信息
|
# 识别媒体信息
|
||||||
mediainfo: MediaInfo = self.recognize_media(meta=meta, mtype=meta.type,
|
mediainfo: MediaInfo = self.recognize_media(meta=meta, mtype=meta.type,
|
||||||
tmdbid=subscribe.tmdbid, doubanid=subscribe.doubanid)
|
tmdbid=subscribe.tmdbid,
|
||||||
|
doubanid=subscribe.doubanid,
|
||||||
|
cache=False)
|
||||||
if not mediainfo:
|
if not mediainfo:
|
||||||
logger.warn(
|
logger.warn(
|
||||||
f'未识别到媒体信息,标题:{subscribe.name},tmdbid:{subscribe.tmdbid},doubanid:{subscribe.doubanid}')
|
f'未识别到媒体信息,标题:{subscribe.name},tmdbid:{subscribe.tmdbid},doubanid:{subscribe.doubanid}')
|
||||||
|
@ -35,12 +35,14 @@ class DoubanModule(_ModuleBase):
|
|||||||
def recognize_media(self, meta: MetaBase = None,
|
def recognize_media(self, meta: MetaBase = None,
|
||||||
mtype: MediaType = None,
|
mtype: MediaType = None,
|
||||||
doubanid: str = None,
|
doubanid: str = None,
|
||||||
|
cache: bool = True,
|
||||||
**kwargs) -> Optional[MediaInfo]:
|
**kwargs) -> Optional[MediaInfo]:
|
||||||
"""
|
"""
|
||||||
识别媒体信息
|
识别媒体信息
|
||||||
:param meta: 识别的元数据
|
:param meta: 识别的元数据
|
||||||
:param mtype: 识别的媒体类型,与doubanid配套
|
:param mtype: 识别的媒体类型,与doubanid配套
|
||||||
:param doubanid: 豆瓣ID
|
:param doubanid: 豆瓣ID
|
||||||
|
:param cache: 是否使用缓存
|
||||||
:return: 识别的媒体信息,包括剧集信息
|
:return: 识别的媒体信息,包括剧集信息
|
||||||
"""
|
"""
|
||||||
if settings.RECOGNIZE_SOURCE != "douban":
|
if settings.RECOGNIZE_SOURCE != "douban":
|
||||||
@ -48,11 +50,17 @@ class DoubanModule(_ModuleBase):
|
|||||||
|
|
||||||
if not meta:
|
if not meta:
|
||||||
cache_info = {}
|
cache_info = {}
|
||||||
|
elif not meta.name:
|
||||||
|
logger.error("识别媒体信息时未提供元数据名称")
|
||||||
|
return None
|
||||||
else:
|
else:
|
||||||
if mtype:
|
if mtype:
|
||||||
meta.type = mtype
|
meta.type = mtype
|
||||||
|
if doubanid:
|
||||||
|
meta.doubanid = doubanid
|
||||||
|
# 读取缓存
|
||||||
cache_info = self.cache.get(meta)
|
cache_info = self.cache.get(meta)
|
||||||
if not cache_info:
|
if not cache_info or not cache:
|
||||||
# 缓存没有或者强制不使用缓存
|
# 缓存没有或者强制不使用缓存
|
||||||
if doubanid:
|
if doubanid:
|
||||||
# 直接查询详情
|
# 直接查询详情
|
||||||
@ -80,7 +88,7 @@ class DoubanModule(_ModuleBase):
|
|||||||
logger.error("识别媒体信息时未提供元数据或豆瓣ID")
|
logger.error("识别媒体信息时未提供元数据或豆瓣ID")
|
||||||
return None
|
return None
|
||||||
# 保存到缓存
|
# 保存到缓存
|
||||||
if meta:
|
if meta and cache:
|
||||||
self.cache.update(meta, info)
|
self.cache.update(meta, info)
|
||||||
else:
|
else:
|
||||||
# 使用缓存信息
|
# 使用缓存信息
|
||||||
|
@ -51,7 +51,8 @@ class DoubanCache(metaclass=Singleton):
|
|||||||
"""
|
"""
|
||||||
获取缓存KEY
|
获取缓存KEY
|
||||||
"""
|
"""
|
||||||
return f"[{meta.type.value if meta.type else '未知'}]{meta.name}-{meta.year}-{meta.begin_season}"
|
return f"[{meta.type.value if meta.type else '未知'}]" \
|
||||||
|
f"{meta.name or meta.doubanid}-{meta.year}-{meta.begin_season}"
|
||||||
|
|
||||||
def get(self, meta: MetaBase):
|
def get(self, meta: MetaBase):
|
||||||
"""
|
"""
|
||||||
|
@ -44,12 +44,14 @@ class TheMovieDbModule(_ModuleBase):
|
|||||||
def recognize_media(self, meta: MetaBase = None,
|
def recognize_media(self, meta: MetaBase = None,
|
||||||
mtype: MediaType = None,
|
mtype: MediaType = None,
|
||||||
tmdbid: int = None,
|
tmdbid: int = None,
|
||||||
|
cache: bool = True,
|
||||||
**kwargs) -> Optional[MediaInfo]:
|
**kwargs) -> Optional[MediaInfo]:
|
||||||
"""
|
"""
|
||||||
识别媒体信息
|
识别媒体信息
|
||||||
:param meta: 识别的元数据
|
:param meta: 识别的元数据
|
||||||
:param mtype: 识别的媒体类型,与tmdbid配套
|
:param mtype: 识别的媒体类型,与tmdbid配套
|
||||||
:param tmdbid: tmdbid
|
:param tmdbid: tmdbid
|
||||||
|
:param cache: 是否使用缓存
|
||||||
:return: 识别的媒体信息,包括剧集信息
|
:return: 识别的媒体信息,包括剧集信息
|
||||||
"""
|
"""
|
||||||
if settings.RECOGNIZE_SOURCE != "themoviedb":
|
if settings.RECOGNIZE_SOURCE != "themoviedb":
|
||||||
@ -57,11 +59,17 @@ class TheMovieDbModule(_ModuleBase):
|
|||||||
|
|
||||||
if not meta:
|
if not meta:
|
||||||
cache_info = {}
|
cache_info = {}
|
||||||
|
elif not meta.name:
|
||||||
|
logger.warn("识别媒体信息时未提供元数据名称")
|
||||||
|
return None
|
||||||
else:
|
else:
|
||||||
if mtype:
|
if mtype:
|
||||||
meta.type = mtype
|
meta.type = mtype
|
||||||
|
if tmdbid:
|
||||||
|
meta.tmdbid = tmdbid
|
||||||
|
# 读取缓存
|
||||||
cache_info = self.cache.get(meta)
|
cache_info = self.cache.get(meta)
|
||||||
if not cache_info:
|
if not cache_info or not cache:
|
||||||
# 缓存没有或者强制不使用缓存
|
# 缓存没有或者强制不使用缓存
|
||||||
if tmdbid:
|
if tmdbid:
|
||||||
# 直接查询详情
|
# 直接查询详情
|
||||||
@ -111,7 +119,7 @@ class TheMovieDbModule(_ModuleBase):
|
|||||||
logger.error("识别媒体信息时未提供元数据或tmdbid")
|
logger.error("识别媒体信息时未提供元数据或tmdbid")
|
||||||
return None
|
return None
|
||||||
# 保存到缓存
|
# 保存到缓存
|
||||||
if meta:
|
if meta and cache:
|
||||||
self.cache.update(meta, info)
|
self.cache.update(meta, info)
|
||||||
else:
|
else:
|
||||||
# 使用缓存信息
|
# 使用缓存信息
|
||||||
|
@ -50,7 +50,7 @@ class TmdbCache(metaclass=Singleton):
|
|||||||
"""
|
"""
|
||||||
获取缓存KEY
|
获取缓存KEY
|
||||||
"""
|
"""
|
||||||
return f"[{meta.type.value if meta.type else '未知'}]{meta.name}-{meta.year}-{meta.begin_season}"
|
return f"[{meta.type.value if meta.type else '未知'}]{meta.name or meta.tmdbid}-{meta.year}-{meta.begin_season}"
|
||||||
|
|
||||||
def get(self, meta: MetaBase):
|
def get(self, meta: MetaBase):
|
||||||
"""
|
"""
|
||||||
|
Reference in New Issue
Block a user