Horis 1 سال پیش
والد
کامیت
4987a5aea6
2فایلهای تغییر یافته به همراه16 افزوده شده و 5 حذف شده
  1. 14 4
      app/src/main/java/io/legado/app/model/webBook/BookList.kt
  2. 2 1
      app/src/main/java/io/legado/app/model/webBook/WebBook.kt

+ 14 - 4
app/src/main/java/io/legado/app/model/webBook/BookList.kt

@@ -32,6 +32,7 @@ object BookList {
         baseUrl: String,
         baseUrl: String,
         body: String?,
         body: String?,
         isSearch: Boolean = true,
         isSearch: Boolean = true,
+        isRedirect: Boolean = false
     ): ArrayList<SearchBook> {
     ): ArrayList<SearchBook> {
         body ?: throw NoStackTraceException(
         body ?: throw NoStackTraceException(
             appCtx.getString(
             appCtx.getString(
@@ -53,9 +54,11 @@ object BookList {
                 getInfoItem(
                 getInfoItem(
                     bookSource,
                     bookSource,
                     analyzeRule,
                     analyzeRule,
+                    analyzeUrl,
                     body,
                     body,
                     baseUrl,
                     baseUrl,
-                    ruleData.getVariable()
+                    ruleData.getVariable(),
+                    isRedirect
                 )?.let { searchBook ->
                 )?.let { searchBook ->
                     searchBook.infoHtml = body
                     searchBook.infoHtml = body
                     bookList.add(searchBook)
                     bookList.add(searchBook)
@@ -84,7 +87,8 @@ object BookList {
         if (collections.isEmpty() && bookSource.bookUrlPattern.isNullOrEmpty()) {
         if (collections.isEmpty() && bookSource.bookUrlPattern.isNullOrEmpty()) {
             Debug.log(bookSource.bookSourceUrl, "└列表为空,按详情页解析")
             Debug.log(bookSource.bookSourceUrl, "└列表为空,按详情页解析")
             getInfoItem(
             getInfoItem(
-                bookSource, analyzeRule, body, baseUrl, ruleData.getVariable()
+                bookSource, analyzeRule, analyzeUrl, body, baseUrl, ruleData.getVariable(),
+                isRedirect
             )?.let { searchBook ->
             )?.let { searchBook ->
                 searchBook.infoHtml = body
                 searchBook.infoHtml = body
                 bookList.add(searchBook)
                 bookList.add(searchBook)
@@ -133,12 +137,18 @@ object BookList {
     private suspend fun getInfoItem(
     private suspend fun getInfoItem(
         bookSource: BookSource,
         bookSource: BookSource,
         analyzeRule: AnalyzeRule,
         analyzeRule: AnalyzeRule,
+        analyzeUrl: AnalyzeUrl,
         body: String,
         body: String,
         baseUrl: String,
         baseUrl: String,
-        variable: String?
+        variable: String?,
+        isRedirect: Boolean
     ): SearchBook? {
     ): SearchBook? {
         val book = Book(variable = variable)
         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.origin = bookSource.bookSourceUrl
         book.originName = bookSource.bookSourceName
         book.originName = bookSource.bookSourceName
         book.originOrder = bookSource.customOrder
         book.originOrder = bookSource.customOrder

+ 2 - 1
app/src/main/java/io/legado/app/model/webBook/WebBook.kt

@@ -79,7 +79,8 @@ object WebBook {
             analyzeUrl = analyzeUrl,
             analyzeUrl = analyzeUrl,
             baseUrl = res.url,
             baseUrl = res.url,
             body = res.body,
             body = res.body,
-            isSearch = true
+            isSearch = true,
+            isRedirect = res.raw.priorResponse?.isRedirect == true
         )
         )
     }
     }