From 7c1c0ab9303a1bd560e29e0fbfe4902710894251 Mon Sep 17 00:00:00 2001 From: Xwite <1797350009@qq.com> Date: Tue, 31 May 2022 07:33:19 +0800 Subject: [PATCH] fix(LocalBook/EpubFile): load all contents fix https://github.com/gedoor/legado/issues/1927 --- .../io/legado/app/model/localBook/EpubFile.kt | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/io/legado/app/model/localBook/EpubFile.kt b/app/src/main/java/io/legado/app/model/localBook/EpubFile.kt index ffdaf89e0..e39272287 100644 --- a/app/src/main/java/io/legado/app/model/localBook/EpubFile.kt +++ b/app/src/main/java/io/legado/app/model/localBook/EpubFile.kt @@ -121,11 +121,14 @@ class EpubFile(var book: Book) { } private fun getContent(chapter: BookChapter): String? { + val nextUrl = chapter.getVariable("nextUrl") + val startFragmentId = chapter.startFragmentId + val endFragmentId = chapter.endFragmentId + /*当前章节resource href 和下一章href相同时 应该视为二级目录 返回空白*/ + //fix https://github.com/gedoor/legado/issues/1927 加载全部内容的bug + if (chapter.isVolume) return "" /*获取当前章节文本*/ epubBook?.let { epubBook -> - val nextUrl = chapter.getVariable("nextUrl") - val startFragmentId = chapter.startFragmentId - val endFragmentId = chapter.endFragmentId val elements = Elements() var isChapter = false /*一些书籍依靠href索引的resource会包含多个章节,需要依靠fragmentId来截取到当前章节的内容*/ @@ -308,6 +311,13 @@ class EpubFile(var book: Book) { chapter.url = ref.completeHref chapter.startFragmentId = ref.fragmentId chapterList.lastOrNull()?.endFragmentId = chapter.startFragmentId + /** + * 二级目录判定 + * content src text/000001.html (二级目录)(上一章节) + * content src text/000001.html#toc_id_x (当前章节) + */ + val isVolume = chapter.url.substringBeforeLast("#") == chapterList.lastOrNull()?.url?.substringBeforeLast("#") + chapterList.lastOrNull()?.isVolume = isVolume chapterList.lastOrNull()?.putVariable("nextUrl", chapter.url) chapterList.add(chapter) durIndex++