From 69fe600cfa88bcc124ff4fed105093d177d2d849 Mon Sep 17 00:00:00 2001 From: Elegy233 <82034747+wan0ge@users.noreply.github.com> Date: Sat, 20 Jun 2026 13:35:06 +0800 Subject: [PATCH] =?UTF-8?q?fix(bilibili):=20=E6=90=9C=E7=B4=A2=E7=BB=93?= =?UTF-8?q?=E6=9E=9C=E5=88=86=E9=9B=86=E4=BC=98=E5=85=88=E6=8C=89=20index?= =?UTF-8?q?=5Ftitle=20=E6=8E=92=E5=BA=8F=EF=BC=8C=E6=97=A0=E6=B3=95?= =?UTF-8?q?=E6=8F=90=E5=8F=96=E6=97=B6=E9=80=80=E5=9B=9E=20ep=5Fid=20(#352?= =?UTF-8?q?)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 部分番剧的 ep_id 为倒序排列,导致集号错乱。 改为优先从 index_title 提取集号升序排列, 任一集无法提取时整组退回 ep_id 排序。 --- danmu_api/sources/bilibili.js | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/danmu_api/sources/bilibili.js b/danmu_api/sources/bilibili.js index eb4fdab..d455c55 100644 --- a/danmu_api/sources/bilibili.js +++ b/danmu_api/sources/bilibili.js @@ -5,7 +5,7 @@ import { httpGet, httpGetWithStreamCheck } from "../utils/http-util.js"; import { parseDanmakuBase64, md5, convertToAsciiSum, decodeHtmlEntities } from "../utils/codec-util.js"; import { generateValidStartDate } from "../utils/time-util.js"; import { addAnime, removeEarliestAnime } from "../utils/cache-util.js"; -import { titleMatches, getExplicitSeasonNumber, extractSeasonNumberFromAnimeTitle } from "../utils/common-util.js"; +import { titleMatches, getExplicitSeasonNumber, extractSeasonNumberFromAnimeTitle, extractEpisodeNumberFromTitle } from "../utils/common-util.js"; import { SegmentListResponse } from '../models/dandan-model.js'; import { simplized } from "../utils/zh-util.js"; import { getTmdbJaOriginalTitle, smartTitleReplace } from "../utils/tmdb-util.js"; @@ -679,8 +679,14 @@ export default class BilibiliSource extends BaseSource { }; }); - // 依据底层数据主键 ep_id 进行时间序列升序排列 - links.sort((a, b) => a._id - b._id); + // 优先从 index_title 提取集号排序,任一无法提取则退回到 ep_id 排序 + const sortKeys = links.map(l => extractEpisodeNumberFromTitle(l.name)); + if (sortKeys.every(k => k !== null)) { + links.forEach((l, i) => l._sortKey = sortKeys[i]); + links.sort((a, b) => a._sortKey - b._sortKey); + } else { + links.sort((a, b) => a._id - b._id); + } log("info", `[Bilibili] 直接使用搜索结果中的 ${links.length} 集分集`); } else {