diff --git a/app/api/endpoints/transfer.py b/app/api/endpoints/transfer.py index 748f8274..64bd05ef 100644 --- a/app/api/endpoints/transfer.py +++ b/app/api/endpoints/transfer.py @@ -28,6 +28,7 @@ def manual_transfer(path: str = None, episode_part: str = None, episode_offset: int = 0, min_filesize: int = 0, + scrape: bool = None, db: Session = Depends(get_db), _: schemas.TokenPayload = Depends(verify_token)) -> Any: """ @@ -45,6 +46,7 @@ def manual_transfer(path: str = None, :param episode_part: 剧集识别分集信息 :param episode_offset: 剧集识别偏移量 :param min_filesize: 最小文件大小(MB) + :param scrape: 是否刮削元数据 :param db: 数据库 :param _: Token校验 """ @@ -99,6 +101,7 @@ def manual_transfer(path: str = None, transfer_type=transfer_type, epformat=epformat, min_filesize=min_filesize, + scrape=scrape, force=force ) # 失败 diff --git a/app/chain/__init__.py b/app/chain/__init__.py index cb4c7c75..677cce58 100644 --- a/app/chain/__init__.py +++ b/app/chain/__init__.py @@ -358,7 +358,8 @@ class ChainBase(metaclass=ABCMeta): def transfer(self, path: Path, meta: MetaBase, mediainfo: MediaInfo, transfer_type: str, target: Path = None, - episodes_info: List[TmdbEpisode] = None) -> Optional[TransferInfo]: + episodes_info: List[TmdbEpisode] = None, + scrape: bool = None) -> Optional[TransferInfo]: """ 文件转移 :param path: 文件路径 @@ -367,10 +368,12 @@ class ChainBase(metaclass=ABCMeta): :param transfer_type: 转移模式 :param target: 转移目标路径 :param episodes_info: 当前季的全部集信息 + :param scrape: 是否刮削元数据 :return: {path, target_path, message} """ return self.run_module("transfer", path=path, meta=meta, mediainfo=mediainfo, - transfer_type=transfer_type, target=target, episodes_info=episodes_info) + transfer_type=transfer_type, target=target, episodes_info=episodes_info, + scrape=scrape) def transfer_completed(self, hashs: Union[str, list], path: Path = None, downloader: str = settings.DEFAULT_DOWNLOADER) -> None: diff --git a/app/chain/transfer.py b/app/chain/transfer.py index ba588d5c..b50351dc 100644 --- a/app/chain/transfer.py +++ b/app/chain/transfer.py @@ -86,7 +86,8 @@ class TransferChain(ChainBase): mediainfo: MediaInfo = None, download_hash: str = None, target: Path = None, transfer_type: str = None, season: int = None, epformat: EpisodeFormat = None, - min_filesize: int = 0, force: bool = False) -> Tuple[bool, str]: + min_filesize: int = 0, scrape: bool = None, + force: bool = False) -> Tuple[bool, str]: """ 执行一个复杂目录的转移操作 :param path: 待转移目录或文件 @@ -98,6 +99,7 @@ class TransferChain(ChainBase): :param season: 季 :param epformat: 剧集格式 :param min_filesize: 最小文件大小(MB) + :param scrape: 是否刮削元数据 :param force: 是否强制转移 返回:成功标识,错误信息 """ @@ -300,7 +302,8 @@ class TransferChain(ChainBase): path=file_path, transfer_type=transfer_type, target=target, - episodes_info=episodes_info) + episodes_info=episodes_info, + scrape=scrape) if not transferinfo: logger.error("文件转移模块运行失败") return False, "文件转移模块运行失败" @@ -561,6 +564,7 @@ class TransferChain(ChainBase): transfer_type: str = None, epformat: EpisodeFormat = None, min_filesize: int = 0, + scrape: bool = None, force: bool = False) -> Tuple[bool, Union[str, list]]: """ 手动转移,支持复杂条件,带进度显示 @@ -573,6 +577,7 @@ class TransferChain(ChainBase): :param transfer_type: 转移类型 :param epformat: 剧集格式 :param min_filesize: 最小文件大小(MB) + :param scrape: 是否刮削元数据 :param force: 是否强制转移 """ logger.info(f"手动转移:{in_path} ...") @@ -597,6 +602,7 @@ class TransferChain(ChainBase): season=season, epformat=epformat, min_filesize=min_filesize, + scrape=scrape, force=force ) if not state: diff --git a/app/modules/filetransfer/__init__.py b/app/modules/filetransfer/__init__.py index 27094d59..40c21521 100644 --- a/app/modules/filetransfer/__init__.py +++ b/app/modules/filetransfer/__init__.py @@ -82,7 +82,8 @@ class FileTransferModule(_ModuleBase): def transfer(self, path: Path, meta: MetaBase, mediainfo: MediaInfo, transfer_type: str, target: Path = None, - episodes_info: List[TmdbEpisode] = None) -> TransferInfo: + episodes_info: List[TmdbEpisode] = None, + scrape: bool = None) -> TransferInfo: """ 文件转移 :param path: 文件路径 @@ -91,6 +92,7 @@ class FileTransferModule(_ModuleBase): :param transfer_type: 转移方式 :param target: 目标路径 :param episodes_info: 当前季的全部集信息 + :param scrape: 是否刮削元数据 :return: {path, target_path, message} """ # 获取目标路径 @@ -103,7 +105,10 @@ class FileTransferModule(_ModuleBase): path=path, message="未找到有效的媒体库目录") # 拼装媒体库一、二级子目录 - need_scrape = dir_info.scrape + if scrape is None: + need_scrape = dir_info.scrape + else: + need_scrape = scrape target = self.__get_dest_dir(mediainfo=mediainfo, target_dir=dir_info) else: # 指定了目的目录