|
|
|
@ -121,14 +121,11 @@ class EpubFile(var book: Book) { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private fun getContent(chapter: BookChapter): String? { |
|
|
|
|
/*获取当前章节文本*/ |
|
|
|
|
epubBook?.let { epubBook -> |
|
|
|
|
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 elements = Elements() |
|
|
|
|
var isChapter = false |
|
|
|
|
/*一些书籍依靠href索引的resource会包含多个章节,需要依靠fragmentId来截取到当前章节的内容*/ |
|
|
|
@ -137,6 +134,12 @@ class EpubFile(var book: Book) { |
|
|
|
|
if (chapter.url.substringBeforeLast("#") == res.href) { |
|
|
|
|
elements.add(getBody(res, startFragmentId, endFragmentId)) |
|
|
|
|
isChapter = true |
|
|
|
|
/** |
|
|
|
|
* fix https://github.com/gedoor/legado/issues/1927 加载全部内容的bug |
|
|
|
|
* content src text/000001.html(当前章节) |
|
|
|
|
- * content src text/000001.html#toc_id_x (下一章节) |
|
|
|
|
*/ |
|
|
|
|
if (!nextUrl.isNullOrBlank() && res.href == nextUrl!!.substringBeforeLast("#")) break |
|
|
|
|
} else if (isChapter) { |
|
|
|
|
if (nextUrl.isNullOrBlank() || res.href == nextUrl.substringBeforeLast("#")) { |
|
|
|
|
break |
|
|
|
@ -160,7 +163,10 @@ class EpubFile(var book: Book) { |
|
|
|
|
body.getElementById(startFragmentId)?.previousElementSiblings()?.remove() |
|
|
|
|
} |
|
|
|
|
if (!endFragmentId.isNullOrBlank() && endFragmentId != startFragmentId) { |
|
|
|
|
body.getElementById(endFragmentId)?.nextElementSiblings()?.remove() |
|
|
|
|
body.getElementById(endFragmentId)?.run { |
|
|
|
|
nextElementSiblings()?.remove() |
|
|
|
|
remove() |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
/*选择去除正文中的H标签,部分书籍标题与阅读标题重复待优化*/ |
|
|
|
|
val tag = Book.hTag |
|
|
|
@ -311,18 +317,12 @@ 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++ |
|
|
|
|
} |
|
|
|
|
if (ref.children != null && ref.children.isNotEmpty()) { |
|
|
|
|
chapterList.lastOrNull()?.isVolume = true |
|
|
|
|
parseMenu(chapterList, ref.children, level + 1) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|