feat 优先级规则按订阅和搜索拆分
This commit is contained in:
40
alembic/versions/232dfa044617_1_0_6.py
Normal file
40
alembic/versions/232dfa044617_1_0_6.py
Normal file
@ -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
|
@ -169,31 +169,33 @@ def latest_version(_: schemas.TokenPayload = Depends(verify_token)):
|
|||||||
return schemas.Response(success=False)
|
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,
|
def ruletest(title: str,
|
||||||
subtitle: str = None,
|
subtitle: str = None,
|
||||||
ruletype: str = None,
|
ruletype: str = None,
|
||||||
db: Session = Depends(get_db),
|
db: Session = Depends(get_db),
|
||||||
_: schemas.TokenPayload = Depends(verify_token)):
|
_: schemas.TokenPayload = Depends(verify_token)):
|
||||||
"""
|
"""
|
||||||
过滤规则测试,规则类型 1-订阅,2-洗版
|
过滤规则测试,规则类型 1-订阅,2-洗版,3-搜索
|
||||||
"""
|
"""
|
||||||
torrent = schemas.TorrentInfo(
|
torrent = schemas.TorrentInfo(
|
||||||
title=title,
|
title=title,
|
||||||
description=subtitle,
|
description=subtitle,
|
||||||
)
|
)
|
||||||
if ruletype == "2":
|
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:
|
else:
|
||||||
rule_string = SystemConfigOper().get(SystemConfigKey.FilterRules)
|
rule_string = SystemConfigOper().get(SystemConfigKey.SubscribeFilterRules)
|
||||||
if not rule_string:
|
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,
|
result = SearchChain(db).filter_torrents(rule_string=rule_string,
|
||||||
torrent_list=[torrent])
|
torrent_list=[torrent])
|
||||||
if not result:
|
if not result:
|
||||||
return schemas.Response(success=False, message="不符合过滤规则!")
|
return schemas.Response(success=False, message="不符合优先级规则!")
|
||||||
return schemas.Response(success=True, data={
|
return schemas.Response(success=True, data={
|
||||||
"priority": 100 - result[0].pri_order + 1
|
"priority": 100 - result[0].pri_order + 1
|
||||||
})
|
})
|
||||||
|
@ -88,7 +88,7 @@ class SearchChain(ChainBase):
|
|||||||
:param keyword: 搜索关键词
|
:param keyword: 搜索关键词
|
||||||
:param no_exists: 缺失的媒体信息
|
:param no_exists: 缺失的媒体信息
|
||||||
:param sites: 站点ID列表,为空时搜索所有站点
|
:param sites: 站点ID列表,为空时搜索所有站点
|
||||||
:param filter_rule: 过滤规则,为空是使用默认过滤规则
|
:param filter_rule: 过滤规则,为空是使用默认搜索过滤规则
|
||||||
:param area: 搜索范围,title or imdbid
|
:param area: 搜索范围,title or imdbid
|
||||||
"""
|
"""
|
||||||
logger.info(f'开始搜索资源,关键词:{keyword or mediainfo.title} ...')
|
logger.info(f'开始搜索资源,关键词:{keyword or mediainfo.title} ...')
|
||||||
@ -130,7 +130,7 @@ class SearchChain(ChainBase):
|
|||||||
# 过滤种子
|
# 过滤种子
|
||||||
if filter_rule is None:
|
if filter_rule is None:
|
||||||
# 取默认过滤规则
|
# 取默认过滤规则
|
||||||
filter_rule = self.systemconfig.get(SystemConfigKey.FilterRules)
|
filter_rule = self.systemconfig.get(SystemConfigKey.SearchFilterRules)
|
||||||
if filter_rule:
|
if filter_rule:
|
||||||
logger.info(f'开始过滤资源,当前规则:{filter_rule} ...')
|
logger.info(f'开始过滤资源,当前规则:{filter_rule} ...')
|
||||||
result: List[TorrentInfo] = self.filter_torrents(rule_string=filter_rule,
|
result: List[TorrentInfo] = self.filter_torrents(rule_string=filter_rule,
|
||||||
|
@ -264,9 +264,9 @@ class SubscribeChain(ChainBase):
|
|||||||
sites = None
|
sites = None
|
||||||
# 过滤规则
|
# 过滤规则
|
||||||
if subscribe.best_version:
|
if subscribe.best_version:
|
||||||
filter_rule = self.systemconfig.get(SystemConfigKey.FilterRules2)
|
filter_rule = self.systemconfig.get(SystemConfigKey.BestVersionFilterRules)
|
||||||
else:
|
else:
|
||||||
filter_rule = self.systemconfig.get(SystemConfigKey.FilterRules)
|
filter_rule = self.systemconfig.get(SystemConfigKey.SubscribeFilterRules)
|
||||||
# 搜索,同时电视剧会过滤掉不需要的剧集
|
# 搜索,同时电视剧会过滤掉不需要的剧集
|
||||||
contexts = self.searchchain.process(mediainfo=mediainfo,
|
contexts = self.searchchain.process(mediainfo=mediainfo,
|
||||||
keyword=subscribe.keyword,
|
keyword=subscribe.keyword,
|
||||||
@ -507,9 +507,9 @@ class SubscribeChain(ChainBase):
|
|||||||
continue
|
continue
|
||||||
# 过滤规则
|
# 过滤规则
|
||||||
if subscribe.best_version:
|
if subscribe.best_version:
|
||||||
filter_rule = self.systemconfig.get(SystemConfigKey.FilterRules2)
|
filter_rule = self.systemconfig.get(SystemConfigKey.BestVersionFilterRules)
|
||||||
else:
|
else:
|
||||||
filter_rule = self.systemconfig.get(SystemConfigKey.FilterRules)
|
filter_rule = self.systemconfig.get(SystemConfigKey.SubscribeFilterRules)
|
||||||
result: List[TorrentInfo] = self.filter_torrents(
|
result: List[TorrentInfo] = self.filter_torrents(
|
||||||
rule_string=filter_rule,
|
rule_string=filter_rule,
|
||||||
torrent_list=[torrent_info],
|
torrent_list=[torrent_info],
|
||||||
|
@ -549,7 +549,7 @@ class RssSubscribe(_PluginBase):
|
|||||||
logger.error(f"未获取到RSS数据:{url}")
|
logger.error(f"未获取到RSS数据:{url}")
|
||||||
return
|
return
|
||||||
# 过滤规则
|
# 过滤规则
|
||||||
filter_rule = self.systemconfig.get(SystemConfigKey.FilterRules)
|
filter_rule = self.systemconfig.get(SystemConfigKey.SubscribeFilterRules)
|
||||||
# 解析数据
|
# 解析数据
|
||||||
for result in results:
|
for result in results:
|
||||||
try:
|
try:
|
||||||
|
@ -48,7 +48,7 @@ class SystemConfigKey(Enum):
|
|||||||
UserInstalledPlugins = "UserInstalledPlugins"
|
UserInstalledPlugins = "UserInstalledPlugins"
|
||||||
# 搜索结果
|
# 搜索结果
|
||||||
SearchResults = "SearchResults"
|
SearchResults = "SearchResults"
|
||||||
# 索引站点范围
|
# 搜索站点范围
|
||||||
IndexerSites = "IndexerSites"
|
IndexerSites = "IndexerSites"
|
||||||
# 订阅站点范围
|
# 订阅站点范围
|
||||||
RssSites = "RssSites"
|
RssSites = "RssSites"
|
||||||
@ -60,10 +60,12 @@ class SystemConfigKey(Enum):
|
|||||||
CustomReleaseGroups = "CustomReleaseGroups"
|
CustomReleaseGroups = "CustomReleaseGroups"
|
||||||
# 自定义识别词
|
# 自定义识别词
|
||||||
CustomIdentifiers = "CustomIdentifiers"
|
CustomIdentifiers = "CustomIdentifiers"
|
||||||
# 过滤规则
|
# 搜索优先级规则
|
||||||
FilterRules = "FilterRules"
|
SearchFilterRules = "SearchFilterRules"
|
||||||
|
# 订阅优先级规则
|
||||||
|
SubscribeFilterRules = "SubscribeFilterRules"
|
||||||
# 洗版规则
|
# 洗版规则
|
||||||
FilterRules2 = "FilterRules2"
|
BestVersionFilterRules = "BestVersionFilterRules"
|
||||||
# 默认包含与排除规则
|
# 默认包含与排除规则
|
||||||
DefaultIncludeExcludeFilter = "DefaultIncludeExcludeFilter"
|
DefaultIncludeExcludeFilter = "DefaultIncludeExcludeFilter"
|
||||||
# 转移屏蔽词
|
# 转移屏蔽词
|
||||||
|
Reference in New Issue
Block a user