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.context import MediaInfo, TorrentInfo
from app.core.event import eventmanager, Event from app.core.event import eventmanager, Event
from app.core.metainfo import MetaInfo from app.core.metainfo import MetaInfo
from app.db.models import Subscribe
from app.db.systemconfig_oper import SystemConfigOper from app.db.systemconfig_oper import SystemConfigOper
from app.helper.progress import ProgressHelper from app.helper.progress import ProgressHelper
from app.helper.sites import SitesHelper from app.helper.sites import SitesHelper
@@ -105,7 +106,8 @@ class SearchChain(ChainBase):
sites: List[int] = None, sites: List[int] = None,
rule_groups: List[str] = None, rule_groups: List[str] = None,
area: str = "title", area: str = "title",
custom_words: List[str] = None) -> List[Context]: custom_words: List[str] = None,
subscribe: Subscribe = None) -> List[Context]:
""" """
根据媒体信息搜索种子资源精确匹配应用过滤规则同时根据no_exists过滤本地已存在的资源 根据媒体信息搜索种子资源精确匹配应用过滤规则同时根据no_exists过滤本地已存在的资源
:param mediainfo: 媒体信息 :param mediainfo: 媒体信息
@@ -231,6 +233,13 @@ class SearchChain(ChainBase):
logger.info(f'{mediainfo.title} 通过IMDBID匹配到资源{torrent.site_name} - {torrent.title}') logger.info(f'{mediainfo.title} 通过IMDBID匹配到资源{torrent.site_name} - {torrent.title}')
_match_torrents.append((torrent, torrent_meta)) _match_torrents.append((torrent, torrent_meta))
continue 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, if self.torrenthelper.match_torrent(mediainfo=mediainfo,
torrent_meta=torrent_meta, torrent_meta=torrent_meta,
@@ -270,6 +279,24 @@ class SearchChain(ChainBase):
# 返回 # 返回
return contexts 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], def __search_all_sites(self, keywords: List[str],
mediainfo: Optional[MediaInfo] = None, mediainfo: Optional[MediaInfo] = None,
sites: List[int] = None, sites: List[int] = None,

View File

@@ -348,7 +348,8 @@ class SubscribeChain(ChainBase):
sites=sites, sites=sites,
rule_groups=rule_groups, rule_groups=rule_groups,
area="imdbid" if subscribe.search_imdbid else "title", area="imdbid" if subscribe.search_imdbid else "title",
custom_words=custom_word_list) custom_words=custom_word_list,
subscribe=subscribe)
if not contexts: if not contexts:
logger.warn(f'订阅 {subscribe.keyword or subscribe.name} 未搜索到资源') logger.warn(f'订阅 {subscribe.keyword or subscribe.name} 未搜索到资源')
self.finish_subscribe_or_not(subscribe=subscribe, meta=meta, self.finish_subscribe_or_not(subscribe=subscribe, meta=meta,