fix bugs
This commit is contained in:
@ -11,7 +11,7 @@ from app.core.context import MediaInfo, TorrentInfo
|
||||
from app.core.meta import MetaBase
|
||||
from app.log import logger
|
||||
from app.utils.singleton import AbstractSingleton, Singleton
|
||||
from app.utils.types import TorrentStatus
|
||||
from app.utils.types import TorrentStatus, MediaType
|
||||
|
||||
|
||||
class ChainBase(AbstractSingleton, metaclass=Singleton):
|
||||
@ -69,7 +69,8 @@ class ChainBase(AbstractSingleton, metaclass=Singleton):
|
||||
return self.run_module("prepare_recognize", title=title, subtitle=subtitle)
|
||||
|
||||
def recognize_media(self, meta: MetaBase,
|
||||
tmdbid: str = None) -> Optional[MediaInfo]:
|
||||
mtype: MediaType = None,
|
||||
tmdbid: int = None) -> Optional[MediaInfo]:
|
||||
return self.run_module("recognize_media", meta=meta, tmdbid=tmdbid)
|
||||
|
||||
def douban_info(self, doubanid: str) -> Optional[dict]:
|
||||
|
@ -133,7 +133,7 @@ class DownloadChain(ChainBase):
|
||||
userid=userid)
|
||||
return _hash
|
||||
|
||||
def __update_seasons(tmdbid: str, need: list, current: list) -> list:
|
||||
def __update_seasons(tmdbid: int, need: list, current: list) -> list:
|
||||
"""
|
||||
更新need_tvs季数,返回剩余季数
|
||||
"""
|
||||
@ -146,7 +146,7 @@ class DownloadChain(ChainBase):
|
||||
need_tvs.pop(tmdbid)
|
||||
return need
|
||||
|
||||
def __update_episodes(tmdbid: str, seq: int, need: list, current: set) -> list:
|
||||
def __update_episodes(tmdbid: int, seq: int, need: list, current: set) -> list:
|
||||
"""
|
||||
更新need_tvs集数,返回剩余集数
|
||||
"""
|
||||
@ -159,7 +159,7 @@ class DownloadChain(ChainBase):
|
||||
need_tvs.pop(tmdbid)
|
||||
return need
|
||||
|
||||
def __get_season_episodes(tmdbid: str, season: int) -> int:
|
||||
def __get_season_episodes(tmdbid: int, season: int) -> int:
|
||||
"""
|
||||
获取需要的季的集数
|
||||
"""
|
||||
@ -181,7 +181,7 @@ class DownloadChain(ChainBase):
|
||||
# 电视剧整季匹配
|
||||
if need_tvs:
|
||||
# 先把整季缺失的拿出来,看是否刚好有所有季都满足的种子
|
||||
need_seasons: Dict[str, list] = {}
|
||||
need_seasons: Dict[int, list] = {}
|
||||
for need_tmdbid, need_tv in need_tvs.items():
|
||||
for tv in need_tv:
|
||||
if not tv:
|
||||
@ -364,6 +364,7 @@ class DownloadChain(ChainBase):
|
||||
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:
|
||||
return False, {}
|
||||
@ -388,8 +389,11 @@ class DownloadChain(ChainBase):
|
||||
if not episodes:
|
||||
# 全部集存在
|
||||
continue
|
||||
# 添加不存在的季集信息
|
||||
__append_no_exists(season, episodes, len(episodes), min(episodes))
|
||||
# 添加不存在的季集信息
|
||||
__append_no_exists(season, episodes, len(episodes), min(episodes))
|
||||
else:
|
||||
# 全季不存在
|
||||
__append_no_exists(season, [], len(episodes), min(episodes))
|
||||
# 存在不完整的剧集
|
||||
if no_exists:
|
||||
logger.info(f"媒体库中已存在部分剧集,缺失:{no_exists}")
|
||||
|
@ -30,7 +30,7 @@ class SubscribeChain(ChainBase):
|
||||
|
||||
def process(self, title: str,
|
||||
mtype: MediaType = None,
|
||||
tmdbid: str = None,
|
||||
tmdbid: int = None,
|
||||
season: int = None,
|
||||
userid: str = None,
|
||||
username: str = None,
|
||||
@ -51,7 +51,7 @@ class SubscribeChain(ChainBase):
|
||||
metainfo.type = MediaType.TV
|
||||
metainfo.begin_season = season
|
||||
# 识别媒体信息
|
||||
mediainfo: MediaInfo = self.recognize_media(meta=metainfo, tmdbid=tmdbid)
|
||||
mediainfo: MediaInfo = self.recognize_media(meta=metainfo, mtype=mtype, tmdbid=tmdbid)
|
||||
if not mediainfo:
|
||||
logger.warn(f'未识别到媒体信息,标题:{title},tmdbid:{tmdbid}')
|
||||
return False
|
||||
@ -99,7 +99,7 @@ class SubscribeChain(ChainBase):
|
||||
meta.begin_season = subscribe.season
|
||||
meta.type = MediaType.MOVIE if subscribe.type == MediaType.MOVIE.value else MediaType.TV
|
||||
# 识别媒体信息
|
||||
mediainfo: MediaInfo = self.recognize_media(meta=meta, tmdbid=subscribe.tmdbid)
|
||||
mediainfo: MediaInfo = self.recognize_media(meta=meta, mtype=meta.type, tmdbid=subscribe.tmdbid)
|
||||
if not mediainfo:
|
||||
logger.warn(f'未识别到媒体信息,标题:{subscribe.name},tmdbid:{subscribe.tmdbid}')
|
||||
continue
|
||||
@ -183,7 +183,7 @@ class SubscribeChain(ChainBase):
|
||||
meta.begin_season = subscribe.season
|
||||
meta.type = MediaType.MOVIE if subscribe.type == MediaType.MOVIE.value else MediaType.TV
|
||||
# 识别媒体信息
|
||||
mediainfo: MediaInfo = self.recognize_media(meta=meta, tmdbid=subscribe.tmdbid)
|
||||
mediainfo: MediaInfo = self.recognize_media(meta=meta, mtype=meta.type, tmdbid=subscribe.tmdbid)
|
||||
if not mediainfo:
|
||||
logger.warn(f'未识别到媒体信息,标题:{subscribe.name},tmdbid:{subscribe.tmdbid}')
|
||||
continue
|
||||
|
@ -89,7 +89,7 @@ class UserMessageChain(ChainBase):
|
||||
return
|
||||
# 发送缺失的媒体信息
|
||||
if no_exists:
|
||||
messages = [f"第 {no_exist.get('season')} 季缺失 {no_exist.get('total_episodes')} 集"
|
||||
messages = [f"第 {no_exist.get('season')} 季缺失 {len(no_exist.get('episodes'))} 集"
|
||||
for no_exist in no_exists.get(mediainfo.tmdb_id)]
|
||||
self.post_message(title=f"{mediainfo.get_title_string()}:\n" + "\n".join(messages))
|
||||
logger.info(f"{mediainfo.get_title_string()} 媒体库中不存在,开始搜索 ...")
|
||||
@ -109,7 +109,10 @@ class UserMessageChain(ChainBase):
|
||||
self._current_page = 0
|
||||
# 发送种子数据
|
||||
logger.info(f"搜索到 {len(contexts)} 条数据,开始发送选择消息 ...")
|
||||
self.__post_torrents_message(items=contexts[:self._page_size], userid=userid, total=len(contexts))
|
||||
self.__post_torrents_message(title=mediainfo.title,
|
||||
items=contexts[:self._page_size],
|
||||
userid=userid,
|
||||
total=len(contexts))
|
||||
|
||||
elif cache_type == "Subscribe":
|
||||
# 订阅媒体
|
||||
@ -204,10 +207,16 @@ class UserMessageChain(ChainBase):
|
||||
end = start + self._page_size
|
||||
if cache_type == "Torrent":
|
||||
# 发送种子数据
|
||||
self.__post_torrents_message(items=cache_list[start:end], userid=userid, total=len(cache_list))
|
||||
self.__post_torrents_message(title=self._current_media.title,
|
||||
items=cache_list[start:end],
|
||||
userid=userid,
|
||||
total=len(cache_list))
|
||||
else:
|
||||
# 发送媒体数据
|
||||
self.__post_medias_message(items=cache_list[start:end], userid=userid, total=len(cache_list))
|
||||
self.__post_medias_message(title=self._current_media.title,
|
||||
items=cache_list[start:end],
|
||||
userid=userid,
|
||||
total=len(cache_list))
|
||||
|
||||
elif text.lower() == "n":
|
||||
# 下一页
|
||||
@ -229,10 +238,12 @@ class UserMessageChain(ChainBase):
|
||||
else:
|
||||
if cache_type == "Torrent":
|
||||
# 发送种子数据
|
||||
self.__post_torrents_message(items=cache_list, userid=userid, total=total)
|
||||
self.__post_torrents_message(title=self._current_media.title,
|
||||
items=cache_list, userid=userid, total=total)
|
||||
else:
|
||||
# 发送媒体数据
|
||||
self.__post_medias_message(items=cache_list, userid=userid, total=total)
|
||||
self.__post_medias_message(title=self._current_media.title,
|
||||
items=cache_list, userid=userid, total=total)
|
||||
|
||||
else:
|
||||
# 搜索或订阅
|
||||
@ -262,6 +273,7 @@ class UserMessageChain(ChainBase):
|
||||
meta.begin_episode = episode_num
|
||||
if year:
|
||||
meta.year = year
|
||||
# 记录当前状态
|
||||
self._current_meta = meta
|
||||
# 开始搜索
|
||||
logger.info(f"开始搜索:{meta.get_name()}")
|
||||
@ -276,24 +288,26 @@ class UserMessageChain(ChainBase):
|
||||
self._current_page = 0
|
||||
self._current_media = None
|
||||
# 发送媒体列表
|
||||
self.__post_medias_message(items=medias[:self._page_size], userid=userid, total=len(medias))
|
||||
self.__post_medias_message(title=meta.get_name(),
|
||||
items=medias[:self._page_size],
|
||||
userid=userid, total=len(medias))
|
||||
|
||||
def __post_medias_message(self, items: list, userid: str, total: int):
|
||||
def __post_medias_message(self, title: str, items: list, userid: str, total: int):
|
||||
"""
|
||||
发送媒体列表消息
|
||||
"""
|
||||
self.post_medias_message(
|
||||
title=f"共找到{total}条相关信息,请回复数字选择对应媒体(p: 上一页 n: 下一页)",
|
||||
title=f"【{title}】共找到{total}条相关信息,请回复数字选择对应媒体(p: 上一页 n: 下一页)",
|
||||
items=items,
|
||||
userid=userid
|
||||
)
|
||||
|
||||
def __post_torrents_message(self, items: list, userid: str, total: int):
|
||||
def __post_torrents_message(self, title: str, items: list, userid: str, total: int):
|
||||
"""
|
||||
发送种子列表消息
|
||||
"""
|
||||
self.post_torrents_message(
|
||||
title=f"共找到{total}条相关信息,请回复数字下载对应资源(0: 自动选择 p: 上一页 n: 下一页)",
|
||||
title=f"【{title}】共找到{total}条相关信息,请回复数字下载对应资源(0: 自动选择 p: 上一页 n: 下一页)",
|
||||
items=items,
|
||||
userid=userid
|
||||
)
|
||||
|
Reference in New Issue
Block a user