Horis 4 лет назад
Родитель
Сommit
217e30f1f6

+ 4 - 2
app/src/main/java/io/legado/app/model/analyzeRule/AnalyzeUrl.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.Book
 import io.legado.app.data.entities.BookChapter
 import io.legado.app.data.entities.BookChapter
 import io.legado.app.exception.ConcurrentException
 import io.legado.app.exception.ConcurrentException
+import io.legado.app.exception.NoStackTraceException
 import io.legado.app.help.CacheManager
 import io.legado.app.help.CacheManager
 import io.legado.app.help.JsExtensions
 import io.legado.app.help.JsExtensions
 import io.legado.app.help.config.AppConfig
 import io.legado.app.help.config.AppConfig
@@ -222,8 +223,9 @@ class AnalyzeUrl(
         queryStr = fieldsTxt
         queryStr = fieldsTxt
         val queryS = fieldsTxt.splitNotBlank("&")
         val queryS = fieldsTxt.splitNotBlank("&")
         for (query in queryS) {
         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 (charset.isNullOrEmpty()) {
                 if (NetworkUtils.hasUrlEncoded(value)) {
                 if (NetworkUtils.hasUrlEncoded(value)) {
                     fieldMap[key] = value
                     fieldMap[key] = value

+ 15 - 2
app/src/main/java/io/legado/app/ui/book/source/debug/BookSourceDebugActivity.kt

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

+ 3 - 2
app/src/main/java/io/legado/app/utils/StringExtensions.kt

@@ -73,8 +73,9 @@ fun String?.isTrue(nullIsTrue: Boolean = false): Boolean {
     return !this.matches("\\s*(?i)(false|no|not|0)\\s*".toRegex())
     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 {
 fun String.splitNotBlank(regex: Regex, limit: Int = 0): Array<String> = run {