diff --git a/alembic/versions/232dfa044617_1_0_6.py b/alembic/versions/232dfa044617_1_0_6.py new file mode 100644 index 00000000..2cd3dfb3 --- /dev/null +++ b/alembic/versions/232dfa044617_1_0_6.py @@ -0,0 +1,40 @@ +"""1.0.6 + +Revision ID: 232dfa044617 +Revises: e734c7fe6056 +Create Date: 2023-09-19 21:34:41.994617 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = '232dfa044617' +down_revision = 'e734c7fe6056' +branch_labels = None +depends_on = None + + +def upgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + # 搜索优先级 + op.execute("delete from systemconfig where key = 'SearchFilterRules';") + op.execute( + "insert into systemconfig(key, value) VALUES('SearchFilterRules', (select value from systemconfig where key= 'FilterRules'));") + # 订阅优先级 + op.execute("delete from systemconfig where key = 'SubscribeFilterRules';") + op.execute( + "insert into systemconfig(key, value) VALUES('SubscribeFilterRules', (select value from systemconfig where key= 'FilterRules'));") + # 洗版优先级 + op.execute("delete from systemconfig where key = 'BestVersionFilterRules';") + op.execute( + "insert into systemconfig(key, value) VALUES('BestVersionFilterRules', (select value from systemconfig where key= 'FilterRules2'));") + # 删除旧的优先级规则 + op.execute("delete from systemconfig where key = 'FilterRules';") + op.execute("delete from systemconfig where key = 'FilterRules2';") + # ### end Alembic commands ### + + +def downgrade() -> None: + pass diff --git a/app/api/endpoints/system.py b/app/api/endpoints/system.py index b763d4c1..5d285691 100644 --- a/app/api/endpoints/system.py +++ b/app/api/endpoints/system.py @@ -169,31 +169,33 @@ def latest_version(_: schemas.TokenPayload = Depends(verify_token)): return schemas.Response(success=False) -@router.get("/ruletest", summary="过滤规则测试", response_model=schemas.Response) +@router.get("/ruletest", summary="优先级规则测试", response_model=schemas.Response) def ruletest(title: str, subtitle: str = None, ruletype: str = None, db: Session = Depends(get_db), _: schemas.TokenPayload = Depends(verify_token)): """ - 过滤规则测试,规则类型 1-订阅,2-洗版 + 过滤规则测试,规则类型 1-订阅,2-洗版,3-搜索 """ torrent = schemas.TorrentInfo( title=title, description=subtitle, ) if ruletype == "2": - rule_string = SystemConfigOper().get(SystemConfigKey.FilterRules2) + rule_string = SystemConfigOper().get(SystemConfigKey.BestVersionFilterRules) + elif ruletype == "3": + rule_string = SystemConfigOper().get(SystemConfigKey.SearchFilterRules) else: - rule_string = SystemConfigOper().get(SystemConfigKey.FilterRules) + rule_string = SystemConfigOper().get(SystemConfigKey.SubscribeFilterRules) if not rule_string: - return schemas.Response(success=False, message="过滤规则未设置!") + return schemas.Response(success=False, message="优先级规则未设置!") # 过滤 result = SearchChain(db).filter_torrents(rule_string=rule_string, torrent_list=[torrent]) if not result: - return schemas.Response(success=False, message="不符合过滤规则!") + return schemas.Response(success=False, message="不符合优先级规则!") return schemas.Response(success=True, data={ "priority": 100 - result[0].pri_order + 1 }) diff --git a/app/chain/search.py b/app/chain/search.py index 413279e1..9eb93dd0 100644 --- a/app/chain/search.py +++ b/app/chain/search.py @@ -88,7 +88,7 @@ class SearchChain(ChainBase): :param keyword: 搜索关键词 :param no_exists: 缺失的媒体信息 :param sites: 站点ID列表,为空时搜索所有站点 - :param filter_rule: 过滤规则,为空是使用默认过滤规则 + :param filter_rule: 过滤规则,为空是使用默认搜索过滤规则 :param area: 搜索范围,title or imdbid """ logger.info(f'开始搜索资源,关键词:{keyword or mediainfo.title} ...') @@ -130,7 +130,7 @@ class SearchChain(ChainBase): # 过滤种子 if filter_rule is None: # 取默认过滤规则 - filter_rule = self.systemconfig.get(SystemConfigKey.FilterRules) + filter_rule = self.systemconfig.get(SystemConfigKey.SearchFilterRules) if filter_rule: logger.info(f'开始过滤资源,当前规则:{filter_rule} ...') result: List[TorrentInfo] = self.filter_torrents(rule_string=filter_rule, diff --git a/app/chain/subscribe.py b/app/chain/subscribe.py index d3e57e00..37a9a221 100644 --- a/app/chain/subscribe.py +++ b/app/chain/subscribe.py @@ -264,9 +264,9 @@ class SubscribeChain(ChainBase): sites = None # 过滤规则 if subscribe.best_version: - filter_rule = self.systemconfig.get(SystemConfigKey.FilterRules2) + filter_rule = self.systemconfig.get(SystemConfigKey.BestVersionFilterRules) else: - filter_rule = self.systemconfig.get(SystemConfigKey.FilterRules) + filter_rule = self.systemconfig.get(SystemConfigKey.SubscribeFilterRules) # 搜索,同时电视剧会过滤掉不需要的剧集 contexts = self.searchchain.process(mediainfo=mediainfo, keyword=subscribe.keyword, @@ -507,9 +507,9 @@ class SubscribeChain(ChainBase): continue # 过滤规则 if subscribe.best_version: - filter_rule = self.systemconfig.get(SystemConfigKey.FilterRules2) + filter_rule = self.systemconfig.get(SystemConfigKey.BestVersionFilterRules) else: - filter_rule = self.systemconfig.get(SystemConfigKey.FilterRules) + filter_rule = self.systemconfig.get(SystemConfigKey.SubscribeFilterRules) result: List[TorrentInfo] = self.filter_torrents( rule_string=filter_rule, torrent_list=[torrent_info], diff --git a/app/plugins/rsssubscribe/__init__.py b/app/plugins/rsssubscribe/__init__.py index bce06b73..54afeadc 100644 --- a/app/plugins/rsssubscribe/__init__.py +++ b/app/plugins/rsssubscribe/__init__.py @@ -549,7 +549,7 @@ class RssSubscribe(_PluginBase): logger.error(f"未获取到RSS数据:{url}") return # 过滤规则 - filter_rule = self.systemconfig.get(SystemConfigKey.FilterRules) + filter_rule = self.systemconfig.get(SystemConfigKey.SubscribeFilterRules) # 解析数据 for result in results: try: diff --git a/app/schemas/types.py b/app/schemas/types.py index 5e68333b..4d3b7c1f 100644 --- a/app/schemas/types.py +++ b/app/schemas/types.py @@ -48,7 +48,7 @@ class SystemConfigKey(Enum): UserInstalledPlugins = "UserInstalledPlugins" # 搜索结果 SearchResults = "SearchResults" - # 索引站点范围 + # 搜索站点范围 IndexerSites = "IndexerSites" # 订阅站点范围 RssSites = "RssSites" @@ -60,10 +60,12 @@ class SystemConfigKey(Enum): CustomReleaseGroups = "CustomReleaseGroups" # 自定义识别词 CustomIdentifiers = "CustomIdentifiers" - # 过滤规则 - FilterRules = "FilterRules" + # 搜索优先级规则 + SearchFilterRules = "SearchFilterRules" + # 订阅优先级规则 + SubscribeFilterRules = "SubscribeFilterRules" # 洗版规则 - FilterRules2 = "FilterRules2" + BestVersionFilterRules = "BestVersionFilterRules" # 默认包含与排除规则 DefaultIncludeExcludeFilter = "DefaultIncludeExcludeFilter" # 转移屏蔽词