diff --git a/app/src/main/java/io/legado/app/model/webBook/BookList.kt b/app/src/main/java/io/legado/app/model/webBook/BookList.kt index b638cd70f..2f5d51998 100644 --- a/app/src/main/java/io/legado/app/model/webBook/BookList.kt +++ b/app/src/main/java/io/legado/app/model/webBook/BookList.kt @@ -32,6 +32,7 @@ object BookList { baseUrl: String, body: String?, isSearch: Boolean = true, + isRedirect: Boolean = false ): ArrayList { body ?: throw NoStackTraceException( appCtx.getString( @@ -53,9 +54,11 @@ object BookList { getInfoItem( bookSource, analyzeRule, + analyzeUrl, body, baseUrl, - ruleData.getVariable() + ruleData.getVariable(), + isRedirect )?.let { searchBook -> searchBook.infoHtml = body bookList.add(searchBook) @@ -84,7 +87,8 @@ object BookList { if (collections.isEmpty() && bookSource.bookUrlPattern.isNullOrEmpty()) { Debug.log(bookSource.bookSourceUrl, "└列表为空,按详情页解析") getInfoItem( - bookSource, analyzeRule, body, baseUrl, ruleData.getVariable() + bookSource, analyzeRule, analyzeUrl, body, baseUrl, ruleData.getVariable(), + isRedirect )?.let { searchBook -> searchBook.infoHtml = body bookList.add(searchBook) @@ -133,12 +137,18 @@ object BookList { private suspend fun getInfoItem( bookSource: BookSource, analyzeRule: AnalyzeRule, + analyzeUrl: AnalyzeUrl, body: String, baseUrl: String, - variable: String? + variable: String?, + isRedirect: Boolean ): SearchBook? { val book = Book(variable = variable) - book.bookUrl = baseUrl + book.bookUrl = if (isRedirect) { + baseUrl + } else { + NetworkUtils.getAbsoluteURL(analyzeUrl.url, analyzeUrl.ruleUrl) + } book.origin = bookSource.bookSourceUrl book.originName = bookSource.bookSourceName book.originOrder = bookSource.customOrder diff --git a/app/src/main/java/io/legado/app/model/webBook/WebBook.kt b/app/src/main/java/io/legado/app/model/webBook/WebBook.kt index 3267a4c24..247f11309 100644 --- a/app/src/main/java/io/legado/app/model/webBook/WebBook.kt +++ b/app/src/main/java/io/legado/app/model/webBook/WebBook.kt @@ -79,7 +79,8 @@ object WebBook { analyzeUrl = analyzeUrl, baseUrl = res.url, body = res.body, - isSearch = true + isSearch = true, + isRedirect = res.raw.priorResponse?.isRedirect == true ) }