From e9ee9dbce15fff9e2dcd17521080d830a9fcc2cd Mon Sep 17 00:00:00 2001 From: jxxghp Date: Thu, 28 Sep 2023 08:08:55 +0800 Subject: [PATCH] fix #676 --- app/utils/path_utils.py | 155 ---------------------------------------- app/utils/system.py | 2 +- 2 files changed, 1 insertion(+), 156 deletions(-) delete mode 100644 app/utils/path_utils.py diff --git a/app/utils/path_utils.py b/app/utils/path_utils.py deleted file mode 100644 index 5f02faef..00000000 --- a/app/utils/path_utils.py +++ /dev/null @@ -1,155 +0,0 @@ -import os - - -class PathUtils: - - @staticmethod - def get_dir_files(in_path, exts="", filesize=0, episode_format=None): - """ - 获得目录下的媒体文件列表List ,按后缀、大小、格式过滤 - """ - if not in_path: - return [] - if not os.path.exists(in_path): - return [] - ret_list = [] - if os.path.isdir(in_path): - for root, dirs, files in os.walk(in_path): - for file in files: - cur_path = os.path.join(root, file) - # 检查路径是否合法 - if PathUtils.is_invalid_path(cur_path): - continue - # 检查格式匹配 - if episode_format and not episode_format.match(file): - continue - # 检查后缀 - if exts and os.path.splitext(file)[-1].lower() not in exts: - continue - # 检查文件大小 - if filesize and os.path.getsize(cur_path) < filesize: - continue - # 命中 - if cur_path not in ret_list: - ret_list.append(cur_path) - else: - # 检查路径是否合法 - if PathUtils.is_invalid_path(in_path): - return [] - # 检查后缀 - if exts and os.path.splitext(in_path)[-1].lower() not in exts: - return [] - # 检查格式 - if episode_format and not episode_format.match(os.path.basename(in_path)): - return [] - # 检查文件大小 - if filesize and os.path.getsize(in_path) < filesize: - return [] - ret_list.append(in_path) - return ret_list - - @staticmethod - def get_dir_level1_files(in_path, exts=""): - """ - 查询目录下的文件(只查询一级) - """ - ret_list = [] - if not os.path.exists(in_path): - return [] - for file in os.listdir(in_path): - path = os.path.join(in_path, file) - if os.path.isfile(path): - if not exts or os.path.splitext(file)[-1].lower() in exts: - ret_list.append(path) - return ret_list - - @staticmethod - def get_dir_level1_medias(in_path, exts=""): - """ - 根据后缀,返回目录下所有的文件及文件夹列表(只查询一级) - """ - ret_list = [] - if not os.path.exists(in_path): - return [] - if os.path.isdir(in_path): - for file in os.listdir(in_path): - path = os.path.join(in_path, file) - if os.path.isfile(path): - if not exts or os.path.splitext(file)[-1].lower() in exts: - ret_list.append(path) - else: - ret_list.append(path) - else: - ret_list.append(in_path) - return ret_list - - @staticmethod - def is_invalid_path(path): - """ - 判断是否不能处理的路径 - """ - if not path: - return True - if path.find('/@Recycle/') != -1 or path.find('/#recycle/') != -1 or path.find('/.') != -1 or path.find( - '/@eaDir') != -1: - return True - return False - - @staticmethod - def is_path_in_path(path1, path2): - """ - 判断两个路径是否包含关系 path1 in path2 - """ - if not path1 or not path2: - return False - path1 = os.path.normpath(path1).replace("\\", "/") - path2 = os.path.normpath(path2).replace("\\", "/") - if path1 == path2: - return True - path = os.path.dirname(path2) - while True: - if path == path1: - return True - path = os.path.dirname(path) - if path == os.path.dirname(path): - break - return False - - @staticmethod - def get_bluray_dir(path): - """ - 判断是否蓝光原盘目录,是则返回原盘的根目录,否则返回空 - """ - if not path or not os.path.exists(path): - return None - if os.path.isdir(path): - if os.path.exists(os.path.join(path, "BDMV", "index.bdmv")): - return path - elif os.path.normpath(path).endswith("BDMV") \ - and os.path.exists(os.path.join(path, "index.bdmv")): - return os.path.dirname(path) - elif os.path.normpath(path).endswith("STREAM") \ - and os.path.exists(os.path.join(os.path.dirname(path), "index.bdmv")): - return PathUtils.get_parent_paths(path, 2) - else: - # 电视剧原盘下会存在多个目录形如:Spider Man 2021/DIsc1, Spider Man 2021/Disc2 - for level1 in PathUtils.get_dir_level1_medias(path): - if os.path.exists(os.path.join(level1, "BDMV", "index.bdmv")): - return path - return None - else: - if str(os.path.splitext(path)[-1]).lower() in [".m2ts", ".ts"] \ - and os.path.normpath(os.path.dirname(path)).endswith("STREAM") \ - and os.path.exists(os.path.join(PathUtils.get_parent_paths(path, 2), "index.bdmv")): - return PathUtils.get_parent_paths(path, 3) - else: - return None - - @staticmethod - def get_parent_paths(path, level: int = 1): - """ - 获取父目录路径,level为向上查找的层数 - """ - for lv in range(0, level): - path = os.path.dirname(path) - return path diff --git a/app/utils/system.py b/app/utils/system.py index 6c3d0ccd..3b198bf1 100644 --- a/app/utils/system.py +++ b/app/utils/system.py @@ -77,7 +77,7 @@ class SystemUtils: """ try: # link到当前目录并改名 - tmp_path = src.parent / dest.name + tmp_path = (src.parent / dest.name).with_suffix(".mp") tmp_path.hardlink_to(src) # 移动到目标目录 shutil.move(tmp_path, dest)