mirror of
https://github.com/gedoor/legado.git
synced 2025-08-10 00:52:30 +00:00
实现epub的懒加载(未经广泛测试)
This commit is contained in:
@@ -7,11 +7,6 @@
|
||||
<link href="../Styles/main.css" type="text/css" rel="stylesheet"/>
|
||||
</head>
|
||||
<body>
|
||||
<!--<div class="logo">
|
||||
<img alt="" class="logo" src="../Images/logo.png"/>
|
||||
</div>-->
|
||||
<br/>
|
||||
<br/>
|
||||
<h2 class="head">{title}</h2>
|
||||
{content}
|
||||
</body>
|
||||
|
||||
@@ -60,11 +60,10 @@ abstract class AbsCallBack(
|
||||
}
|
||||
|
||||
|
||||
//UrlResponseInfo可能为null
|
||||
override fun onResponseStarted(request: UrlRequest, info: UrlResponseInfo) {
|
||||
this.mResponse = responseFromResponse(this.mResponse, info)
|
||||
//打印协议,用于调试
|
||||
DebugLog.i(javaClass.name, info.negotiatedProtocol)
|
||||
DebugLog.i(javaClass.simpleName, "start[${info.negotiatedProtocol}]${info.url}")
|
||||
if (eventListener != null) {
|
||||
eventListener.responseHeadersEnd(mCall, this.mResponse)
|
||||
eventListener.responseBodyStart(mCall)
|
||||
@@ -108,6 +107,7 @@ abstract class AbsCallBack(
|
||||
buffer.asResponseBody(contentType)
|
||||
val newRequest = originalRequest.newBuilder().url(info.url).build()
|
||||
this.mResponse = this.mResponse.newBuilder().body(responseBody).request(newRequest).build()
|
||||
DebugLog.i(javaClass.simpleName, "end[${info.negotiatedProtocol}]${info.url}")
|
||||
|
||||
eventListener?.callEnd(mCall)
|
||||
if (responseCallback != null) {
|
||||
|
||||
@@ -2,6 +2,7 @@ package io.legado.app.model.localBook
|
||||
|
||||
import android.graphics.Bitmap
|
||||
import android.graphics.BitmapFactory
|
||||
import android.net.Uri
|
||||
import android.text.TextUtils
|
||||
import io.legado.app.data.entities.Book
|
||||
import io.legado.app.data.entities.BookChapter
|
||||
@@ -10,6 +11,7 @@ import me.ag2s.epublib.domain.EpubBook
|
||||
import me.ag2s.epublib.domain.Resource
|
||||
import me.ag2s.epublib.domain.TOCReference
|
||||
import me.ag2s.epublib.epub.EpubReader
|
||||
import me.ag2s.epublib.zip.ZipFile
|
||||
import org.jsoup.Jsoup
|
||||
import org.jsoup.nodes.Element
|
||||
import org.jsoup.select.Elements
|
||||
@@ -101,9 +103,16 @@ class EpubFile(var book: Book) {
|
||||
/*重写epub文件解析代码,直接读出压缩包文件生成Resources给epublib,这样的好处是可以逐一修改某些文件的格式错误*/
|
||||
private fun readEpub(): EpubBook? {
|
||||
try {
|
||||
val bis = LocalBook.getBookInputStream(book)
|
||||
//通过懒加载读取epub
|
||||
return EpubReader().readEpub(bis, "utf-8")
|
||||
val uri = Uri.parse(book.bookUrl)
|
||||
return if (uri.isContentScheme()) {
|
||||
//通过懒加载读取epub
|
||||
EpubReader().readEpubLazy(ZipFile(appCtx, uri), "utf-8")
|
||||
} else {
|
||||
val bis = LocalBook.getBookInputStream(book)
|
||||
EpubReader().readEpub(bis, "utf-8")
|
||||
}
|
||||
|
||||
|
||||
} catch (e: Exception) {
|
||||
e.printOnDebug()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user