mirror of
https://github.com/jxxghp/MoviePilot.git
synced 2026-09-07 00:16:57 +08:00
fix delete_media_file
This commit is contained in:
+35
-15
@@ -137,28 +137,43 @@ class StorageChain(ChainBase):
|
|||||||
"""
|
"""
|
||||||
删除媒体文件,以及不含媒体文件的目录
|
删除媒体文件,以及不含媒体文件的目录
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
def __is_bluray_dir(_fileitem: schemas.FileItem) -> bool:
|
||||||
|
"""
|
||||||
|
检查是否蓝光目录
|
||||||
|
"""
|
||||||
|
_dir_files = self.list_files(fileitem=_fileitem, recursion=False)
|
||||||
|
if _dir_files:
|
||||||
|
for _f in _dir_files:
|
||||||
|
if _f.type == "dir" and _f.name in ["BDMV", "CERTIFICATE"]:
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
|
||||||
media_exts = settings.RMT_MEDIAEXT + settings.DOWNLOAD_TMPEXT
|
media_exts = settings.RMT_MEDIAEXT + settings.DOWNLOAD_TMPEXT
|
||||||
if fileitem.path == "/" or len(Path(fileitem.path).parts) <= 2:
|
if fileitem.path == "/" or len(Path(fileitem.path).parts) <= 2:
|
||||||
logger.warn(f"【{fileitem.storage}】{fileitem.path} 根目录或一级目录不允许删除")
|
logger.warn(f"【{fileitem.storage}】{fileitem.path} 根目录或一级目录不允许删除")
|
||||||
return False
|
return False
|
||||||
if fileitem.type == "dir":
|
if fileitem.type == "dir":
|
||||||
# 本身是目录
|
# 本身是目录
|
||||||
if _blue_dir := self.list_files(fileitem=fileitem, recursion=False):
|
if __is_bluray_dir(fileitem):
|
||||||
# 删除蓝光目录
|
logger.warn(f"正在删除蓝光原盘目录:【{fileitem.storage}】{fileitem.path}")
|
||||||
for _f in _blue_dir:
|
if not self.delete_file(fileitem):
|
||||||
if _f.type == "dir" and _f.name in ["BDMV", "CERTIFICATE"]:
|
logger.warn(f"【{fileitem.storage}】{fileitem.path} 删除失败")
|
||||||
logger.warn(f"【{fileitem.storage}】{_f.path} 删除蓝光目录")
|
return False
|
||||||
self.delete_file(_f)
|
elif self.any_files(fileitem, extensions=media_exts) is False:
|
||||||
if self.any_files(fileitem, extensions=media_exts) is False:
|
logger.warn(f"【{fileitem.storage}】{fileitem.path} 不存在其它媒体文件,正在删除空目录")
|
||||||
logger.warn(f"【{fileitem.storage}】{fileitem.path} 不存在其它媒体文件,删除空目录")
|
if not self.delete_file(fileitem):
|
||||||
return self.delete_file(fileitem)
|
logger.warn(f"【{fileitem.storage}】{fileitem.path} 删除失败")
|
||||||
return False
|
return False
|
||||||
|
# 不处理父目录
|
||||||
|
return True
|
||||||
elif delete_self:
|
elif delete_self:
|
||||||
# 本身是文件
|
# 本身是文件,需要删除文件
|
||||||
logger.warn(f"正在删除【{fileitem.storage}】{fileitem.path}")
|
logger.warn(f"正在删除文件【{fileitem.storage}】{fileitem.path}")
|
||||||
if not self.delete_file(fileitem):
|
if not self.delete_file(fileitem):
|
||||||
logger.warn(f"【{fileitem.storage}】{fileitem.path} 删除失败")
|
logger.warn(f"【{fileitem.storage}】{fileitem.path} 删除失败")
|
||||||
return False
|
return False
|
||||||
|
|
||||||
if mtype:
|
if mtype:
|
||||||
# 重命名格式
|
# 重命名格式
|
||||||
rename_format = settings.TV_RENAME_FORMAT \
|
rename_format = settings.TV_RENAME_FORMAT \
|
||||||
@@ -167,11 +182,14 @@ class StorageChain(ChainBase):
|
|||||||
rename_format_level = len(rename_format.split("/")) - 1
|
rename_format_level = len(rename_format.split("/")) - 1
|
||||||
if rename_format_level < 1:
|
if rename_format_level < 1:
|
||||||
return True
|
return True
|
||||||
# 处理上级目录
|
# 处理媒体文件根目录
|
||||||
dir_item = self.get_file_item(storage=fileitem.storage,
|
dir_item = self.get_file_item(storage=fileitem.storage,
|
||||||
path=Path(fileitem.path).parents[rename_format_level - 1])
|
path=Path(fileitem.path).parents[rename_format_level - 1])
|
||||||
else:
|
else:
|
||||||
|
# 处理上级目录
|
||||||
dir_item = self.get_parent_item(fileitem)
|
dir_item = self.get_parent_item(fileitem)
|
||||||
|
|
||||||
|
# 检查和删除上级目录
|
||||||
if dir_item and len(Path(dir_item.path).parts) > 2:
|
if dir_item and len(Path(dir_item.path).parts) > 2:
|
||||||
# 如何目录是所有下载目录、媒体库目录的上级,则不处理
|
# 如何目录是所有下载目录、媒体库目录的上级,则不处理
|
||||||
for d in self.directoryhelper.get_dirs():
|
for d in self.directoryhelper.get_dirs():
|
||||||
@@ -183,7 +201,9 @@ class StorageChain(ChainBase):
|
|||||||
return True
|
return True
|
||||||
# 不存在其他媒体文件,删除空目录
|
# 不存在其他媒体文件,删除空目录
|
||||||
if self.any_files(dir_item, extensions=media_exts) is False:
|
if self.any_files(dir_item, extensions=media_exts) is False:
|
||||||
logger.warn(f"【{dir_item.storage}】{dir_item.path} 不存在其它媒体文件,删除空目录")
|
logger.warn(f"【{dir_item.storage}】{dir_item.path} 不存在其它媒体文件,正在删除空目录")
|
||||||
return self.delete_file(dir_item)
|
if not self.delete_file(dir_item):
|
||||||
|
logger.warn(f"【{dir_item.storage}】{dir_item.path} 删除失败")
|
||||||
|
return False
|
||||||
|
|
||||||
return True
|
return True
|
||||||
|
|||||||
Reference in New Issue
Block a user