pull/2498/head
Horis 2 years ago
parent 3c2121b156
commit 7a8776450e
  1. 6
      app/src/main/java/io/legado/app/model/analyzeRule/AnalyzeUrl.kt
  2. 17
      app/src/main/java/io/legado/app/ui/book/source/debug/BookSourceDebugActivity.kt
  3. 5
      app/src/main/java/io/legado/app/utils/StringExtensions.kt

@ -14,6 +14,7 @@ import io.legado.app.data.entities.BaseSource
import io.legado.app.data.entities.Book
import io.legado.app.data.entities.BookChapter
import io.legado.app.exception.ConcurrentException
import io.legado.app.exception.NoStackTraceException
import io.legado.app.help.CacheManager
import io.legado.app.help.JsExtensions
import io.legado.app.help.config.AppConfig
@ -222,8 +223,9 @@ class AnalyzeUrl(
queryStr = fieldsTxt
val queryS = fieldsTxt.splitNotBlank("&")
for (query in queryS) {
val value = query.substringAfter("=")
val key = query.substringBefore("=")
val queryPair = query.splitNotBlank("=", limit = 2)
val key = queryPair[0]
val value = queryPair.getOrNull(1) ?: ""
if (charset.isNullOrEmpty()) {
if (NetworkUtils.hasUrlEncoded(value)) {
fieldMap[key] = value

@ -11,6 +11,7 @@ import io.legado.app.R
import io.legado.app.base.VMBaseActivity
import io.legado.app.databinding.ActivitySourceDebugBinding
import io.legado.app.help.source.exploreKinds
import io.legado.app.lib.dialogs.selector
import io.legado.app.lib.theme.accentColor
import io.legado.app.lib.theme.primaryColor
import io.legado.app.ui.qrcode.QrCodeResult
@ -22,6 +23,7 @@ import io.legado.app.utils.toastOnUi
import io.legado.app.utils.viewbindingdelegate.viewBinding
import kotlinx.coroutines.launch
import splitties.views.onClick
import splitties.views.onLongClick
class BookSourceDebugActivity : VMBaseActivity<ActivitySourceDebugBinding, BookSourceDebugModel>() {
@ -130,14 +132,25 @@ class BookSourceDebugActivity : VMBaseActivity<ActivitySourceDebugBinding, BookS
}
}
launch {
viewModel.bookSource?.exploreKinds()?.firstOrNull {
val exploreKinds = viewModel.bookSource?.exploreKinds()?.filter {
!it.url.isNullOrBlank()
}?.let {
}
exploreKinds?.firstOrNull()?.let {
binding.textFx.text = "${it.title}::${it.url}"
if (it.title.startsWith("ERROR:")) {
adapter.addItem("获取发现出错\n${it.url}")
openOrCloseHelp(false)
searchView.clearFocus()
return@launch
}
}
exploreKinds?.map { it.title }?.let { exploreKindTitles ->
binding.textFx.onLongClick {
selector("选择发现", exploreKindTitles) { _, index ->
val explore = exploreKinds[index]
binding.textFx.text = "${explore.title}::${explore.url}"
searchView.setQuery(binding.textFx.text, true)
}
}
}
}

@ -73,8 +73,9 @@ fun String?.isTrue(nullIsTrue: Boolean = false): Boolean {
return !this.matches("\\s*(?i)(false|no|not|0)\\s*".toRegex())
}
fun String.splitNotBlank(vararg delimiter: String): Array<String> = run {
this.split(*delimiter).map { it.trim() }.filterNot { it.isBlank() }.toTypedArray()
fun String.splitNotBlank(vararg delimiter: String, limit: Int = 0): Array<String> = run {
this.split(*delimiter, limit = limit).map { it.trim() }.filterNot { it.isBlank() }
.toTypedArray()
}
fun String.splitNotBlank(regex: Regex, limit: Int = 0): Array<String> = run {

Loading…
Cancel
Save