feat 订阅支持更多过滤规则

This commit is contained in:
jxxghp
2023-10-12 08:58:59 +08:00
parent ac3009d58f
commit 7a61fa1ee2
6 changed files with 74 additions and 3 deletions

View File

@ -342,6 +342,12 @@ class SearchChain(ChainBase):
include = filter_rule.get("include")
# 排除
exclude = filter_rule.get("exclude")
# 质量
quality = filter_rule.get("quality")
# 分辨率
resolution = filter_rule.get("resolution")
# 特效
effect = filter_rule.get("effect")
def __filter_torrent(t: TorrentInfo) -> bool:
"""
@ -359,6 +365,24 @@ class SearchChain(ChainBase):
f"{t.title} {t.description}", re.I):
logger.info(f"{t.title} 匹配排除规则 {exclude}")
return False
# 质量
if quality:
if not re.search(r"%s" % quality, t.title, re.I):
logger.info(f"{t.title} 不匹配质量规则 {quality}")
return False
# 分辨率
if resolution:
if not re.search(r"%s" % resolution, t.title, re.I):
logger.info(f"{t.title} 不匹配分辨率规则 {resolution}")
return False
# 特效
if effect:
if not re.search(r"%s" % effect, t.title, re.I):
logger.info(f"{t.title} 不匹配特效规则 {effect}")
return False
return True
# 使用默认过滤规则再次过滤

View File

@ -237,7 +237,10 @@ class SubscribeChain(ChainBase):
if subscribe.include or subscribe.exclude:
filter_rule = {
"include": subscribe.include,
"exclude": subscribe.exclude
"exclude": subscribe.exclude,
"quality": subscribe.quality,
"resolution": subscribe.resolution,
"effect": subscribe.effect,
}
else:
filter_rule = self.systemconfig.get(SystemConfigKey.DefaultFilterRules)

View File

@ -37,6 +37,12 @@ class Subscribe(Base):
include = Column(String)
# 排除
exclude = Column(String)
# 质量
quality = Column(String)
# 分辨率
resolution = Column(String)
# 特效
effect = Column(String)
# 总集数
total_episode = Column(Integer)
# 开始集数

View File

@ -31,6 +31,12 @@ class Subscribe(BaseModel):
include: Optional[str] = None
# 排除
exclude: Optional[str] = None
# 质量
quality: Optional[str] = None
# 分辨率
resolution: Optional[str] = None
# 特效
effect: Optional[str] = None
# 总集数
total_episode: Optional[int] = 0
# 开始集数

View File

@ -8,7 +8,6 @@ Create Date: 2023-09-28 13:37:16.479360
from alembic import op
import sqlalchemy as sa
# revision identifiers, used by Alembic.
revision = 'a521fbc28b18'
down_revision = 'b2f011d3a8b7'
@ -26,5 +25,6 @@ def upgrade() -> None:
pass
# ### end Alembic commands ###
def downgrade() -> None:
pass
pass

View File

@ -0,0 +1,32 @@
"""1.0.10
Revision ID: d633ca6cd572
Revises: a521fbc28b18
Create Date: 2023-10-12 08:54:49.728638
"""
from alembic import op
import sqlalchemy as sa
# revision identifiers, used by Alembic.
revision = 'd633ca6cd572'
down_revision = 'a521fbc28b18'
branch_labels = None
depends_on = None
def upgrade() -> None:
# ### commands auto generated by Alembic - please adjust! ###
try:
with op.batch_alter_table("subscribe") as batch_op:
batch_op.add_column(sa.Column('quality', sa.String, nullable=True))
batch_op.add_column(sa.Column('resolution', sa.String, nullable=True))
batch_op.add_column(sa.Column('effect', sa.String, nullable=True))
except Exception as e:
pass
# ### end Alembic commands ###
def downgrade() -> None:
pass