feat 订阅支持更多过滤规则
This commit is contained in:
@ -342,6 +342,12 @@ class SearchChain(ChainBase):
|
|||||||
include = filter_rule.get("include")
|
include = filter_rule.get("include")
|
||||||
# 排除
|
# 排除
|
||||||
exclude = filter_rule.get("exclude")
|
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:
|
def __filter_torrent(t: TorrentInfo) -> bool:
|
||||||
"""
|
"""
|
||||||
@ -359,6 +365,24 @@ class SearchChain(ChainBase):
|
|||||||
f"{t.title} {t.description}", re.I):
|
f"{t.title} {t.description}", re.I):
|
||||||
logger.info(f"{t.title} 匹配排除规则 {exclude}")
|
logger.info(f"{t.title} 匹配排除规则 {exclude}")
|
||||||
return False
|
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
|
return True
|
||||||
|
|
||||||
# 使用默认过滤规则再次过滤
|
# 使用默认过滤规则再次过滤
|
||||||
|
@ -237,7 +237,10 @@ class SubscribeChain(ChainBase):
|
|||||||
if subscribe.include or subscribe.exclude:
|
if subscribe.include or subscribe.exclude:
|
||||||
filter_rule = {
|
filter_rule = {
|
||||||
"include": subscribe.include,
|
"include": subscribe.include,
|
||||||
"exclude": subscribe.exclude
|
"exclude": subscribe.exclude,
|
||||||
|
"quality": subscribe.quality,
|
||||||
|
"resolution": subscribe.resolution,
|
||||||
|
"effect": subscribe.effect,
|
||||||
}
|
}
|
||||||
else:
|
else:
|
||||||
filter_rule = self.systemconfig.get(SystemConfigKey.DefaultFilterRules)
|
filter_rule = self.systemconfig.get(SystemConfigKey.DefaultFilterRules)
|
||||||
|
@ -37,6 +37,12 @@ class Subscribe(Base):
|
|||||||
include = Column(String)
|
include = Column(String)
|
||||||
# 排除
|
# 排除
|
||||||
exclude = Column(String)
|
exclude = Column(String)
|
||||||
|
# 质量
|
||||||
|
quality = Column(String)
|
||||||
|
# 分辨率
|
||||||
|
resolution = Column(String)
|
||||||
|
# 特效
|
||||||
|
effect = Column(String)
|
||||||
# 总集数
|
# 总集数
|
||||||
total_episode = Column(Integer)
|
total_episode = Column(Integer)
|
||||||
# 开始集数
|
# 开始集数
|
||||||
|
@ -31,6 +31,12 @@ class Subscribe(BaseModel):
|
|||||||
include: Optional[str] = None
|
include: Optional[str] = None
|
||||||
# 排除
|
# 排除
|
||||||
exclude: Optional[str] = None
|
exclude: Optional[str] = None
|
||||||
|
# 质量
|
||||||
|
quality: Optional[str] = None
|
||||||
|
# 分辨率
|
||||||
|
resolution: Optional[str] = None
|
||||||
|
# 特效
|
||||||
|
effect: Optional[str] = None
|
||||||
# 总集数
|
# 总集数
|
||||||
total_episode: Optional[int] = 0
|
total_episode: Optional[int] = 0
|
||||||
# 开始集数
|
# 开始集数
|
||||||
|
@ -8,7 +8,6 @@ Create Date: 2023-09-28 13:37:16.479360
|
|||||||
from alembic import op
|
from alembic import op
|
||||||
import sqlalchemy as sa
|
import sqlalchemy as sa
|
||||||
|
|
||||||
|
|
||||||
# revision identifiers, used by Alembic.
|
# revision identifiers, used by Alembic.
|
||||||
revision = 'a521fbc28b18'
|
revision = 'a521fbc28b18'
|
||||||
down_revision = 'b2f011d3a8b7'
|
down_revision = 'b2f011d3a8b7'
|
||||||
@ -26,5 +25,6 @@ def upgrade() -> None:
|
|||||||
pass
|
pass
|
||||||
# ### end Alembic commands ###
|
# ### end Alembic commands ###
|
||||||
|
|
||||||
|
|
||||||
def downgrade() -> None:
|
def downgrade() -> None:
|
||||||
pass
|
pass
|
32
database/versions/d633ca6cd572_1_0_10.py
Normal file
32
database/versions/d633ca6cd572_1_0_10.py
Normal 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
|
Reference in New Issue
Block a user