diff --git a/app/chain/search.py b/app/chain/search.py index 6f09913c..624c83f0 100644 --- a/app/chain/search.py +++ b/app/chain/search.py @@ -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 # 使用默认过滤规则再次过滤 diff --git a/app/chain/subscribe.py b/app/chain/subscribe.py index 60bfc212..66c743fc 100644 --- a/app/chain/subscribe.py +++ b/app/chain/subscribe.py @@ -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) diff --git a/app/db/models/subscribe.py b/app/db/models/subscribe.py index 0add658e..92cfdf3d 100644 --- a/app/db/models/subscribe.py +++ b/app/db/models/subscribe.py @@ -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) # 开始集数 diff --git a/app/schemas/subscribe.py b/app/schemas/subscribe.py index 5514dd80..dc5f3296 100644 --- a/app/schemas/subscribe.py +++ b/app/schemas/subscribe.py @@ -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 # 开始集数 diff --git a/database/versions/a521fbc28b18_1_0_9.py b/database/versions/a521fbc28b18_1_0_9.py index c0cc48c2..361d2a98 100644 --- a/database/versions/a521fbc28b18_1_0_9.py +++ b/database/versions/a521fbc28b18_1_0_9.py @@ -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 \ No newline at end of file + pass diff --git a/database/versions/d633ca6cd572_1_0_10.py b/database/versions/d633ca6cd572_1_0_10.py new file mode 100644 index 00000000..044a8356 --- /dev/null +++ b/database/versions/d633ca6cd572_1_0_10.py @@ -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