diff --git a/app/api/endpoints/subscribe.py b/app/api/endpoints/subscribe.py index 198e1c41..a1c42989 100644 --- a/app/api/endpoints/subscribe.py +++ b/app/api/endpoints/subscribe.py @@ -82,6 +82,7 @@ def create_subscribe( doubanid=subscribe_in.doubanid, username=current_user.name, best_version=subscribe_in.best_version, + save_path=subscribe_in.save_path, exist_ok=True) return schemas.Response(success=True if sid else False, message=message, data={ "id": sid diff --git a/app/chain/subscribe.py b/app/chain/subscribe.py index 2752b9f2..4b82bf8c 100644 --- a/app/chain/subscribe.py +++ b/app/chain/subscribe.py @@ -320,7 +320,8 @@ class SubscribeChain(ChainBase): downloads, lefts = self.downloadchain.batch_download( contexts=matched_contexts, no_exists=no_exists, - username=subscribe.username + username=subscribe.username, + save_path=subscribe.save_path ) # 判断是否应完成订阅 @@ -674,8 +675,10 @@ class SubscribeChain(ChainBase): # 开始批量择优下载 logger.info(f'{mediainfo.title_year} 匹配完成,共匹配到{len(_match_context)}个资源') - downloads, lefts = self.downloadchain.batch_download(contexts=_match_context, no_exists=no_exists, - username=subscribe.username) + downloads, lefts = self.downloadchain.batch_download(contexts=_match_context, + no_exists=no_exists, + username=subscribe.username, + save_path=subscribe.save_path) # 判断是否要完成订阅 self.finish_subscribe_or_not(subscribe=subscribe, meta=meta, mediainfo=mediainfo, downloads=downloads, lefts=lefts) diff --git a/app/db/models/subscribe.py b/app/db/models/subscribe.py index 187c2c38..3d2d3344 100644 --- a/app/db/models/subscribe.py +++ b/app/db/models/subscribe.py @@ -65,6 +65,8 @@ class Subscribe(Base): best_version = Column(Integer, default=0) # 当前优先级 current_priority = Column(Integer) + # 保存路径 + save_path = Column(String) @staticmethod @db_query diff --git a/app/schemas/subscribe.py b/app/schemas/subscribe.py index dc5f3296..e6054e5e 100644 --- a/app/schemas/subscribe.py +++ b/app/schemas/subscribe.py @@ -57,6 +57,8 @@ class Subscribe(BaseModel): best_version: Optional[int] = 0 # 当前优先级 current_priority: Optional[int] = None + # 保存路径 + save_path: Optional[str] = None class Config: orm_mode = True diff --git a/database/versions/d71e624f0208_1_0_12.py b/database/versions/d71e624f0208_1_0_12.py new file mode 100644 index 00000000..897f6a66 --- /dev/null +++ b/database/versions/d71e624f0208_1_0_12.py @@ -0,0 +1,30 @@ +"""1_0_12 + +Revision ID: d71e624f0208 +Revises: 06abf3e7090b +Create Date: 2023-12-12 13:26:34.039497 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = 'd71e624f0208' +down_revision = '06abf3e7090b' +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('save_path', sa.String, nullable=True)) + except Exception as e: + pass + # ### end Alembic commands ### + + +def downgrade() -> None: + pass