From 528be1adbb801e6ed21364273d4e23e0b9ea1bb8 Mon Sep 17 00:00:00 2001 From: thsrite Date: Thu, 27 Jun 2024 16:02:39 +0800 Subject: [PATCH] =?UTF-8?q?fix=20=E4=BB=85=E6=A3=80=E6=9F=A5=E6=A8=A1?= =?UTF-8?q?=E5=BC=8F=E4=B8=8B=EF=BC=8C=E9=A2=84=E8=A7=88=E6=93=8D=E4=BD=9C?= =?UTF-8?q?=E4=B8=8D=E4=BC=9A=E5=88=A0=E9=99=A4=E4=BB=BB=E4=BD=95=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- plugins/libraryduplicatecheck/__init__.py | 49 ++++++++++++++++------- 1 file changed, 34 insertions(+), 15 deletions(-) diff --git a/plugins/libraryduplicatecheck/__init__.py b/plugins/libraryduplicatecheck/__init__.py index ce806b5..3ef9ab5 100644 --- a/plugins/libraryduplicatecheck/__init__.py +++ b/plugins/libraryduplicatecheck/__init__.py @@ -249,9 +249,9 @@ class LibraryDuplicateCheck(_PluginBase): # Decide which file to keep based on criteria (e.g., file size or creation date) keep_file = self.__choose_file_to_keep(paths, retain_type) - keep_cloud_file = os.readlink(keep_file) - logger.info(f"文件保留规则:{str(retain_type)} Keeping: {keep_file}") + keep_cloud_file = os.readlink(str(keep_file)) + # Delete the other duplicate files (if needed) for path in paths: if (Path(path).exists() or os.path.islink(path)) and str(path) != str(keep_file): @@ -259,23 +259,21 @@ class LibraryDuplicateCheck(_PluginBase): delete_duplicate_files += 1 self.__delete_duplicate_file(duplicate_file=path, paths=paths, - keep_file=keep_file, - file_type="监控", - retain_type=retain_type) + keep_file=str(keep_file), + file_type="监控") # 同步删除软连接源目录 if cloud_file and Path(cloud_file).exists() and self._delete_softlink: delete_cloud_files += 1 self.__delete_duplicate_file(duplicate_file=cloud_file, paths=paths, keep_file=keep_cloud_file, - file_type="云盘", - retain_type=retain_type) + file_type="云盘") else: logger.info(f"'{name}' No Duplicate video files.") return duplicate_files, delete_duplicate_files, delete_cloud_files - def __delete_duplicate_file(self, duplicate_file, paths, keep_file, file_type, retain_type): + def __delete_duplicate_file(self, duplicate_file, paths, keep_file, file_type): """ 删除重复文件 """ @@ -295,7 +293,7 @@ class LibraryDuplicateCheck(_PluginBase): # 说明两个重名的同名,删除非keep媒体文件,保留刮削文件 for file in media_files: if str(file) != str(keep_file): - if str(retain_type) != "仅检查": + if str(self._retain_type) != "仅检查": Path(file).unlink() logger.info(f"{file_type}文件 {file} 已删除") else: @@ -303,7 +301,7 @@ class LibraryDuplicateCheck(_PluginBase): else: for file in files: if str(file) != str(keep_file): - if str(retain_type) != "仅检查": + if str(self._retain_type) != "仅检查": Path(file).unlink() logger.info(f"{file_type}文件 {file} 已删除") else: @@ -312,15 +310,15 @@ class LibraryDuplicateCheck(_PluginBase): # 删除thumb图片 thumb_file = cloud_file_path.parent / (cloud_file_path.stem + "-thumb.jpg") if thumb_file.exists(): - if str(retain_type) != "仅检查": + if str(self._retain_type) != "仅检查": thumb_file.unlink() logger.info(f"{file_type}文件 {thumb_file} 已删除") else: logger.warning(f"{file_type}文件 {thumb_file} 将被删除") - self.__rmtree(Path(duplicate_file), file_type, retain_type) + self.__rmtree(Path(duplicate_file), file_type) - def __rmtree(self, path: Path, file_type: str, retain_type: str): + def __rmtree(self, path: Path, file_type: str): """ 删除目录及其子目录 """ @@ -335,7 +333,7 @@ class LibraryDuplicateCheck(_PluginBase): self._rmt_mediaext.split(",")]): if parent_path.exists(): # 当前路径下没有媒体文件则删除 - if str(retain_type) != "仅检查": + if str(self._retain_type) != "仅检查": shutil.rmtree(parent_path) logger.warn(f"{file_type}目录 {parent_path} 已删除") else: @@ -514,7 +512,7 @@ class LibraryDuplicateCheck(_PluginBase): 'multiple': False, 'chips': True, 'model': 'retain_type', - 'label': '质量', + 'label': '保留规则', 'items': [ {'title': '仅检查', 'value': '仅检查'}, {'title': '保留体积最小', 'value': '保留体积最小'}, @@ -618,6 +616,27 @@ class LibraryDuplicateCheck(_PluginBase): ] } ] + }, + { + 'component': 'VRow', + 'content': [ + { + 'component': 'VCol', + 'props': { + 'cols': 12, + }, + 'content': [ + { + 'component': 'VAlert', + 'props': { + 'type': 'info', + 'variant': 'tonal', + 'text': '检查路径自定义配置`$保留规则`且插件保留规则为`仅检查`时,将会预览操作而不删除重复文件。' + } + } + ] + } + ] } ] }