fix filter
This commit is contained in:
@ -1,7 +1,7 @@
|
||||
import traceback
|
||||
from abc import abstractmethod
|
||||
from pathlib import Path
|
||||
from typing import Optional, Any, Tuple, List, Set, Union
|
||||
from typing import Optional, Any, Tuple, List, Set, Union, Dict
|
||||
|
||||
from ruamel.yaml import CommentedMap
|
||||
|
||||
@ -71,7 +71,7 @@ class ChainBase(AbstractSingleton, metaclass=Singleton):
|
||||
def recognize_media(self, meta: MetaBase,
|
||||
mtype: MediaType = None,
|
||||
tmdbid: int = None) -> Optional[MediaInfo]:
|
||||
return self.run_module("recognize_media", meta=meta, tmdbid=tmdbid)
|
||||
return self.run_module("recognize_media", meta=meta, mtype=mtype, tmdbid=tmdbid)
|
||||
|
||||
def douban_info(self, doubanid: str) -> Optional[dict]:
|
||||
return self.run_module("douban_info", doubanid=doubanid)
|
||||
@ -95,8 +95,10 @@ class ChainBase(AbstractSingleton, metaclass=Singleton):
|
||||
def refresh_torrents(self, sites: List[CommentedMap]) -> Optional[List[TorrentInfo]]:
|
||||
return self.run_module("refresh_torrents", sites=sites)
|
||||
|
||||
def filter_torrents(self, torrent_list: List[TorrentInfo]) -> List[TorrentInfo]:
|
||||
return self.run_module("filter_torrents", torrent_list=torrent_list)
|
||||
def filter_torrents(self, torrent_list: List[TorrentInfo],
|
||||
season_episodes: Dict[int, list] = None) -> List[TorrentInfo]:
|
||||
return self.run_module("filter_torrents", torrent_list=torrent_list,
|
||||
season_episodes=season_episodes)
|
||||
|
||||
def download(self, torrent_path: Path, cookie: str,
|
||||
episodes: Set[int] = None) -> Optional[Tuple[Optional[str], str]]:
|
||||
|
@ -1,4 +1,4 @@
|
||||
from typing import Optional, List
|
||||
from typing import Optional, List, Dict
|
||||
|
||||
from app.chain import ChainBase
|
||||
from app.core.config import settings
|
||||
@ -19,12 +19,14 @@ class SearchChain(ChainBase):
|
||||
self.siteshelper = SitesHelper()
|
||||
|
||||
def process(self, meta: MetaBase, mediainfo: MediaInfo,
|
||||
keyword: str = None) -> Optional[List[Context]]:
|
||||
keyword: str = None,
|
||||
season_episodes: Dict[int, list] = None) -> Optional[List[Context]]:
|
||||
"""
|
||||
根据媒体信息,执行搜索
|
||||
:param meta: 元数据
|
||||
:param mediainfo: 媒体信息
|
||||
:param keyword: 搜索关键词
|
||||
:param season_episodes: 媒体季度集数
|
||||
"""
|
||||
logger.info(f'开始搜索资源,关键词:{keyword or mediainfo.title} ...')
|
||||
# 未开启的站点不搜索
|
||||
@ -46,7 +48,8 @@ class SearchChain(ChainBase):
|
||||
logger.warn(f'{keyword or mediainfo.title} 未搜索到资源')
|
||||
return []
|
||||
# 过滤种子
|
||||
result: List[TorrentInfo] = self.filter_torrents(torrent_list=torrents)
|
||||
result: List[TorrentInfo] = self.filter_torrents(torrent_list=torrents,
|
||||
season_episodes=season_episodes)
|
||||
if result is not None:
|
||||
torrents = result
|
||||
if not torrents:
|
||||
|
@ -59,7 +59,7 @@ class SubscribeChain(ChainBase):
|
||||
self.obtain_image(mediainfo=mediainfo)
|
||||
# 添加订阅
|
||||
state, err_msg = self.subscribes.add(mediainfo, season=season, **kwargs)
|
||||
if state:
|
||||
if not state:
|
||||
logger.info(f'{mediainfo.get_title_string()} {err_msg}')
|
||||
# 发回原用户
|
||||
self.post_message(title=f"{mediainfo.get_title_string()}{metainfo.get_season_string()} "
|
||||
|
@ -89,14 +89,23 @@ class UserMessageChain(ChainBase):
|
||||
return
|
||||
# 发送缺失的媒体信息
|
||||
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'))} 集"
|
||||
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))
|
||||
else:
|
||||
season_episodes = None
|
||||
# 搜索种子,过滤掉不需要的剧集,以便选择
|
||||
logger.info(f"{mediainfo.get_title_string()} 媒体库中不存在,开始搜索 ...")
|
||||
self.post_message(
|
||||
title=f"开始搜索 {mediainfo.type.value} {mediainfo.get_title_string()} ...", userid=userid)
|
||||
# 搜索种子
|
||||
contexts = self.searchchain.process(meta=self._current_meta, mediainfo=mediainfo)
|
||||
contexts = self.searchchain.process(meta=self._current_meta,
|
||||
mediainfo=mediainfo,
|
||||
season_episodes=season_episodes)
|
||||
if not contexts:
|
||||
# 没有数据
|
||||
self.post_message(title=f"{mediainfo.title} 未搜索到资源!", userid=userid)
|
||||
|
Reference in New Issue
Block a user