This commit is contained in:
jxxghp
2023-06-11 09:01:25 +08:00
parent cf301f11ad
commit 4061fd21c8
8 changed files with 49 additions and 16 deletions

View File

@ -330,7 +330,7 @@ class DownloadChain(ChainBase):
:return: 当前媒体是否缺失,各标题总的季集和缺失的季集
"""
def __append_no_exists(_season: int, _episodes: list, _start: int, _total: int):
def __append_no_exists(_season: int, _episodes: list, _total: int, _start: int):
"""
添加不存在的季集信息
"""
@ -367,6 +367,7 @@ class DownloadChain(ChainBase):
mtype=mediainfo.type,
tmdbid=mediainfo.tmdb_id)
if not mediainfo:
logger.error(f"媒体信息识别失败!")
return False, {}
if not mediainfo.seasons:
logger.error(f"媒体信息中没有季集信息:{mediainfo.get_title_string()}")
@ -377,7 +378,7 @@ class DownloadChain(ChainBase):
# 所有剧集均缺失
for season, episodes in mediainfo.seasons.items():
# 全季不存在
__append_no_exists(season, [], len(episodes), min(episodes))
__append_no_exists(_season=season, _episodes=[], _total=len(episodes), _start=min(episodes))
return False, no_exists
else:
# 存在一些,检查缺失的季集
@ -390,10 +391,12 @@ class DownloadChain(ChainBase):
# 全部集存在
continue
# 添加不存在的季集信息
__append_no_exists(season, episodes, len(episodes), min(episodes))
__append_no_exists(_season=season, _episodes=episodes,
_total=len(episodes), _start=min(episodes))
else:
# 全季不存在
__append_no_exists(season, [], len(episodes), min(episodes))
__append_no_exists(_season=season, _episodes=[],
_total=len(episodes), _start=min(episodes))
# 存在不完整的剧集
if no_exists:
logger.info(f"媒体库中已存在部分剧集,缺失:{no_exists}")

View File

@ -39,6 +39,14 @@ class SearchChain(ChainBase):
if not indexer_sites:
logger.warn('未开启任何有效站点,无法搜索资源')
return []
# 补充媒体信息
if not mediainfo.names:
mediainfo: MediaInfo = self.recognize_media(meta=MetaInfo(title=mediainfo.get_title_string()),
mtype=mediainfo.type,
tmdbid=mediainfo.tmdb_id)
if not mediainfo:
logger.error(f'媒体信息识别失败!')
return []
# 缺失的媒体信息
if no_exists:
# 过滤剧集

View File

@ -57,6 +57,27 @@ class SubscribeChain(ChainBase):
return False
# 更新媒体图片
self.obtain_image(mediainfo=mediainfo)
# 总集数
if mediainfo.type == MediaType.TV:
if not kwargs.get('total_episode'):
if not mediainfo.seasons:
# 补充媒体信息
mediainfo: MediaInfo = self.recognize_media(meta=MetaInfo(title=mediainfo.get_title_string()),
mtype=mediainfo.type,
tmdbid=mediainfo.tmdb_id)
if not mediainfo:
logger.error(f"媒体信息识别失败!")
return False
if not mediainfo.seasons:
logger.error(f"媒体信息中没有季集信息,标题:{title}tmdbid{tmdbid}")
return False
total_episode = len(mediainfo.seasons.get(kwargs.get('season') or 1) or [])
if not total_episode:
logger.error(f'未获取到总集数,标题:{title}tmdbid{tmdbid}')
return False
kwargs.update({
'total_episode': total_episode
})
# 添加订阅
state, err_msg = self.subscribes.add(mediainfo, season=season, **kwargs)
if not state:

View File

@ -287,6 +287,7 @@ class UserMessageChain(ChainBase):
if not medias:
self.post_message(title=f"{meta.get_name()} 没有找到对应的媒体信息!", userid=userid)
return
logger.info(f"搜索到 {len(medias)} 条相关媒体信息")
self._user_cache[userid] = {
'type': action,
'items': medias