fix
This commit is contained in:
parent
0133c6e60c
commit
8a98c65026
@ -46,7 +46,8 @@ def query_name(path: str, filetype: str,
|
|||||||
|
|
||||||
|
|
||||||
@router.post("/manual", summary="手动转移", response_model=schemas.Response)
|
@router.post("/manual", summary="手动转移", response_model=schemas.Response)
|
||||||
def manual_transfer(path: str = None,
|
def manual_transfer(storage: str = "local",
|
||||||
|
path: str = None,
|
||||||
logid: int = None,
|
logid: int = None,
|
||||||
target: str = None,
|
target: str = None,
|
||||||
tmdbid: int = None,
|
tmdbid: int = None,
|
||||||
@ -64,6 +65,7 @@ def manual_transfer(path: str = None,
|
|||||||
_: schemas.TokenPayload = Depends(verify_token)) -> Any:
|
_: schemas.TokenPayload = Depends(verify_token)) -> Any:
|
||||||
"""
|
"""
|
||||||
手动转移,文件或历史记录,支持自定义剧集识别格式
|
手动转移,文件或历史记录,支持自定义剧集识别格式
|
||||||
|
:param storage: 存储类型:local/aliyun/u115
|
||||||
:param path: 转移路径或文件
|
:param path: 转移路径或文件
|
||||||
:param logid: 转移历史记录ID
|
:param logid: 转移历史记录ID
|
||||||
:param target: 目标路径
|
:param target: 目标路径
|
||||||
@ -119,6 +121,7 @@ def manual_transfer(path: str = None,
|
|||||||
)
|
)
|
||||||
# 开始转移
|
# 开始转移
|
||||||
state, errormsg = transfer.manual_transfer(
|
state, errormsg = transfer.manual_transfer(
|
||||||
|
storage=storage,
|
||||||
in_path=in_path,
|
in_path=in_path,
|
||||||
target=target,
|
target=target,
|
||||||
tmdbid=tmdbid,
|
tmdbid=tmdbid,
|
||||||
|
@ -87,8 +87,8 @@ class TransferChain(ChainBase):
|
|||||||
mediainfo = None
|
mediainfo = None
|
||||||
|
|
||||||
# 执行转移
|
# 执行转移
|
||||||
self.do_transfer(path=torrent.path, mediainfo=mediainfo,
|
self.do_transfer(storage="local", path=torrent.path,
|
||||||
download_hash=torrent.hash)
|
mediainfo=mediainfo, download_hash=torrent.hash)
|
||||||
|
|
||||||
# 设置下载任务状态
|
# 设置下载任务状态
|
||||||
self.transfer_completed(hashs=torrent.hash, path=torrent.path)
|
self.transfer_completed(hashs=torrent.hash, path=torrent.path)
|
||||||
@ -96,14 +96,16 @@ class TransferChain(ChainBase):
|
|||||||
logger.info("下载器文件转移执行完成")
|
logger.info("下载器文件转移执行完成")
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def do_transfer(self, path: Path, meta: MetaBase = None,
|
def do_transfer(self, storage: str, path: Path,
|
||||||
mediainfo: MediaInfo = None, download_hash: str = None,
|
meta: MetaBase = None, mediainfo: MediaInfo = None,
|
||||||
|
download_hash: str = None,
|
||||||
target: Path = None, transfer_type: str = None,
|
target: Path = None, transfer_type: str = None,
|
||||||
season: int = None, epformat: EpisodeFormat = None,
|
season: int = None, epformat: EpisodeFormat = None,
|
||||||
min_filesize: int = 0, scrape: bool = None,
|
min_filesize: int = 0, scrape: bool = None,
|
||||||
force: bool = False) -> Tuple[bool, str]:
|
force: bool = False) -> Tuple[bool, str]:
|
||||||
"""
|
"""
|
||||||
执行一个复杂目录的转移操作
|
执行一个复杂目录的转移操作
|
||||||
|
:param storage: 存储器
|
||||||
:param path: 待转移目录或文件
|
:param path: 待转移目录或文件
|
||||||
:param meta: 元数据
|
:param meta: 元数据
|
||||||
:param mediainfo: 媒体信息
|
:param mediainfo: 媒体信息
|
||||||
@ -120,20 +122,36 @@ class TransferChain(ChainBase):
|
|||||||
if not transfer_type:
|
if not transfer_type:
|
||||||
transfer_type = settings.TRANSFER_TYPE
|
transfer_type = settings.TRANSFER_TYPE
|
||||||
|
|
||||||
# 获取待转移路径清单
|
# 自定义格式
|
||||||
trans_paths = self.__get_trans_paths(path)
|
|
||||||
if not trans_paths:
|
|
||||||
logger.warn(f"{path.name} 没有找到可转移的媒体文件")
|
|
||||||
return False, f"{path.name} 没有找到可转移的媒体文件"
|
|
||||||
|
|
||||||
# 有集自定义格式
|
|
||||||
formaterHandler = FormatParser(eformat=epformat.format,
|
formaterHandler = FormatParser(eformat=epformat.format,
|
||||||
details=epformat.detail,
|
details=epformat.detail,
|
||||||
part=epformat.part,
|
part=epformat.part,
|
||||||
offset=epformat.offset) if epformat else None
|
offset=epformat.offset) if epformat else None
|
||||||
|
|
||||||
|
# 整理屏蔽词
|
||||||
|
transfer_exclude_words = self.systemconfig.get(SystemConfigKey.TransferExcludeWords)
|
||||||
|
|
||||||
# 开始进度
|
# 开始进度
|
||||||
self.progress.start(ProgressKey.FileTransfer)
|
self.progress.start(ProgressKey.FileTransfer)
|
||||||
|
|
||||||
|
# 汇总错误信息
|
||||||
|
err_msgs: List[str] = []
|
||||||
|
# 总文件数
|
||||||
|
total_num = 0
|
||||||
|
# 已处理数量
|
||||||
|
processed_num = 0
|
||||||
|
# 失败数量
|
||||||
|
fail_num = 0
|
||||||
|
# 跳过数量
|
||||||
|
skip_num = 0
|
||||||
|
|
||||||
|
# 本地存储
|
||||||
|
if storage == "local":
|
||||||
|
# 获取待转移路径清单
|
||||||
|
trans_paths = self.__get_trans_paths(path)
|
||||||
|
if not trans_paths:
|
||||||
|
logger.warn(f"{path.name} 没有找到可转移的媒体文件")
|
||||||
|
return False, f"{path.name} 没有找到可转移的媒体文件"
|
||||||
# 目录所有文件清单
|
# 目录所有文件清单
|
||||||
transfer_files = SystemUtils.list_files(directory=path,
|
transfer_files = SystemUtils.list_files(directory=path,
|
||||||
extensions=settings.RMT_MEDIAEXT,
|
extensions=settings.RMT_MEDIAEXT,
|
||||||
@ -142,23 +160,12 @@ class TransferChain(ChainBase):
|
|||||||
# 有集自定义格式,过滤文件
|
# 有集自定义格式,过滤文件
|
||||||
transfer_files = [f for f in transfer_files if formaterHandler.match(f.name)]
|
transfer_files = [f for f in transfer_files if formaterHandler.match(f.name)]
|
||||||
|
|
||||||
# 汇总错误信息
|
|
||||||
err_msgs: List[str] = []
|
|
||||||
# 总文件数
|
# 总文件数
|
||||||
total_num = len(transfer_files)
|
total_num = len(transfer_files)
|
||||||
# 已处理数量
|
|
||||||
processed_num = 0
|
|
||||||
# 失败数量
|
|
||||||
fail_num = 0
|
|
||||||
# 跳过数量
|
|
||||||
skip_num = 0
|
|
||||||
self.progress.update(value=0,
|
self.progress.update(value=0,
|
||||||
text=f"开始转移 {path},共 {total_num} 个文件 ...",
|
text=f"开始转移 {path},共 {total_num} 个文件 ...",
|
||||||
key=ProgressKey.FileTransfer)
|
key=ProgressKey.FileTransfer)
|
||||||
|
|
||||||
# 整理屏蔽词
|
|
||||||
transfer_exclude_words = self.systemconfig.get(SystemConfigKey.TransferExcludeWords)
|
|
||||||
|
|
||||||
# 处理所有待转移目录或文件,默认一个转移路径或文件只有一个媒体信息
|
# 处理所有待转移目录或文件,默认一个转移路径或文件只有一个媒体信息
|
||||||
for trans_path in trans_paths:
|
for trans_path in trans_paths:
|
||||||
# 汇总季集清单
|
# 汇总季集清单
|
||||||
@ -412,6 +419,9 @@ class TransferChain(ChainBase):
|
|||||||
'mediainfo': media,
|
'mediainfo': media,
|
||||||
'transferinfo': transfer_info
|
'transferinfo': transfer_info
|
||||||
})
|
})
|
||||||
|
else:
|
||||||
|
# TODO 网盘整理
|
||||||
|
pass
|
||||||
|
|
||||||
# 结束进度
|
# 结束进度
|
||||||
logger.info(f"{path} 转移完成,共 {total_num} 个文件,"
|
logger.info(f"{path} 转移完成,共 {total_num} 个文件,"
|
||||||
@ -542,7 +552,8 @@ class TransferChain(ChainBase):
|
|||||||
self.delete_files(Path(history.dest))
|
self.delete_files(Path(history.dest))
|
||||||
|
|
||||||
# 强制转移
|
# 强制转移
|
||||||
state, errmsg = self.do_transfer(path=src_path,
|
state, errmsg = self.do_transfer(storage="local",
|
||||||
|
path=src_path,
|
||||||
mediainfo=mediainfo,
|
mediainfo=mediainfo,
|
||||||
download_hash=history.download_hash,
|
download_hash=history.download_hash,
|
||||||
force=True)
|
force=True)
|
||||||
@ -551,7 +562,9 @@ class TransferChain(ChainBase):
|
|||||||
|
|
||||||
return True, ""
|
return True, ""
|
||||||
|
|
||||||
def manual_transfer(self, in_path: Path,
|
def manual_transfer(self,
|
||||||
|
storage: str,
|
||||||
|
in_path: Path,
|
||||||
target: Path = None,
|
target: Path = None,
|
||||||
tmdbid: int = None,
|
tmdbid: int = None,
|
||||||
doubanid: str = None,
|
doubanid: str = None,
|
||||||
@ -564,6 +577,7 @@ class TransferChain(ChainBase):
|
|||||||
force: bool = False) -> Tuple[bool, Union[str, list]]:
|
force: bool = False) -> Tuple[bool, Union[str, list]]:
|
||||||
"""
|
"""
|
||||||
手动转移,支持复杂条件,带进度显示
|
手动转移,支持复杂条件,带进度显示
|
||||||
|
:param storage: 存储器
|
||||||
:param in_path: 源文件路径
|
:param in_path: 源文件路径
|
||||||
:param target: 目标路径
|
:param target: 目标路径
|
||||||
:param tmdbid: TMDB ID
|
:param tmdbid: TMDB ID
|
||||||
@ -591,6 +605,7 @@ class TransferChain(ChainBase):
|
|||||||
key=ProgressKey.FileTransfer)
|
key=ProgressKey.FileTransfer)
|
||||||
# 开始转移
|
# 开始转移
|
||||||
state, errmsg = self.do_transfer(
|
state, errmsg = self.do_transfer(
|
||||||
|
storage=storage,
|
||||||
path=in_path,
|
path=in_path,
|
||||||
mediainfo=mediainfo,
|
mediainfo=mediainfo,
|
||||||
target=target,
|
target=target,
|
||||||
@ -609,7 +624,8 @@ class TransferChain(ChainBase):
|
|||||||
return True, ""
|
return True, ""
|
||||||
else:
|
else:
|
||||||
# 没有输入TMDBID时,按文件识别
|
# 没有输入TMDBID时,按文件识别
|
||||||
state, errmsg = self.do_transfer(path=in_path,
|
state, errmsg = self.do_transfer(storage=storage,
|
||||||
|
path=in_path,
|
||||||
target=target,
|
target=target,
|
||||||
transfer_type=transfer_type,
|
transfer_type=transfer_type,
|
||||||
season=season,
|
season=season,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user