fix filter

This commit is contained in:
jxxghp
2023-06-10 20:32:37 +08:00
parent f1006676c7
commit be9c6b0571
7 changed files with 70 additions and 16 deletions

View File

@ -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]]:

View File

@ -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:

View File

@ -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()} "

View File

@ -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)