mirror of
https://github.com/jxxghp/MoviePilot.git
synced 2026-09-05 07:27:15 +08:00
fix transfer
This commit is contained in:
@@ -28,11 +28,11 @@ class StorageChain(ChainBase):
|
|||||||
"""
|
"""
|
||||||
return self.run_module("check_login", storage=storage, **kwargs)
|
return self.run_module("check_login", storage=storage, **kwargs)
|
||||||
|
|
||||||
def list_files(self, fileitem: schemas.FileItem) -> Optional[List[schemas.FileItem]]:
|
def list_files(self, fileitem: schemas.FileItem, recursion: bool = False) -> Optional[List[schemas.FileItem]]:
|
||||||
"""
|
"""
|
||||||
查询当前目录下所有目录和文件
|
查询当前目录下所有目录和文件
|
||||||
"""
|
"""
|
||||||
return self.run_module("list_files", fileitem=fileitem)
|
return self.run_module("list_files", fileitem=fileitem, recursion=recursion)
|
||||||
|
|
||||||
def create_folder(self, fileitem: schemas.FileItem, name: str) -> Optional[schemas.FileItem]:
|
def create_folder(self, fileitem: schemas.FileItem, name: str) -> Optional[schemas.FileItem]:
|
||||||
"""
|
"""
|
||||||
|
|||||||
+11
-23
@@ -191,27 +191,14 @@ class TransferChain(ChainBase):
|
|||||||
# 跳过数量
|
# 跳过数量
|
||||||
skip_num = 0
|
skip_num = 0
|
||||||
|
|
||||||
# 目录所有文件清单
|
|
||||||
transfer_files = self.storagechain.list_files(fileitem=fileitem)
|
|
||||||
if transfer_files:
|
|
||||||
# 过滤后缀和大小
|
|
||||||
transfer_files = [f for f in transfer_files
|
|
||||||
if (f".{f.extension.lower()}" in self.all_exts
|
|
||||||
and (not min_filesize or f.size > min_filesize * 1024 * 1024))]
|
|
||||||
if formaterHandler:
|
|
||||||
# 有集自定义格式,过滤文件
|
|
||||||
transfer_files = [f for f in transfer_files if formaterHandler.match(f.name)]
|
|
||||||
else:
|
|
||||||
return False, f"{fileitem.name} 没有找到可转移的媒体文件"
|
|
||||||
|
|
||||||
# 总文件数
|
|
||||||
total_num = len(transfer_files)
|
|
||||||
self.progress.update(value=0,
|
|
||||||
text=f"开始转移 {fileitem.path},共 {total_num} 个文件 ...",
|
|
||||||
key=ProgressKey.FileTransfer)
|
|
||||||
|
|
||||||
# 获取待转移路径清单
|
# 获取待转移路径清单
|
||||||
trans_items = self.__get_trans_fileitems(fileitem)
|
trans_items = self.__get_trans_fileitems(fileitem)
|
||||||
|
# 总文件数
|
||||||
|
total_num = len(trans_items)
|
||||||
|
self.progress.update(value=0,
|
||||||
|
text=f"开始转移 {fileitem.path},共 {total_num} 个文件或子目录 ...",
|
||||||
|
key=ProgressKey.FileTransfer)
|
||||||
|
|
||||||
if not trans_items:
|
if not trans_items:
|
||||||
logger.warn(f"{fileitem.path} 没有找到可转移的媒体文件")
|
logger.warn(f"{fileitem.path} 没有找到可转移的媒体文件")
|
||||||
return False, f"{fileitem.name} 没有找到可转移的媒体文件"
|
return False, f"{fileitem.name} 没有找到可转移的媒体文件"
|
||||||
@@ -231,15 +218,16 @@ class TransferChain(ChainBase):
|
|||||||
# 如果是目录且不是⼀蓝光原盘,获取所有文件并转移
|
# 如果是目录且不是⼀蓝光原盘,获取所有文件并转移
|
||||||
if (trans_item.type == "dir"
|
if (trans_item.type == "dir"
|
||||||
and not (trans_item.storage == "local" and not SystemUtils.is_bluray_dir(item_path))):
|
and not (trans_item.storage == "local" and not SystemUtils.is_bluray_dir(item_path))):
|
||||||
# 遍历获取下载目录所有文件
|
# 遍历获取下载目录所有文件(递归)
|
||||||
file_items = self.storagechain.list_files(trans_item)
|
file_items = self.storagechain.list_files(trans_item, recursion=True)
|
||||||
if not file_items:
|
if not file_items:
|
||||||
continue
|
continue
|
||||||
# 过滤后缀和大小
|
# 过滤后缀和大小
|
||||||
file_items = [f for f in file_items
|
file_items = [f for f in file_items
|
||||||
if (f".{f.extension.lower()}" in self.all_exts
|
if f.extension and (f".{f.extension.lower()}" in self.all_exts
|
||||||
and (not min_filesize or f.size > min_filesize * 1024 * 1024))]
|
and (not min_filesize or f.size > min_filesize * 1024 * 1024))]
|
||||||
else:
|
else:
|
||||||
|
# 文件或蓝光目录
|
||||||
file_items = [trans_item]
|
file_items = [trans_item]
|
||||||
|
|
||||||
if formaterHandler:
|
if formaterHandler:
|
||||||
|
|||||||
@@ -140,17 +140,37 @@ class FileManagerModule(_ModuleBase):
|
|||||||
return None
|
return None
|
||||||
return storage_oper.check_login(**kwargs)
|
return storage_oper.check_login(**kwargs)
|
||||||
|
|
||||||
def list_files(self, fileitem: FileItem) -> Optional[List[FileItem]]:
|
def list_files(self, fileitem: FileItem, recursion: bool = False) -> Optional[List[FileItem]]:
|
||||||
"""
|
"""
|
||||||
浏览文件
|
浏览文件
|
||||||
:param fileitem: 源文件
|
:param fileitem: 源文件
|
||||||
:return: 文件列表
|
:param recursion: 是否递归,此时只浏览文件
|
||||||
|
:return: 文件项列表
|
||||||
"""
|
"""
|
||||||
storage_oper = self.__get_storage_oper(fileitem.storage)
|
storage_oper = self.__get_storage_oper(fileitem.storage)
|
||||||
if not storage_oper:
|
if not storage_oper:
|
||||||
logger.error(f"不支持 {fileitem.storage} 的文件浏览")
|
logger.error(f"不支持 {fileitem.storage} 的文件浏览")
|
||||||
return None
|
return None
|
||||||
return storage_oper.list(fileitem)
|
|
||||||
|
def __get_files(_item: FileItem, _r: bool = False):
|
||||||
|
"""
|
||||||
|
递归处理
|
||||||
|
"""
|
||||||
|
_items = storage_oper.list(_item)
|
||||||
|
if _items:
|
||||||
|
if _r:
|
||||||
|
for t in _items:
|
||||||
|
if t.type == "dir":
|
||||||
|
__get_files(t, _r)
|
||||||
|
else:
|
||||||
|
result.append(t)
|
||||||
|
else:
|
||||||
|
result.extend(_items)
|
||||||
|
# 返回结果
|
||||||
|
result = []
|
||||||
|
__get_files(fileitem, recursion)
|
||||||
|
|
||||||
|
return result
|
||||||
|
|
||||||
def create_folder(self, fileitem: FileItem, name: str) -> Optional[FileItem]:
|
def create_folder(self, fileitem: FileItem, name: str) -> Optional[FileItem]:
|
||||||
"""
|
"""
|
||||||
|
|||||||
Reference in New Issue
Block a user