Xwite 4 лет назад
Родитель
Сommit
8d860dec08
1 измененных файлов с 14 добавлено и 14 удалено
  1. 14 14
      app/src/main/java/io/legado/app/model/localBook/EpubFile.kt

+ 14 - 14
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)
                         cover.compress(Bitmap.CompressFormat.JPEG, 90, out)
                         out.flush()
                         out.flush()
                         out.close()
                         out.close()
-                    }
+                    } ?: AppLog.put("封面获取为空")
                 }
                 }
             }
             }
         } catch (e: Exception) {
         } catch (e: Exception) {
@@ -131,22 +131,22 @@ class EpubFile(var book: Book) {
             val startFragmentId = chapter.startFragmentId
             val startFragmentId = chapter.startFragmentId
             val endFragmentId = chapter.endFragmentId
             val endFragmentId = chapter.endFragmentId
             val elements = Elements()
             val elements = Elements()
-            var isChapter = false
+            var hasMoreResources = false
+            val includeNextChapterResource = endFragmentId.isNullOrBlank()
             /*一些书籍依靠href索引的resource会包含多个章节,需要依靠fragmentId来截取到当前章节的内容*/
             /*一些书籍依靠href索引的resource会包含多个章节,需要依靠fragmentId来截取到当前章节的内容*/
             /*注:这里较大增加了内容加载的时间,所以首次获取内容后可存储到本地cache,减少重复加载*/
             /*注:这里较大增加了内容加载的时间,所以首次获取内容后可存储到本地cache,减少重复加载*/
             for (res in epubBook.contents) {
             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))
                     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
                         break
                     }
                     }
                     elements.add(getBody(res, startFragmentId, endFragmentId))
                     elements.add(getBody(res, startFragmentId, endFragmentId))
@@ -340,4 +340,4 @@ class EpubFile(var book: Book) {
         }
         }
     }
     }
 
 
-}
+}