parent
4c83e00bf8
commit
e94a01bc69
@ -0,0 +1,69 @@ |
|||||||
|
package io.legado.app.help |
||||||
|
|
||||||
|
import io.legado.app.utils.startActivity |
||||||
|
import io.legado.app.constant.AppLog |
||||||
|
import io.legado.app.exception.NoStackTraceException |
||||||
|
import io.legado.app.data.entities.BaseSource |
||||||
|
import io.legado.app.ui.browser.WebViewActivity |
||||||
|
import io.legado.app.ui.association.VerificationCodeActivity |
||||||
|
import splitties.init.appCtx |
||||||
|
import kotlinx.coroutines.runBlocking |
||||||
|
|
||||||
|
|
||||||
|
object SourceVerificationHelp { |
||||||
|
|
||||||
|
/** |
||||||
|
* 获取书源验证结果 |
||||||
|
* 图片验证码 防爬 滑动验证码 点击字符 等等 |
||||||
|
*/ |
||||||
|
fun getVerificationResult(source: BaseSource?, url: String, title: String, useBrowser: Boolean): String { |
||||||
|
source ?: throw NoStackTraceException("getVerificationResult parameter source cannot be null") |
||||||
|
return runBlocking { |
||||||
|
val key = "${source?.getKey() ?: ""}_verificationResult" |
||||||
|
CacheManager.delete(key) |
||||||
|
|
||||||
|
if (!useBrowser) { |
||||||
|
appCtx.startActivity<VerificationCodeActivity> { |
||||||
|
putExtra("imageUrl", url) |
||||||
|
putExtra("sourceOrigin", source?.getKey()) |
||||||
|
} |
||||||
|
} else { |
||||||
|
startBrowser(source, url, title, true) |
||||||
|
} |
||||||
|
|
||||||
|
var waitUserInput: Boolean = false |
||||||
|
while(CacheManager.get(key) == null) { |
||||||
|
if (!waitUserInput) { |
||||||
|
AppLog.putDebug("等待返回验证结果...") |
||||||
|
waitUserInput = true |
||||||
|
} |
||||||
|
} |
||||||
|
CacheManager.get(key)!!.let { |
||||||
|
if (it.isBlank()) { |
||||||
|
throw NoStackTraceException("验证结果为空") |
||||||
|
} else { |
||||||
|
it |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 启动内置浏览器 |
||||||
|
@param saveResult 保存网页源代码到数据库 |
||||||
|
*/ |
||||||
|
fun startBrowser(source: BaseSource?, url: String, title: String, saveResult: Boolean? = false) { |
||||||
|
source ?: throw NoStackTraceException("startBrowser parameter source cannot be null") |
||||||
|
appCtx.startActivity<WebViewActivity> { |
||||||
|
putExtra("title", title) |
||||||
|
putExtra("url", url) |
||||||
|
putExtra("sourceOrigin", source?.getKey()) |
||||||
|
putExtra("sourceVerificationEnable", saveResult) |
||||||
|
IntentData.put(url, source?.getHeaderMap(true)) |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
private fun checkActivityStatus(): Boolean { |
||||||
|
return true |
||||||
|
} |
||||||
|
} |
Loading…
Reference in new issue