pull/43/head
kunfei 5 years ago
parent 0c411795cf
commit 2bed9af097
  1. 10
      app/src/main/java/io/legado/app/model/WebBook.kt
  2. 11
      app/src/main/java/io/legado/app/model/webbook/BookContent.kt

@ -124,6 +124,9 @@ class WebBook(val bookSource: BookSource) {
context: CoroutineContext = Dispatchers.IO context: CoroutineContext = Dispatchers.IO
): Coroutine<String> { ): Coroutine<String> {
return Coroutine.async(scope, context) { return Coroutine.async(scope, context) {
val body = if (bookChapter.url == book.bookUrl && !book.tocHtml.isNullOrEmpty()) {
book.tocHtml
} else {
val analyzeUrl = val analyzeUrl =
AnalyzeUrl( AnalyzeUrl(
book = book, book = book,
@ -131,14 +134,15 @@ class WebBook(val bookSource: BookSource) {
baseUrl = book.tocUrl, baseUrl = book.tocUrl,
headerMapF = bookSource.getHeaderMap() headerMapF = bookSource.getHeaderMap()
) )
val response = analyzeUrl.getResponseAsync().await() analyzeUrl.getResponseAsync().await().body()
}
BookContent.analyzeContent( BookContent.analyzeContent(
this, this,
response, body,
book, book,
bookChapter, bookChapter,
bookSource, bookSource,
analyzeUrl, bookChapter.url,
nextChapterUrl nextChapterUrl
) )
} }

@ -12,29 +12,26 @@ import io.legado.app.utils.NetworkUtils
import io.legado.app.utils.htmlFormat import io.legado.app.utils.htmlFormat
import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.withContext import kotlinx.coroutines.withContext
import retrofit2.Response
object BookContent { object BookContent {
@Throws(Exception::class) @Throws(Exception::class)
suspend fun analyzeContent( suspend fun analyzeContent(
coroutineScope: CoroutineScope, coroutineScope: CoroutineScope,
response: Response<String>, body: String?,
book: Book, book: Book,
bookChapter: BookChapter, bookChapter: BookChapter,
bookSource: BookSource, bookSource: BookSource,
analyzeUrl: AnalyzeUrl, baseUrl: String,
nextChapterUrlF: String? = null nextChapterUrlF: String? = null
): String { ): String {
val baseUrl: String = NetworkUtils.getUrl(response)
val body: String? = response.body()
body ?: throw Exception( body ?: throw Exception(
App.INSTANCE.getString( App.INSTANCE.getString(
R.string.error_get_web_content, R.string.error_get_web_content,
analyzeUrl.ruleUrl baseUrl
) )
) )
SourceDebug.printLog(bookSource.bookSourceUrl, "获取成功:${analyzeUrl.ruleUrl}") SourceDebug.printLog(bookSource.bookSourceUrl, "获取成功:${baseUrl}")
val content = StringBuilder() val content = StringBuilder()
val nextUrlList = arrayListOf(baseUrl) val nextUrlList = arrayListOf(baseUrl)
val contentRule = bookSource.getContentRule() val contentRule = bookSource.getContentRule()

Loading…
Cancel
Save