From 5d2a911849652a76ff729192b899b8b34fd06efa Mon Sep 17 00:00:00 2001 From: jxxghp Date: Sun, 5 Jan 2025 15:38:13 +0800 Subject: [PATCH] =?UTF-8?q?feat=EF=BC=9A=E6=89=8B=E5=8A=A8=E5=88=AE?= =?UTF-8?q?=E5=89=8A=E6=97=B6=E5=BC=BA=E5=88=B6=E8=A6=86=E7=9B=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/endpoints/download.py | 2 +- app/api/endpoints/media.py | 2 +- app/chain/media.py | 3 ++- app/chain/transfer.py | 19 +++++++++++++------ app/schemas/transfer.py | 1 + 5 files changed, 18 insertions(+), 9 deletions(-) diff --git a/app/api/endpoints/download.py b/app/api/endpoints/download.py index f87fedd6..8d4193fb 100644 --- a/app/api/endpoints/download.py +++ b/app/api/endpoints/download.py @@ -17,7 +17,7 @@ router = APIRouter() @router.get("/", summary="正在下载", response_model=List[schemas.DownloadingTorrent]) -def list( +def current( name: str = None, _: schemas.TokenPayload = Depends(verify_token)) -> Any: """ diff --git a/app/api/endpoints/media.py b/app/api/endpoints/media.py index 51341978..792726f5 100644 --- a/app/api/endpoints/media.py +++ b/app/api/endpoints/media.py @@ -117,7 +117,7 @@ def scrape(fileitem: schemas.FileItem, if not scrape_path.exists(): return schemas.Response(success=False, message="刮削路径不存在") # 手动刮削 - chain.scrape_metadata(fileitem=fileitem, meta=meta, mediainfo=mediainfo) + chain.scrape_metadata(fileitem=fileitem, meta=meta, mediainfo=mediainfo, overwrite=True) return schemas.Response(success=True, message=f"{fileitem.path} 刮削完成") diff --git a/app/chain/media.py b/app/chain/media.py index e61f84c1..c1f77044 100644 --- a/app/chain/media.py +++ b/app/chain/media.py @@ -307,6 +307,7 @@ class MediaChain(ChainBase, metaclass=Singleton): fileitem: FileItem = event_data.get("fileitem") meta: MetaBase = event_data.get("meta") mediainfo: MediaInfo = event_data.get("mediainfo") + overwrite = event_data.get("overwrite", False) if not fileitem: return # 刮削锁 @@ -316,7 +317,7 @@ class MediaChain(ChainBase, metaclass=Singleton): scraping_files.append(fileitem.path) try: # 执行刮削 - self.scrape_metadata(fileitem=fileitem, meta=meta, mediainfo=mediainfo) + self.scrape_metadata(fileitem=fileitem, meta=meta, mediainfo=mediainfo, overwrite=overwrite) finally: # 释放锁 with scraping_lock: diff --git a/app/chain/transfer.py b/app/chain/transfer.py index 603c9821..10af8bd3 100644 --- a/app/chain/transfer.py +++ b/app/chain/transfer.py @@ -487,7 +487,8 @@ class TransferChain(ChainBase, metaclass=Singleton): self.eventmanager.send_event(EventType.MetadataScrape, { 'meta': task.meta, 'mediainfo': task.mediainfo, - 'fileitem': transferinfo.target_diritem + 'fileitem': transferinfo.target_diritem, + 'overwrite': True if task.manual else False }) # 移除已完成的任务 @@ -894,7 +895,8 @@ class TransferChain(ChainBase, metaclass=Singleton): library_type_folder: bool = None, library_category_folder: bool = None, season: int = None, epformat: EpisodeFormat = None, min_filesize: int = 0, downloader: str = None, download_hash: str = None, - force: bool = False, background: bool = True) -> Tuple[bool, str]: + force: bool = False, background: bool = True, + manual: bool = False) -> Tuple[bool, str]: """ 执行一个复杂目录的整理操作 :param fileitem: 文件项 @@ -914,6 +916,7 @@ class TransferChain(ChainBase, metaclass=Singleton): :param download_hash: 下载记录hash :param force: 是否强制整理 :param background: 是否后台运行 + :param manual: 是否手动整理 返回:成功标识,错误信息 """ @@ -1091,7 +1094,8 @@ class TransferChain(ChainBase, metaclass=Singleton): library_category_folder=library_category_folder, downloader=downloader, download_hash=download_hash, - download_history=download_history + download_history=download_history, + manual=manual ) if background: self.put_to_queue( @@ -1207,7 +1211,8 @@ class TransferChain(ChainBase, metaclass=Singleton): mediainfo=mediainfo, download_hash=history.download_hash, force=True, - background=False) + background=False, + manual=True) if not state: return False, errmsg @@ -1276,7 +1281,8 @@ class TransferChain(ChainBase, metaclass=Singleton): library_type_folder=library_type_folder, library_category_folder=library_category_folder, force=force, - background=background + background=background, + manual=True ) if not state: return False, errmsg @@ -1297,7 +1303,8 @@ class TransferChain(ChainBase, metaclass=Singleton): library_type_folder=library_type_folder, library_category_folder=library_category_folder, force=force, - background=background) + background=background, + manual=True) return state, errmsg def send_transfer_message(self, meta: MetaBase, mediainfo: MediaInfo, diff --git a/app/schemas/transfer.py b/app/schemas/transfer.py index d7dcca2f..be08a046 100644 --- a/app/schemas/transfer.py +++ b/app/schemas/transfer.py @@ -62,6 +62,7 @@ class TransferTask(BaseModel): downloader: Optional[str] = None download_hash: Optional[str] = None download_history: Optional[DownloadHistory] = None + manual: Optional[bool] = False def to_dict(self): """