This commit is contained in:
Horis 2024-02-01 23:45:19 +08:00
parent df7d911552
commit 5182f68bd7

View File

@ -34,13 +34,13 @@ import kotlinx.coroutines.TimeoutCancellationException
import kotlinx.coroutines.asCoroutineDispatcher
import kotlinx.coroutines.currentCoroutineContext
import kotlinx.coroutines.ensureActive
import kotlinx.coroutines.flow.buffer
import kotlinx.coroutines.flow.collect
import kotlinx.coroutines.flow.flow
import kotlinx.coroutines.flow.onCompletion
import kotlinx.coroutines.flow.onEach
import kotlinx.coroutines.flow.onStart
import kotlinx.coroutines.launch
import kotlinx.coroutines.withTimeout
import org.mozilla.javascript.WrappedException
import splitties.init.appCtx
import splitties.systemservices.notificationManager
@ -132,46 +132,8 @@ class CheckSourceService : BaseService() {
private suspend fun checkSource(source: BookSource) {
kotlin.runCatching {
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)
withTimeout(CheckSource.timeout) {
doCheckSource(source)
}
}.onSuccess {
Debug.updateFinalMessage(source.bookSourceUrl, "校验成功")
@ -188,6 +150,50 @@ class CheckSourceService : BaseService() {
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)
}
}
/**
*校验书源的详情目录正文
*/