diff --git a/app/api/endpoints/subscribe.py b/app/api/endpoints/subscribe.py index a1ce1473..22d3b824 100644 --- a/app/api/endpoints/subscribe.py +++ b/app/api/endpoints/subscribe.py @@ -111,6 +111,9 @@ def update_subscribe( # 没有缺失集数时,缺失集数清空,避免更新为0 subscribe_dict.pop("lack_episode") elif subscribe_in.total_episode: + # 是否手动修改过总集数 + if subscribe_in.total_episode != subscribe.total_episode: + subscribe_dict["manual_total_episode"] = 1 # 总集数增加时,缺失集数也要增加 if subscribe_in.total_episode > (subscribe.total_episode or 0): subscribe_dict["lack_episode"] = (subscribe.lack_episode diff --git a/app/chain/subscribe.py b/app/chain/subscribe.py index 6333d111..61b8871a 100644 --- a/app/chain/subscribe.py +++ b/app/chain/subscribe.py @@ -741,7 +741,7 @@ class SubscribeChain(ChainBase): continue # 对于电视剧,获取当前季的总集数 episodes = mediainfo.seasons.get(subscribe.season) or [] - if len(episodes): + if not subscribe.manual_total_episode and len(episodes): total_episode = len(episodes) lack_episode = subscribe.lack_episode + (total_episode - subscribe.total_episode) logger.info( diff --git a/app/db/models/subscribe.py b/app/db/models/subscribe.py index 7e74b1eb..53d7a0b3 100644 --- a/app/db/models/subscribe.py +++ b/app/db/models/subscribe.py @@ -69,6 +69,8 @@ class Subscribe(Base): save_path = Column(String) # 是否使用 imdbid 搜索 search_imdbid = Column(Integer, default=0) + # 是否手动修改过总集数 0否 1是 + manual_total_episode = Column(Integer, default=0) @staticmethod @db_query diff --git a/database/versions/f94cd1217fd7_1_0_14.py b/database/versions/f94cd1217fd7_1_0_14.py new file mode 100644 index 00000000..71d98af7 --- /dev/null +++ b/database/versions/f94cd1217fd7_1_0_14.py @@ -0,0 +1,31 @@ +"""1_0_14 + +Revision ID: f94cd1217fd7 +Revises: 127a25fdf0e8 +Create Date: 2024-03-06 19:19:33.053186 + +""" +import contextlib + +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = 'f94cd1217fd7' +down_revision = '127a25fdf0e8' +branch_labels = None +depends_on = None + + +def upgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + with contextlib.suppress(Exception): + with op.batch_alter_table("subscribe") as batch_op: + batch_op.add_column(sa.Column('manual_total_episode', sa.Integer, nullable=True)) + # ### end Alembic commands ### + + +def downgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + pass \ No newline at end of file