fix(bilibili): 搜索结果分集优先按 index_title 排序,无法提取时退回 ep_id (#352)
部分番剧的 ep_id 为倒序排列,导致集号错乱。 改为优先从 index_title 提取集号升序排列, 任一集无法提取时整组退回 ep_id 排序。
This commit is contained in:
1 parent
1d98d3fcea
commit
69fe600cfa
1 file changed
+9
-3
@@ -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 {
|
||||
|
||||
Reference in new issue
Block a user