Update app.js: Support decimal chapters (e.g., 107.5)

This commit is contained in:
小虾米 2026-03-27 16:05:44 +08:00
parent d74328959e
commit a0b3188994

View File

@ -8,13 +8,27 @@ async function loadChaptersData() {
if (isDataLoaded) return chaptersData;
const chapters = [];
let chapterNum = 1;
const chapterIds = [];
// 循环加载章节,直到找不到文件
while (true) {
// 先尝试加载1-200的整数章节
for (let i = 1; i <= 200; i++) {
chapterIds.push(i);
// 检查是否有x.5章节
chapterIds.push(i + 0.5);
}
// 循环加载章节
for (const chapterNum of chapterIds) {
try {
// 格式化章节号(带前导零)
const chapterId = chapterNum.toString().padStart(2, '0');
// 格式化章节号
let chapterId;
if (Number.isInteger(chapterNum)) {
chapterId = chapterNum.toString().padStart(2, '0');
} else {
// 小数章节如 107.5
chapterId = chapterNum.toString();
}
const response = await fetch(`data/chapter-${chapterId}.json`, {
cache: 'no-store',
headers: {
@ -23,30 +37,18 @@ async function loadChaptersData() {
}
});
if (!response.ok) {
// 尝试不带前导零的格式
const response2 = await fetch(`data/chapter-${chapterNum}.json`, {
cache: 'no-store',
headers: {
'Cache-Control': 'no-cache',
'Pragma': 'no-cache'
}
});
if (!response2.ok) break;
const data = await response2.json();
chapters.push(normalizeChapterData(data, chapterNum));
} else {
if (response.ok) {
const data = await response.json();
chapters.push(normalizeChapterData(data, chapterNum));
}
chapterNum++;
} catch (error) {
// 没有更多章节了
break;
// 忽略错误,继续加载下一章
}
}
// 按id排序
chapters.sort((a, b) => a.id - b.id);
chaptersData = chapters;
isDataLoaded = true;