Merge remote-tracking branch 'origin/master'

pull/111/head
kunfei 5 years ago
commit 38400a1e8e
  1. 12
      app/src/main/java/io/legado/app/model/analyzeRule/AnalyzeByJSoup.kt
  2. 12
      app/src/main/java/io/legado/app/model/analyzeRule/AnalyzeRule.kt
  3. 11
      app/src/main/java/io/legado/app/ui/rss/read/ReadRssActivity.kt
  4. 2
      app/src/main/java/io/legado/app/ui/rss/read/ReadRssViewModel.kt

@ -359,8 +359,7 @@ class AnalyzeByJSoup {
try { try {
when (lastRule) { when (lastRule) {
"text" -> for (element in elements) { "text" -> for (element in elements) {
val text = element.text() textS.add(element.text())
textS.add(text)
} }
"textNodes" -> for (element in elements) { "textNodes" -> for (element in elements) {
val tn = arrayListOf<String>() val tn = arrayListOf<String>()
@ -373,12 +372,15 @@ class AnalyzeByJSoup {
} }
textS.add(join("\n", tn)) textS.add(join("\n", tn))
} }
"ownText", "html" -> { "ownText" -> for (element in elements) {
elements.select("script").remove() textS.add(element.ownText())
}
"html" -> {
elements.select("script, style").remove()
val html = elements.html() val html = elements.html()
textS.add(html) textS.add(html)
} }
"all" -> textS.add(elements.html()) "all" -> textS.add(elements.outerHtml())
else -> for (element in elements) { else -> for (element in elements) {
val url = element.attr(lastRule) val url = element.attr(lastRule)
if (!isEmpty(url) && !textS.contains(url)) { if (!isEmpty(url) && !textS.contains(url)) {

@ -8,6 +8,7 @@ import io.legado.app.data.entities.BaseBook
import io.legado.app.data.entities.BookChapter import io.legado.app.data.entities.BookChapter
import io.legado.app.help.JsExtensions import io.legado.app.help.JsExtensions
import io.legado.app.utils.* import io.legado.app.utils.*
import org.jsoup.nodes.Entities
import org.mozilla.javascript.NativeObject import org.mozilla.javascript.NativeObject
import java.util.* import java.util.*
import java.util.regex.Pattern import java.util.regex.Pattern
@ -206,7 +207,7 @@ class AnalyzeRule(var book: BaseBook? = null) : JsExtensions {
else -> sourceRule.rule else -> sourceRule.rule
} }
} }
if (sourceRule.replaceRegex.isNotEmpty()) { if ((result != null) && sourceRule.replaceRegex.isNotEmpty()) {
result = replaceRegex(result.toString(), sourceRule) result = replaceRegex(result.toString(), sourceRule)
} }
} }
@ -214,10 +215,15 @@ class AnalyzeRule(var book: BaseBook? = null) : JsExtensions {
} }
} }
if (result == null) result = "" if (result == null) result = ""
val str = try {
Entities.unescape(result.toString())
} catch (e: Exception) {
result.toString()
}
if (isUrl) { if (isUrl) {
return NetworkUtils.getAbsoluteURL(baseUrl, result.toString()) ?: "" return NetworkUtils.getAbsoluteURL(baseUrl, str) ?: ""
} }
return result.toString() return str
} }
/** /**

@ -77,15 +77,10 @@ class ReadRssActivity : VMBaseActivity<ReadRssViewModel>(R.layout.activity_rss_r
val url = NetworkUtils.getAbsoluteURL(it.origin, it.link) val url = NetworkUtils.getAbsoluteURL(it.origin, it.link)
val html = viewModel.clHtml(content) val html = viewModel.clHtml(content)
if (viewModel.rssSource?.loadWithBaseUrl == true) { if (viewModel.rssSource?.loadWithBaseUrl == true) {
webView.loadDataWithBaseURL( webView.loadDataWithBaseURL(url, html, "text/html", "utf-8", url)//不想用baseUrl进else
url,
html,
"text/html",
"utf-8",
url
)//不想用baseUrl进else
} else { } else {
webView.loadData(html, "text/html;charset=utf-8", "utf-8")//经测试可以解决中文乱码 //webView.loadData(html, "text/html;charset=utf-8", "utf-8")//经测试可以解决中文乱码
webView.loadDataWithBaseURL(null, html, "text/html;charset=utf-8", "utf-8", url)
} }
} }
}) })

@ -86,7 +86,7 @@ class ReadRssViewModel(application: Application) : BaseViewModel(application),
} }
fun clHtml(content: String): String { fun clHtml(content: String): String {
return if (content.contains("<style>|style=".toRegex())) { return if (content.contains("<style>".toRegex())) {
content content
} else { } else {
""" """

Loading…
Cancel
Save