fix #2905 订阅搜索不走订阅设置的分辨率等规则

This commit is contained in:
thsrite
2024-10-28 11:29:34 +08:00
parent 6029cf283b
commit 9686a20c2f
2 changed files with 30 additions and 2 deletions

View File

@@ -11,6 +11,7 @@ from app.core.context import Context
from app.core.context import MediaInfo, TorrentInfo
from app.core.event import eventmanager, Event
from app.core.metainfo import MetaInfo
from app.db.models import Subscribe
from app.db.systemconfig_oper import SystemConfigOper
from app.helper.progress import ProgressHelper
from app.helper.sites import SitesHelper
@@ -105,7 +106,8 @@ class SearchChain(ChainBase):
sites: List[int] = None,
rule_groups: List[str] = None,
area: str = "title",
custom_words: List[str] = None) -> List[Context]:
custom_words: List[str] = None,
subscribe: Subscribe = None) -> List[Context]:
"""
根据媒体信息搜索种子资源精确匹配应用过滤规则同时根据no_exists过滤本地已存在的资源
:param mediainfo: 媒体信息
@@ -231,6 +233,13 @@ class SearchChain(ChainBase):
logger.info(f'{mediainfo.title} 通过IMDBID匹配到资源{torrent.site_name} - {torrent.title}')
_match_torrents.append((torrent, torrent_meta))
continue
# 匹配订阅附加参数
if subscribe and not self.torrenthelper.filter_torrent(torrent_info=torrent,
filter_params=self.__get_subscribe_params(
subscribe)):
continue
# 比对种子
if self.torrenthelper.match_torrent(mediainfo=mediainfo,
torrent_meta=torrent_meta,
@@ -270,6 +279,24 @@ class SearchChain(ChainBase):
# 返回
return contexts
def __get_subscribe_params(self, subscribe: Subscribe):
"""
获取订阅默认参数
"""
# 默认过滤规则
default_rule = self.systemconfig.get(SystemConfigKey.SubscribeDefaultParams) or {}
return {
"include": subscribe.include or default_rule.get("include"),
"exclude": subscribe.exclude or default_rule.get("exclude"),
"quality": subscribe.quality or default_rule.get("quality"),
"resolution": subscribe.resolution or default_rule.get("resolution"),
"effect": subscribe.effect or default_rule.get("effect"),
"tv_size": default_rule.get("tv_size"),
"movie_size": default_rule.get("movie_size"),
"min_seeders": default_rule.get("min_seeders"),
"min_seeders_time": default_rule.get("min_seeders_time"),
}
def __search_all_sites(self, keywords: List[str],
mediainfo: Optional[MediaInfo] = None,
sites: List[int] = None,