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 52f54d313..4238f669b 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 @@ -92,7 +92,7 @@ class EpubFile(var book: Book) { cover.compress(Bitmap.CompressFormat.JPEG, 90, out) out.flush() out.close() - } + } ?: AppLog.put("封面获取为空") } } } catch (e: Exception) { @@ -131,22 +131,22 @@ class EpubFile(var book: Book) { val startFragmentId = chapter.startFragmentId val endFragmentId = chapter.endFragmentId val elements = Elements() - var isChapter = false + var hasMoreResources = false + val includeNextChapterResource = endFragmentId.isNullOrBlank() /*一些书籍依靠href索引的resource会包含多个章节,需要依靠fragmentId来截取到当前章节的内容*/ /*注:这里较大增加了内容加载的时间,所以首次获取内容后可存储到本地cache,减少重复加载*/ for (res in epubBook.contents) { - if (chapter.url.substringBeforeLast("#") == res.href) { + val isFirstResource = chapter.url.substringBeforeLast("#") == res.href + val isNextChapterResource = res.href == nextUrl?.substringBeforeLast("#") + if (isFirstResource) { + // add first resource to elements 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 (res.href == nextUrl?.substringBeforeLast("#")) break - } else if (isChapter) { - // fix 最后一章存在多个html时 内容缺失 - if (res.href == nextUrl?.substringBeforeLast("#")) { + // check current resource + if (isNextChapterResource) break + hasMoreResources = true + } else if (hasMoreResources) { + if (isNextChapterResource) { + if (includeNextChapterResource) elements.add(getBody(res, startFragmentId, endFragmentId)) break } elements.add(getBody(res, startFragmentId, endFragmentId)) @@ -340,4 +340,4 @@ class EpubFile(var book: Book) { } } -} \ No newline at end of file +}