fix filter

This commit is contained in:
jxxghp 2023-06-10 20:47:25 +08:00
parent be9c6b0571
commit f579461c12
5 changed files with 18 additions and 13 deletions

View File

@ -97,8 +97,7 @@ class ChainBase(AbstractSingleton, metaclass=Singleton):
def filter_torrents(self, torrent_list: List[TorrentInfo], def filter_torrents(self, torrent_list: List[TorrentInfo],
season_episodes: Dict[int, list] = None) -> List[TorrentInfo]: season_episodes: Dict[int, list] = None) -> List[TorrentInfo]:
return self.run_module("filter_torrents", torrent_list=torrent_list, return self.run_module("filter_torrents", torrent_list=torrent_list, season_episodes=season_episodes)
season_episodes=season_episodes)
def download(self, torrent_path: Path, cookie: str, def download(self, torrent_path: Path, cookie: str,
episodes: Set[int] = None) -> Optional[Tuple[Optional[str], str]]: episodes: Set[int] = None) -> Optional[Tuple[Optional[str], str]]:

View File

@ -80,7 +80,9 @@ class DoubanSyncChain(ChainBase):
continue continue
logger.info(f'{mediainfo.get_title_string()} 媒体库中不存在,开始搜索 ...') logger.info(f'{mediainfo.get_title_string()} 媒体库中不存在,开始搜索 ...')
# 搜索 # 搜索
contexts = self.searchchain.process(meta=meta, mediainfo=mediainfo) contexts = self.searchchain.process(meta=meta,
mediainfo=mediainfo,
no_exists=no_exists)
if not contexts: if not contexts:
logger.warn(f'{mediainfo.get_title_string()} 未搜索到资源') logger.warn(f'{mediainfo.get_title_string()} 未搜索到资源')
continue continue

View File

@ -20,13 +20,13 @@ class SearchChain(ChainBase):
def process(self, meta: MetaBase, mediainfo: MediaInfo, def process(self, meta: MetaBase, mediainfo: MediaInfo,
keyword: str = None, keyword: str = None,
season_episodes: Dict[int, list] = None) -> Optional[List[Context]]: no_exists: Dict[int, List[dict]] = None) -> Optional[List[Context]]:
""" """
根据媒体信息执行搜索 根据媒体信息执行搜索
:param meta: 元数据 :param meta: 元数据
:param mediainfo: 媒体信息 :param mediainfo: 媒体信息
:param keyword: 搜索关键词 :param keyword: 搜索关键词
:param season_episodes: 媒体季度集数 :param no_exists: 缺失的媒体信息
""" """
logger.info(f'开始搜索资源,关键词:{keyword or mediainfo.title} ...') logger.info(f'开始搜索资源,关键词:{keyword or mediainfo.title} ...')
# 未开启的站点不搜索 # 未开启的站点不搜索
@ -38,6 +38,13 @@ class SearchChain(ChainBase):
if not indexer_sites: if not indexer_sites:
logger.warn('未开启任何有效站点,无法搜索资源') logger.warn('未开启任何有效站点,无法搜索资源')
return [] return []
# 缺失的媒体信息
if no_exists:
# 过滤剧集
season_episodes = {info.get('season'): info.get('episodes')
for info in no_exists.get(mediainfo.tmdb_id)}
else:
season_episodes = None
# 执行搜索 # 执行搜索
torrents: List[TorrentInfo] = self.search_torrents( torrents: List[TorrentInfo] = self.search_torrents(
mediainfo=mediainfo, mediainfo=mediainfo,

View File

@ -113,7 +113,10 @@ class SubscribeChain(ChainBase):
image=mediainfo.get_message_image()) image=mediainfo.get_message_image())
continue continue
# 搜索 # 搜索
contexts = self.searchchain.process(meta=meta, mediainfo=mediainfo, keyword=subscribe.keyword) contexts = self.searchchain.process(meta=meta,
mediainfo=mediainfo,
keyword=subscribe.keyword,
no_exists=no_exists)
if not contexts: if not contexts:
logger.warn(f'{subscribe.keyword or subscribe.name} 未搜索到资源') logger.warn(f'{subscribe.keyword or subscribe.name} 未搜索到资源')
continue continue

View File

@ -89,23 +89,17 @@ class UserMessageChain(ChainBase):
return return
# 发送缺失的媒体信息 # 发送缺失的媒体信息
if no_exists: if no_exists:
# 过滤剧集
season_episodes = {info.get('season'): info.get('episodes')
for info in no_exists.get(mediainfo.tmdb_id)}
# 发送消息 # 发送消息
messages = [f"{no_exist.get('season')} 季缺失 {len(no_exist.get('episodes'))}" messages = [f"{no_exist.get('season')} 季缺失 {len(no_exist.get('episodes'))}"
for no_exist in no_exists.get(mediainfo.tmdb_id)] for no_exist in no_exists.get(mediainfo.tmdb_id)]
logger.info(f"{mediainfo.get_title_string()}" + "\n".join(messages))
self.post_message(title=f"{mediainfo.get_title_string()}\n" + "\n".join(messages)) self.post_message(title=f"{mediainfo.get_title_string()}\n" + "\n".join(messages))
else:
season_episodes = None
# 搜索种子,过滤掉不需要的剧集,以便选择 # 搜索种子,过滤掉不需要的剧集,以便选择
logger.info(f"{mediainfo.get_title_string()} 媒体库中不存在,开始搜索 ...") logger.info(f"{mediainfo.get_title_string()} 媒体库中不存在,开始搜索 ...")
self.post_message( self.post_message(
title=f"开始搜索 {mediainfo.type.value} {mediainfo.get_title_string()} ...", userid=userid) title=f"开始搜索 {mediainfo.type.value} {mediainfo.get_title_string()} ...", userid=userid)
contexts = self.searchchain.process(meta=self._current_meta, contexts = self.searchchain.process(meta=self._current_meta,
mediainfo=mediainfo, mediainfo=mediainfo,
season_episodes=season_episodes) no_exists=no_exists)
if not contexts: if not contexts:
# 没有数据 # 没有数据
self.post_message(title=f"{mediainfo.title} 未搜索到资源!", userid=userid) self.post_message(title=f"{mediainfo.title} 未搜索到资源!", userid=userid)