diff --git a/app/run.py b/app/run.py index b052876..f0aeffa 100644 --- a/app/run.py +++ b/app/run.py @@ -864,9 +864,11 @@ def get_share_detail(): extension = os.path.splitext(file["file_name"])[1] # 从文件名中提取集号 episode_num = extract_episode_number(file["file_name"], episode_patterns=episode_patterns) - + if episode_num is not None: file["file_name_re"] = episode_pattern.replace("[]", f"{episode_num:02d}") + extension + # 添加episode_number字段用于前端排序 + file["episode_number"] = episode_num else: # 没有提取到集号,显示无法识别的提示 file["file_name_re"] = "× 无法识别剧集编号" @@ -1748,7 +1750,8 @@ def preview_rename(): preview_results.append({ "original_name": file["file_name"], "new_name": new_name, - "file_id": file["fid"] + "file_id": file["fid"], + "episode_number": episode_num # 添加集数字段用于前端排序 }) else: # 没有提取到集号,显示无法识别的提示 diff --git a/app/templates/index.html b/app/templates/index.html index 13713bb..3ffb377 100644 --- a/app/templates/index.html +++ b/app/templates/index.html @@ -3910,8 +3910,15 @@ let aValue, bValue; // 对于重命名列,优先使用episode_number进行数值排序(如果存在) if (a.episode_number !== undefined && b.episode_number !== undefined) { - aValue = a.episode_number; - bValue = b.episode_number; + // 确保进行数值比较 + aValue = parseInt(a.episode_number, 10); + bValue = parseInt(b.episode_number, 10); + + // 如果解析失败,回退到字符串比较 + if (isNaN(aValue) || isNaN(bValue)) { + aValue = String(a.episode_number); + bValue = String(b.episode_number); + } } else { // 否则使用重命名后的文件名进行拼音排序 aValue = pinyinPro.pinyin(a.file_name_re || '', { toneType: 'none', type: 'string' }).toLowerCase(); @@ -4009,8 +4016,15 @@ let aValue, bValue; // 对于重命名列,优先使用episode_number进行数值排序(如果存在) if (a.episode_number !== undefined && b.episode_number !== undefined) { - aValue = a.episode_number; - bValue = b.episode_number; + // 确保进行数值比较 + aValue = parseInt(a.episode_number, 10); + bValue = parseInt(b.episode_number, 10); + + // 如果解析失败,回退到字符串比较 + if (isNaN(aValue) || isNaN(bValue)) { + aValue = String(a.episode_number); + bValue = String(b.episode_number); + } } else { // 否则使用重命名后的文件名进行拼音排序 aValue = pinyinPro.pinyin(a.file_name_re || '', { toneType: 'none', type: 'string' }).toLowerCase(); @@ -4917,8 +4931,11 @@ if (previewItem) { // 设置重命名字段 file.file_name_re = previewItem.new_name; + // 设置集数字段用于排序 + file.episode_number = previewItem.episode_number; } else { file.file_name_re = null; + file.episode_number = undefined; } });