This commit is contained in:
Horis
2024-02-01 23:45:19 +08:00
parent 8aa3424a45
commit b9bbffe45d
@@ -34,13 +34,13 @@ import kotlinx.coroutines.TimeoutCancellationException
import kotlinx.coroutines.asCoroutineDispatcher import kotlinx.coroutines.asCoroutineDispatcher
import kotlinx.coroutines.currentCoroutineContext import kotlinx.coroutines.currentCoroutineContext
import kotlinx.coroutines.ensureActive import kotlinx.coroutines.ensureActive
import kotlinx.coroutines.flow.buffer
import kotlinx.coroutines.flow.collect import kotlinx.coroutines.flow.collect
import kotlinx.coroutines.flow.flow import kotlinx.coroutines.flow.flow
import kotlinx.coroutines.flow.onCompletion import kotlinx.coroutines.flow.onCompletion
import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.flow.onEach
import kotlinx.coroutines.flow.onStart import kotlinx.coroutines.flow.onStart
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import kotlinx.coroutines.withTimeout
import org.mozilla.javascript.WrappedException import org.mozilla.javascript.WrappedException
import splitties.init.appCtx import splitties.init.appCtx
import splitties.systemservices.notificationManager import splitties.systemservices.notificationManager
@@ -132,46 +132,8 @@ class CheckSourceService : BaseService() {
private suspend fun checkSource(source: BookSource) { private suspend fun checkSource(source: BookSource) {
kotlin.runCatching { kotlin.runCatching {
Debug.startChecking(source) withTimeout(CheckSource.timeout) {
source.removeInvalidGroups() doCheckSource(source)
source.removeErrorComment()
//校验搜索书籍
if (CheckSource.checkSearch) {
val searchWord = source.getCheckKeyword(CheckSource.keyword)
if (!source.searchUrl.isNullOrBlank()) {
source.removeGroup("搜索链接规则为空")
val searchBooks = WebBook.searchBookAwait(source, searchWord)
if (searchBooks.isEmpty()) {
source.addGroup("搜索失效")
} else {
source.removeGroup("搜索失效")
checkBook(searchBooks.first().toBook(), source)
}
} else {
source.addGroup("搜索链接规则为空")
}
}
//校验发现书籍
if (CheckSource.checkDiscovery && !source.exploreUrl.isNullOrBlank()) {
val url = source.exploreKinds().firstOrNull {
!it.url.isNullOrBlank()
}?.url
if (url.isNullOrBlank()) {
source.addGroup("发现规则为空")
} else {
source.removeGroup("发现规则为空")
val exploreBooks = WebBook.exploreBookAwait(source, url)
if (exploreBooks.isEmpty()) {
source.addGroup("发现失效")
} else {
source.removeGroup("发现失效")
checkBook(exploreBooks.first().toBook(), source, false)
}
}
}
val finalCheckMessage = source.getInvalidGroupNames()
if (finalCheckMessage.isNotBlank()) {
throw NoStackTraceException(finalCheckMessage)
} }
}.onSuccess { }.onSuccess {
Debug.updateFinalMessage(source.bookSourceUrl, "校验成功") Debug.updateFinalMessage(source.bookSourceUrl, "校验成功")
@@ -188,6 +150,50 @@ class CheckSourceService : BaseService() {
source.respondTime = Debug.getRespondTime(source.bookSourceUrl) source.respondTime = Debug.getRespondTime(source.bookSourceUrl)
} }
private suspend fun doCheckSource(source: BookSource) {
Debug.startChecking(source)
source.removeInvalidGroups()
source.removeErrorComment()
//校验搜索书籍
if (CheckSource.checkSearch) {
val searchWord = source.getCheckKeyword(CheckSource.keyword)
if (!source.searchUrl.isNullOrBlank()) {
source.removeGroup("搜索链接规则为空")
val searchBooks = WebBook.searchBookAwait(source, searchWord)
if (searchBooks.isEmpty()) {
source.addGroup("搜索失效")
} else {
source.removeGroup("搜索失效")
checkBook(searchBooks.first().toBook(), source)
}
} else {
source.addGroup("搜索链接规则为空")
}
}
//校验发现书籍
if (CheckSource.checkDiscovery && !source.exploreUrl.isNullOrBlank()) {
val url = source.exploreKinds().firstOrNull {
!it.url.isNullOrBlank()
}?.url
if (url.isNullOrBlank()) {
source.addGroup("发现规则为空")
} else {
source.removeGroup("发现规则为空")
val exploreBooks = WebBook.exploreBookAwait(source, url)
if (exploreBooks.isEmpty()) {
source.addGroup("发现失效")
} else {
source.removeGroup("发现失效")
checkBook(exploreBooks.first().toBook(), source, false)
}
}
}
val finalCheckMessage = source.getInvalidGroupNames()
if (finalCheckMessage.isNotBlank()) {
throw NoStackTraceException(finalCheckMessage)
}
}
/** /**
*校验书源的详情目录正文 *校验书源的详情目录正文
*/ */