From 5383f61f3776d08df1b3de03d88444046639f634 Mon Sep 17 00:00:00 2001 From: x1ao4 Date: Fri, 20 Jun 2025 00:37:37 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=91=BD=E5=90=8D=E9=A2=84?= =?UTF-8?q?=E8=A7=88=E7=95=8C=E9=9D=A2=E7=9A=84=E9=87=8D=E5=91=BD=E5=90=8D?= =?UTF-8?q?=E6=8E=92=E5=BA=8F=E6=98=BE=E7=A4=BA=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/run.py | 5 ++++- app/templates/index.html | 31 +++++++++++++++++++++---------- 2 files changed, 25 insertions(+), 11 deletions(-) diff --git a/app/run.py b/app/run.py index 03fcab9..f4b16bd 100644 --- a/app/run.py +++ b/app/run.py @@ -680,7 +680,7 @@ def get_share_detail(): if any(word in item['file_name'] for word in filterwords_list): item["filtered"] = True - # 为每个文件生成新文件名 + # 为每个文件生成新文件名并存储剧集编号用于排序 for file in sorted_files: if not file.get("filtered"): # 获取文件扩展名 @@ -694,9 +694,12 @@ def get_share_detail(): file["file_name_re"] = f"{episode_num:02d}{file_ext}" else: file["file_name_re"] = episode_pattern.replace("[]", f"{episode_num:02d}") + file_ext + # 存储原始的剧集编号,用于数值排序 + file["episode_number"] = episode_num else: # 无法提取剧集号,标记为无法处理 file["file_name_re"] = "❌ 无法识别剧集号" + file["episode_number"] = 9999999 # 给一个很大的值,确保排在最后 return share_detail else: diff --git a/app/templates/index.html b/app/templates/index.html index 0138169..a9e5b3c 100644 --- a/app/templates/index.html +++ b/app/templates/index.html @@ -3212,14 +3212,13 @@ }, // 文件选择模态框的排序方法 sortFileList(field) { - // 如果点击了当前排序字段,则切换排序顺序 + // 切换排序方向 if (this.fileSelect.sortBy === field) { this.fileSelect.sortOrder = this.fileSelect.sortOrder === 'asc' ? 'desc' : 'asc'; } else { - // 如果点击了不同的字段,则设置为该字段并使用默认排序顺序 this.fileSelect.sortBy = field; - // 对于日期和重命名列使用降序,其他字段使用升序 - this.fileSelect.sortOrder = field === 'updated_at' || field === 'file_name_re' ? 'desc' : 'asc'; + // 默认降序(除了文件名外) + this.fileSelect.sortOrder = field === 'file_name' ? 'asc' : 'desc'; } // 按选定字段和顺序对文件列表进行排序 @@ -3235,9 +3234,15 @@ aValue = a.file_name.toLowerCase(); bValue = b.file_name.toLowerCase(); } else if (field === 'file_name_re') { - // 对于重命名列,使用重命名后的文件名进行排序 - aValue = (a.file_name_re || '').toLowerCase(); - bValue = (b.file_name_re || '').toLowerCase(); + // 对于重命名列,优先使用episode_number进行数值排序(如果存在) + if (a.episode_number !== undefined && b.episode_number !== undefined) { + aValue = a.episode_number; + bValue = b.episode_number; + } else { + // 否则使用重命名后的文件名进行字符串排序 + aValue = (a.file_name_re || '').toLowerCase(); + bValue = (b.file_name_re || '').toLowerCase(); + } } else if (field === 'size') { // 对于文件大小,使用数字进行排序 if (a.dir && b.dir) { @@ -3279,9 +3284,15 @@ aValue = a.file_name.toLowerCase(); bValue = b.file_name.toLowerCase(); } else if (field === 'file_name_re') { - // 对于重命名列,使用重命名后的文件名进行排序 - aValue = (a.file_name_re || '').toLowerCase(); - bValue = (b.file_name_re || '').toLowerCase(); + // 对于重命名列,优先使用episode_number进行数值排序(如果存在) + if (a.episode_number !== undefined && b.episode_number !== undefined) { + aValue = a.episode_number; + bValue = b.episode_number; + } else { + // 否则使用重命名后的文件名进行字符串排序 + aValue = (a.file_name_re || '').toLowerCase(); + bValue = (b.file_name_re || '').toLowerCase(); + } } else if (field === 'size') { // 对于文件大小,使用数字进行排序 if (a.dir && b.dir) {