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