This commit is contained in:
Horis
2023-03-13 12:51:55 +08:00
parent 046d54b3e6
commit d5dd9df537
3 changed files with 23 additions and 24 deletions
@@ -76,6 +76,7 @@ class AnalyzeUrl(
private var webJs: String? = null private var webJs: String? = null
private val enabledCookieJar = source?.enabledCookieJar ?: false private val enabledCookieJar = source?.enabledCookieJar ?: false
private val domain: String private val domain: String
// 服务器ID // 服务器ID
var serverID: Long? = null var serverID: Long? = null
private set private set
@@ -373,7 +374,15 @@ class AnalyzeUrl(
if (type != null) { if (type != null) {
return StrResponse(url, HexUtil.encodeHexStr(getByteArrayAwait())) 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 { try {
setCookie() setCookie()
val strResponse: StrResponse 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 @JvmOverloads
@Throws(ConcurrentException::class) @Throws(ConcurrentException::class)
fun getStrResponse( fun getStrResponse(
@@ -475,7 +466,15 @@ class AnalyzeUrl(
*/ */
@Throws(ConcurrentException::class) @Throws(ConcurrentException::class)
suspend fun getResponseAwait(): Response { suspend fun getResponseAwait(): Response {
val concurrentRecord = fetchStart() var concurrentRecord: ConcurrentRecord?
while (true) {
try {
concurrentRecord = fetchStart()
break
} catch (e: ConcurrentException) {
delay(e.waitTime.toLong())
}
}
try { try {
setCookie() setCookie()
@Suppress("BlockingMethodInNonBlockingContext") @Suppress("BlockingMethodInNonBlockingContext")
@@ -66,7 +66,7 @@ object BookChapterList {
source = bookSource, source = bookSource,
ruleData = book, ruleData = book,
headerMapF = bookSource.getHeaderMap() headerMapF = bookSource.getHeaderMap()
).getStrResponseConcurrentAwait() //控制并发访问 ).getStrResponseAwait() //控制并发访问
res.body?.let { nextBody -> res.body?.let { nextBody ->
chapterData = analyzeChapterList( chapterData = analyzeChapterList(
book, nextUrl, nextUrl, book, nextUrl, nextUrl,
@@ -89,7 +89,7 @@ object BookChapterList {
source = bookSource, source = bookSource,
ruleData = book, ruleData = book,
headerMapF = bookSource.getHeaderMap() headerMapF = bookSource.getHeaderMap()
).getStrResponseConcurrentAwait() //控制并发访问 ).getStrResponseAwait() //控制并发访问
analyzeChapterList( analyzeChapterList(
book, urlStr, res.url, book, urlStr, res.url,
res.body!!, tocRule, listRule, bookSource, false res.body!!, tocRule, listRule, bookSource, false
@@ -76,7 +76,7 @@ object BookContent {
source = bookSource, source = bookSource,
ruleData = book, ruleData = book,
headerMapF = bookSource.getHeaderMap() headerMapF = bookSource.getHeaderMap()
).getStrResponseConcurrentAwait() //控制并发访问 ).getStrResponseAwait() //控制并发访问
res.body?.let { nextBody -> res.body?.let { nextBody ->
contentData = analyzeContent( contentData = analyzeContent(
book, nextUrl, res.url, nextBody, contentRule, book, nextUrl, res.url, nextBody, contentRule,
@@ -99,7 +99,7 @@ object BookContent {
source = bookSource, source = bookSource,
ruleData = book, ruleData = book,
headerMapF = bookSource.getHeaderMap() headerMapF = bookSource.getHeaderMap()
).getStrResponseConcurrentAwait() //控制并发访问 ).getStrResponseAwait() //控制并发访问
analyzeContent( analyzeContent(
book, urlStr, res.url, res.body!!, contentRule, book, urlStr, res.url, res.body!!, contentRule,
bookChapter, bookSource, mNextChapterUrl, false bookChapter, bookSource, mNextChapterUrl, false