From d5dd9df53701606f6ea98149ee5dadf23a40bfe2 Mon Sep 17 00:00:00 2001 From: Horis <821938089@qq.com> Date: Mon, 13 Mar 2023 12:51:55 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/model/analyzeRule/AnalyzeUrl.kt | 39 +++++++++---------- .../app/model/webBook/BookChapterList.kt | 4 +- .../legado/app/model/webBook/BookContent.kt | 4 +- 3 files changed, 23 insertions(+), 24 deletions(-) diff --git a/app/src/main/java/io/legado/app/model/analyzeRule/AnalyzeUrl.kt b/app/src/main/java/io/legado/app/model/analyzeRule/AnalyzeUrl.kt index 0033213be..c6c332e97 100644 --- a/app/src/main/java/io/legado/app/model/analyzeRule/AnalyzeUrl.kt +++ b/app/src/main/java/io/legado/app/model/analyzeRule/AnalyzeUrl.kt @@ -76,6 +76,7 @@ class AnalyzeUrl( private var webJs: String? = null private val enabledCookieJar = source?.enabledCookieJar ?: false private val domain: String + // 服务器ID var serverID: Long? = null private set @@ -373,7 +374,15 @@ class AnalyzeUrl( if (type != null) { return StrResponse(url, HexUtil.encodeHexStr(getByteArrayAwait())) } - val concurrentRecord = fetchStart() + var concurrentRecord: ConcurrentRecord? + while (true) { + try { + concurrentRecord = fetchStart() + break + } catch (e: ConcurrentException) { + delay(e.waitTime.toLong()) + } + } try { setCookie() val strResponse: StrResponse @@ -440,24 +449,6 @@ class AnalyzeUrl( } } - /** - * 访问网站,返回StrResponse - * 并发异常自动重试 - */ - suspend fun getStrResponseConcurrentAwait( - jsStr: String? = null, - sourceRegex: String? = null, - useWebView: Boolean = true, - ): StrResponse { - while (true) { - try { - return getStrResponseAwait(jsStr, sourceRegex, useWebView) - } catch (e: ConcurrentException) { - delay(e.waitTime.toLong()) - } - } - } - @JvmOverloads @Throws(ConcurrentException::class) fun getStrResponse( @@ -475,7 +466,15 @@ class AnalyzeUrl( */ @Throws(ConcurrentException::class) suspend fun getResponseAwait(): Response { - val concurrentRecord = fetchStart() + var concurrentRecord: ConcurrentRecord? + while (true) { + try { + concurrentRecord = fetchStart() + break + } catch (e: ConcurrentException) { + delay(e.waitTime.toLong()) + } + } try { setCookie() @Suppress("BlockingMethodInNonBlockingContext") diff --git a/app/src/main/java/io/legado/app/model/webBook/BookChapterList.kt b/app/src/main/java/io/legado/app/model/webBook/BookChapterList.kt index 79159b04e..fc6558196 100644 --- a/app/src/main/java/io/legado/app/model/webBook/BookChapterList.kt +++ b/app/src/main/java/io/legado/app/model/webBook/BookChapterList.kt @@ -66,7 +66,7 @@ object BookChapterList { source = bookSource, ruleData = book, headerMapF = bookSource.getHeaderMap() - ).getStrResponseConcurrentAwait() //控制并发访问 + ).getStrResponseAwait() //控制并发访问 res.body?.let { nextBody -> chapterData = analyzeChapterList( book, nextUrl, nextUrl, @@ -89,7 +89,7 @@ object BookChapterList { source = bookSource, ruleData = book, headerMapF = bookSource.getHeaderMap() - ).getStrResponseConcurrentAwait() //控制并发访问 + ).getStrResponseAwait() //控制并发访问 analyzeChapterList( book, urlStr, res.url, res.body!!, tocRule, listRule, bookSource, false diff --git a/app/src/main/java/io/legado/app/model/webBook/BookContent.kt b/app/src/main/java/io/legado/app/model/webBook/BookContent.kt index b3a87d36b..bc891de25 100644 --- a/app/src/main/java/io/legado/app/model/webBook/BookContent.kt +++ b/app/src/main/java/io/legado/app/model/webBook/BookContent.kt @@ -76,7 +76,7 @@ object BookContent { source = bookSource, ruleData = book, headerMapF = bookSource.getHeaderMap() - ).getStrResponseConcurrentAwait() //控制并发访问 + ).getStrResponseAwait() //控制并发访问 res.body?.let { nextBody -> contentData = analyzeContent( book, nextUrl, res.url, nextBody, contentRule, @@ -99,7 +99,7 @@ object BookContent { source = bookSource, ruleData = book, headerMapF = bookSource.getHeaderMap() - ).getStrResponseConcurrentAwait() //控制并发访问 + ).getStrResponseAwait() //控制并发访问 analyzeContent( book, urlStr, res.url, res.body!!, contentRule, bookChapter, bookSource, mNextChapterUrl, false