mirror of
https://github.com/gedoor/legado.git
synced 2025-08-10 00:52:30 +00:00
优化
This commit is contained in:
@@ -33,6 +33,7 @@ class App : MultiDexApplication() {
|
||||
.autoClear(false)
|
||||
registerActivityLifecycleCallbacks(LifecycleHelp)
|
||||
defaultSharedPreferences.registerOnSharedPreferenceChangeListener(AppConfig)
|
||||
|
||||
}
|
||||
|
||||
override fun attachBaseContext(base: Context) {
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
package io.legado.app.data.entities
|
||||
|
||||
import io.legado.app.model.analyzeRule.RuleDataInterface
|
||||
import io.legado.app.utils.GSON
|
||||
import io.legado.app.utils.splitNotBlank
|
||||
|
||||
interface BaseBook : RuleDataInterface {
|
||||
@@ -10,16 +9,10 @@ interface BaseBook : RuleDataInterface {
|
||||
var bookUrl: String
|
||||
var kind: String?
|
||||
var wordCount: String?
|
||||
var variable: String?
|
||||
|
||||
var infoHtml: String?
|
||||
var tocHtml: String?
|
||||
|
||||
override fun putVariable(key: String, value: String?) {
|
||||
super.putVariable(key, value)
|
||||
variable = GSON.toJson(variableMap)
|
||||
}
|
||||
|
||||
fun getKindList(): List<String> {
|
||||
val kindList = arrayListOf<String>()
|
||||
wordCount?.let {
|
||||
|
||||
@@ -142,6 +142,10 @@ data class Book(
|
||||
GSON.fromJsonObject<HashMap<String, String>>(variable).getOrNull() ?: hashMapOf()
|
||||
}
|
||||
|
||||
override fun putBigVariable(key: String, value: String) {
|
||||
|
||||
}
|
||||
|
||||
@Ignore
|
||||
@IgnoredOnParcel
|
||||
override var infoHtml: String? = null
|
||||
|
||||
@@ -44,7 +44,7 @@ data class BookChapter(
|
||||
var end: Long? = null, // 章节终止位置
|
||||
var startFragmentId: String? = null, //EPUB书籍当前章节的fragmentId
|
||||
var endFragmentId: String? = null, //EPUB书籍下一章节的fragmentId
|
||||
var variable: String? = null //变量
|
||||
override var variable: String? = null //变量
|
||||
) : Parcelable, RuleDataInterface {
|
||||
|
||||
@delegate:Transient
|
||||
@@ -59,6 +59,10 @@ data class BookChapter(
|
||||
variable = GSON.toJson(variableMap)
|
||||
}
|
||||
|
||||
override fun putBigVariable(key: String, value: String) {
|
||||
|
||||
}
|
||||
|
||||
override fun hashCode() = url.hashCode()
|
||||
|
||||
override fun equals(other: Any?): Boolean {
|
||||
|
||||
@@ -23,7 +23,7 @@ data class RssArticle(
|
||||
var content: String? = null,
|
||||
var image: String? = null,
|
||||
var read: Boolean = false,
|
||||
var variable: String? = null
|
||||
override var variable: String? = null
|
||||
) : RuleDataInterface {
|
||||
|
||||
override fun hashCode() = link.hashCode()
|
||||
@@ -45,6 +45,10 @@ data class RssArticle(
|
||||
variable = GSON.toJson(variableMap)
|
||||
}
|
||||
|
||||
override fun putBigVariable(key: String, value: String) {
|
||||
|
||||
}
|
||||
|
||||
fun toStar() = RssStar(
|
||||
origin = origin,
|
||||
sort = sort,
|
||||
|
||||
@@ -22,7 +22,7 @@ data class RssStar(
|
||||
var description: String? = null,
|
||||
var content: String? = null,
|
||||
var image: String? = null,
|
||||
var variable: String? = null
|
||||
override var variable: String? = null
|
||||
) : RuleDataInterface {
|
||||
|
||||
@delegate:Transient
|
||||
@@ -37,6 +37,10 @@ data class RssStar(
|
||||
variable = GSON.toJson(variableMap)
|
||||
}
|
||||
|
||||
override fun putBigVariable(key: String, value: String) {
|
||||
|
||||
}
|
||||
|
||||
fun toRssArticle() = RssArticle(
|
||||
origin = origin,
|
||||
sort = sort,
|
||||
|
||||
@@ -63,6 +63,10 @@ data class SearchBook(
|
||||
GSON.fromJsonObject<HashMap<String, String>>(variable).getOrNull() ?: HashMap()
|
||||
}
|
||||
|
||||
override fun putBigVariable(key: String, value: String) {
|
||||
|
||||
}
|
||||
|
||||
@delegate:Transient
|
||||
@delegate:Ignore
|
||||
@IgnoredOnParcel
|
||||
|
||||
@@ -24,11 +24,11 @@ import javax.script.SimpleBindings
|
||||
@Keep
|
||||
@Suppress("unused", "RegExpRedundantEscape", "MemberVisibilityCanBePrivate")
|
||||
class AnalyzeRule(
|
||||
val ruleData: RuleDataInterface? = null,
|
||||
var ruleData: RuleDataInterface? = null,
|
||||
private val source: BaseSource? = null
|
||||
) : JsExtensions {
|
||||
|
||||
var book = if (ruleData is BaseBook) ruleData else null
|
||||
val book get() = ruleData as? BaseBook
|
||||
|
||||
var chapter: BookChapter? = null
|
||||
var nextChapterUrl: String? = null
|
||||
@@ -626,9 +626,9 @@ class AnalyzeRule(
|
||||
return it.title
|
||||
}
|
||||
}
|
||||
return chapter?.variableMap?.get(key)
|
||||
?: book?.variableMap?.get(key)
|
||||
?: ruleData?.variableMap?.get(key)
|
||||
return chapter?.getVariable(key)
|
||||
?: book?.getVariable(key)
|
||||
?: ruleData?.getVariable(key)
|
||||
?: ""
|
||||
}
|
||||
|
||||
|
||||
@@ -274,8 +274,8 @@ class AnalyzeUrl(
|
||||
return it.title
|
||||
}
|
||||
}
|
||||
return chapter?.variableMap?.get(key)
|
||||
?: ruleData?.variableMap?.get(key)
|
||||
return chapter?.getVariable(key)
|
||||
?: ruleData?.getVariable(key)
|
||||
?: ""
|
||||
}
|
||||
|
||||
|
||||
@@ -2,8 +2,14 @@ package io.legado.app.model.analyzeRule
|
||||
|
||||
class RuleData : RuleDataInterface {
|
||||
|
||||
override var variable: String? = null
|
||||
|
||||
override val variableMap by lazy {
|
||||
hashMapOf<String, String>()
|
||||
}
|
||||
|
||||
override fun putBigVariable(key: String, value: String) {
|
||||
variableMap[key] = value
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,16 +1,22 @@
|
||||
package io.legado.app.model.analyzeRule
|
||||
|
||||
import io.legado.app.utils.GSON
|
||||
|
||||
interface RuleDataInterface {
|
||||
|
||||
var variable: String?
|
||||
|
||||
val variableMap: HashMap<String, String>
|
||||
|
||||
fun putVariable(key: String, value: String?) {
|
||||
when {
|
||||
value == null -> {
|
||||
variableMap.remove(key)
|
||||
variable = GSON.toJson(variableMap)
|
||||
}
|
||||
value.length < 1000 -> {
|
||||
variableMap[key] = value
|
||||
variable = GSON.toJson(variableMap)
|
||||
}
|
||||
else -> {
|
||||
|
||||
@@ -18,6 +24,8 @@ interface RuleDataInterface {
|
||||
}
|
||||
}
|
||||
|
||||
fun putBigVariable(key: String, value: String)
|
||||
|
||||
fun getVariable(key: String): String? {
|
||||
return variableMap[key]
|
||||
}
|
||||
|
||||
@@ -8,7 +8,6 @@ import io.legado.app.model.Debug
|
||||
import io.legado.app.model.NoStackTraceException
|
||||
import io.legado.app.model.analyzeRule.AnalyzeRule
|
||||
import io.legado.app.model.analyzeRule.RuleDataInterface
|
||||
import io.legado.app.utils.GSON
|
||||
import io.legado.app.utils.NetworkUtils
|
||||
import splitties.init.appCtx
|
||||
import java.util.*
|
||||
@@ -69,7 +68,7 @@ object RssParserByRule {
|
||||
val ruleLink = analyzeRule.splitSourceRule(rssSource.ruleLink)
|
||||
for ((index, item) in collections.withIndex()) {
|
||||
getItem(
|
||||
sourceUrl, item, analyzeRule, index == 0,
|
||||
sourceUrl, item, analyzeRule, ruleData, index == 0,
|
||||
ruleTitle, rulePubDate, ruleDescription, ruleImage, ruleLink
|
||||
)?.let {
|
||||
it.sort = sortName
|
||||
@@ -88,6 +87,7 @@ object RssParserByRule {
|
||||
sourceUrl: String,
|
||||
item: Any,
|
||||
analyzeRule: AnalyzeRule,
|
||||
ruleData: RuleDataInterface,
|
||||
log: Boolean,
|
||||
ruleTitle: List<AnalyzeRule.SourceRule>,
|
||||
rulePubDate: List<AnalyzeRule.SourceRule>,
|
||||
@@ -95,7 +95,8 @@ object RssParserByRule {
|
||||
ruleImage: List<AnalyzeRule.SourceRule>,
|
||||
ruleLink: List<AnalyzeRule.SourceRule>
|
||||
): RssArticle? {
|
||||
val rssArticle = RssArticle()
|
||||
val rssArticle = RssArticle(variable = ruleData.variable)
|
||||
analyzeRule.ruleData = rssArticle
|
||||
analyzeRule.setContent(item)
|
||||
Debug.log(sourceUrl, "┌获取标题", log)
|
||||
rssArticle.title = analyzeRule.getString(ruleTitle)
|
||||
@@ -117,7 +118,6 @@ object RssParserByRule {
|
||||
Debug.log(sourceUrl, "┌获取文章链接", log)
|
||||
rssArticle.link = NetworkUtils.getAbsoluteURL(sourceUrl, analyzeRule.getString(ruleLink))
|
||||
Debug.log(sourceUrl, "└${rssArticle.link}", log)
|
||||
rssArticle.variable = analyzeRule.ruleData?.variableMap?.let { GSON.toJson(it) }
|
||||
if (rssArticle.title.isBlank()) {
|
||||
return null
|
||||
}
|
||||
|
||||
@@ -135,7 +135,7 @@ object BookList {
|
||||
book.originName = bookSource.bookSourceName
|
||||
book.originOrder = bookSource.customOrder
|
||||
book.type = bookSource.bookSourceType
|
||||
analyzeRule.book = book
|
||||
analyzeRule.ruleData = book
|
||||
BookInfo.analyzeBookInfo(
|
||||
scope,
|
||||
book,
|
||||
@@ -175,7 +175,7 @@ object BookList {
|
||||
searchBook.originName = bookSource.bookSourceName
|
||||
searchBook.type = bookSource.bookSourceType
|
||||
searchBook.originOrder = bookSource.customOrder
|
||||
analyzeRule.book = searchBook
|
||||
analyzeRule.ruleData = searchBook
|
||||
analyzeRule.setContent(item)
|
||||
scope.ensureActive()
|
||||
Debug.log(bookSource.bookSourceUrl, "┌获取书名", log)
|
||||
|
||||
Reference in New Issue
Block a user