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