Skip to content

Commit 69fe600

Browse files
authored
fix(bilibili): 搜索结果分集优先按 index_title 排序,无法提取时退回 ep_id (huangxd-#352)
部分番剧的 ep_id 为倒序排列,导致集号错乱。 改为优先从 index_title 提取集号升序排列, 任一集无法提取时整组退回 ep_id 排序。
1 parent 1d98d3f commit 69fe600

1 file changed

Lines changed: 9 additions & 3 deletions

File tree

danmu_api/sources/bilibili.js

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { httpGet, httpGetWithStreamCheck } from "../utils/http-util.js";
55
import { parseDanmakuBase64, md5, convertToAsciiSum, decodeHtmlEntities } from "../utils/codec-util.js";
66
import { generateValidStartDate } from "../utils/time-util.js";
77
import { addAnime, removeEarliestAnime } from "../utils/cache-util.js";
8-
import { titleMatches, getExplicitSeasonNumber, extractSeasonNumberFromAnimeTitle } from "../utils/common-util.js";
8+
import { titleMatches, getExplicitSeasonNumber, extractSeasonNumberFromAnimeTitle, extractEpisodeNumberFromTitle } from "../utils/common-util.js";
99
import { SegmentListResponse } from '../models/dandan-model.js';
1010
import { simplized } from "../utils/zh-util.js";
1111
import { getTmdbJaOriginalTitle, smartTitleReplace } from "../utils/tmdb-util.js";
@@ -679,8 +679,14 @@ export default class BilibiliSource extends BaseSource {
679679
};
680680
});
681681

682-
// 依据底层数据主键 ep_id 进行时间序列升序排列
683-
links.sort((a, b) => a._id - b._id);
682+
// 优先从 index_title 提取集号排序,任一无法提取则退回到 ep_id 排序
683+
const sortKeys = links.map(l => extractEpisodeNumberFromTitle(l.name));
684+
if (sortKeys.every(k => k !== null)) {
685+
links.forEach((l, i) => l._sortKey = sortKeys[i]);
686+
links.sort((a, b) => a._sortKey - b._sortKey);
687+
} else {
688+
links.sort((a, b) => a._id - b._id);
689+
}
684690

685691
log("info", `[Bilibili] 直接使用搜索结果中的 ${links.length} 集分集`);
686692
} else {

0 commit comments

Comments
 (0)