From a50269d71888627022b4d40fda6a6766fa2884d0 Mon Sep 17 00:00:00 2001 From: x1ao4 Date: Thu, 10 Jul 2025 01:15:28 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=89=A7=E9=9B=86=E5=91=BD?= =?UTF-8?q?=E5=90=8D=E6=A8=A1=E5=BC=8F=E4=B8=8B=E5=BF=BD=E7=95=A5=E5=90=8E?= =?UTF-8?q?=E7=BC=80=E5=8A=9F=E8=83=BD=E5=A4=B1=E6=95=88=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98=E5=B9=B6=E4=BC=98=E5=8C=96=E4=BE=A7=E8=BE=B9=E6=A0=8F?= =?UTF-8?q?=E9=83=A8=E5=88=86=E5=86=85=E5=AE=B9=E7=9A=84=E6=98=BE=E7=A4=BA?= =?UTF-8?q?=E6=95=88=E6=9E=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/static/css/main.css | 6 ++--- quark_auto_save.py | 59 ++++++++++++++++++++++++++++++++++++----- 2 files changed, 55 insertions(+), 10 deletions(-) diff --git a/app/static/css/main.css b/app/static/css/main.css index 99bc8db..2666e50 100644 --- a/app/static/css/main.css +++ b/app/static/css/main.css @@ -281,7 +281,7 @@ main div[v-if="activeTab === 'config'"] .row.title:first-child { left: 0; z-index: 100; padding: 54px 0 0; - box-shadow: inset -1px 0 0 rgba(0, 0, 0, .1); + box-shadow: inset -1px 0 0 rgba(0, 0, 0, .088); transition: none; /* 禁用动画效果 */ overflow-x: hidden; /* 防止水平滚动条 */ } @@ -2137,7 +2137,7 @@ div.jsoneditor-tree button.jsoneditor-button:focus { /* 侧边栏菜单项图标样式 */ .sidebar .nav-link .bi-list-ul { - font-size: 1.09rem; + font-size: 1.1rem; position: relative; top: 0.5px; /* 向下微调 */ } @@ -2149,7 +2149,7 @@ div.jsoneditor-tree button.jsoneditor-button:focus { } .sidebar .nav-link .bi-clock-history { - font-size: 1rem; + font-size: 1.015rem; } .sidebar .nav-link .bi-archive { diff --git a/quark_auto_save.py b/quark_auto_save.py index 591c87d..80606a1 100644 --- a/quark_auto_save.py +++ b/quark_auto_save.py @@ -2251,8 +2251,17 @@ class Quark: else: target_name = episode_pattern.replace("[]", f"{episode_num:02d}") + file_ext - # 检查目标文件名是否已存在 - target_exists = any(dir_file["file_name"] == target_name for dir_file in dir_file_list) + # 检查目标文件名是否已存在,支持忽略后缀选项 + if task.get("ignore_extension", False): + # 忽略后缀模式:只比较文件名部分,不比较扩展名 + target_name_base = os.path.splitext(target_name)[0] + target_exists = any( + os.path.splitext(dir_file["file_name"])[0] == target_name_base for dir_file in dir_file_list + ) + else: + # 不忽略后缀模式:完整文件名必须匹配 + target_exists = any(dir_file["file_name"] == target_name for dir_file in dir_file_list) + if target_exists: is_duplicate = True @@ -2980,7 +2989,19 @@ class Quark: else: save_name = sequence_pattern.replace("{}", f"{current_sequence:02d}") + file_ext - if save_name != dir_file["file_name"] and save_name not in dir_file_name_list: + # 检查是否需要重命名,支持忽略后缀选项 + name_conflict = False + if task.get("ignore_extension", False): + # 忽略后缀模式:只比较文件名部分,不比较扩展名 + save_name_base = os.path.splitext(save_name)[0] + name_conflict = any( + os.path.splitext(existing_name)[0] == save_name_base for existing_name in dir_file_name_list + ) + else: + # 不忽略后缀模式:完整文件名必须匹配 + name_conflict = save_name in dir_file_name_list + + if save_name != dir_file["file_name"] and not name_conflict: # 收集重命名对,包含原始文件信息以便排序 renamed_pairs.append((dir_file, save_name, current_sequence)) dir_file_name_list.append(save_name) @@ -3469,8 +3490,19 @@ class Quark: # 执行重命名操作,但不立即打印日志 for dir_file, new_name, _ in rename_operations: - # 防止重名 - if new_name not in [f["file_name"] for f in dir_file_list]: + # 防止重名,支持忽略后缀选项 + name_conflict = False + if task.get("ignore_extension", False): + # 忽略后缀模式:只比较文件名部分,不比较扩展名 + new_name_base = os.path.splitext(new_name)[0] + name_conflict = any( + os.path.splitext(f["file_name"])[0] == new_name_base for f in dir_file_list + ) + else: + # 不忽略后缀模式:完整文件名必须匹配 + name_conflict = new_name in [f["file_name"] for f in dir_file_list] + + if not name_conflict: try: rename_return = self.rename(dir_file["fid"], new_name) if rename_return["code"] == 0: @@ -3626,8 +3658,21 @@ class Quark: # 执行重命名操作,并收集日志 already_renamed_files = set() # 用于防止重复重命名 for dir_file, new_name in rename_operations: - # 检查是否会导致重名 - if new_name not in [f["file_name"] for f in dir_file_list] and new_name not in already_renamed_files: + # 检查是否会导致重名,支持忽略后缀选项 + name_conflict = False + if task.get("ignore_extension", False): + # 忽略后缀模式:只比较文件名部分,不比较扩展名 + new_name_base = os.path.splitext(new_name)[0] + name_conflict = any( + os.path.splitext(f["file_name"])[0] == new_name_base for f in dir_file_list + ) or any( + os.path.splitext(existing_name)[0] == new_name_base for existing_name in already_renamed_files + ) + else: + # 不忽略后缀模式:完整文件名必须匹配 + name_conflict = new_name in [f["file_name"] for f in dir_file_list] or new_name in already_renamed_files + + if not name_conflict: try: rename_return = self.rename(dir_file["fid"], new_name) if rename_return["code"] == 0: