fix(LocalBook/EpubFile): load all contents

fix https://github.com/gedoor/legado/issues/1927
pull/1928/head
Xwite 2 years ago
parent 859aff6525
commit 7c1c0ab930
  1. 14
      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? { private fun getContent(chapter: BookChapter): String? {
/*获取当前章节文本*/
epubBook?.let { epubBook ->
val nextUrl = chapter.getVariable("nextUrl") val nextUrl = chapter.getVariable("nextUrl")
val startFragmentId = chapter.startFragmentId val startFragmentId = chapter.startFragmentId
val endFragmentId = chapter.endFragmentId val endFragmentId = chapter.endFragmentId
/*当前章节resource href 和下一章href相同时 应该视为二级目录 返回空白*/
//fix https://github.com/gedoor/legado/issues/1927 加载全部内容的bug
if (chapter.isVolume) return ""
/*获取当前章节文本*/
epubBook?.let { epubBook ->
val elements = Elements() val elements = Elements()
var isChapter = false var isChapter = false
/*一些书籍依靠href索引的resource会包含多个章节,需要依靠fragmentId来截取到当前章节的内容*/ /*一些书籍依靠href索引的resource会包含多个章节,需要依靠fragmentId来截取到当前章节的内容*/
@ -308,6 +311,13 @@ class EpubFile(var book: Book) {
chapter.url = ref.completeHref chapter.url = ref.completeHref
chapter.startFragmentId = ref.fragmentId chapter.startFragmentId = ref.fragmentId
chapterList.lastOrNull()?.endFragmentId = chapter.startFragmentId 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.lastOrNull()?.putVariable("nextUrl", chapter.url)
chapterList.add(chapter) chapterList.add(chapter)
durIndex++ durIndex++

Loading…
Cancel
Save