From 848c703d39eb0c27a36a2faf6c069dc1f3b61db6 Mon Sep 17 00:00:00 2001 From: Horis <8674809+821938089@users.noreply.github.com> Date: Fri, 16 May 2025 15:54:45 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/model/analyzeRule/AnalyzeRule.kt | 34 +++++++++++++------ .../legado/app/model/rss/RssParserByRule.kt | 3 +- .../app/model/webBook/BookChapterList.kt | 3 +- .../legado/app/model/webBook/BookContent.kt | 10 +++--- .../io/legado/app/model/webBook/BookList.kt | 5 +-- .../app/ui/book/read/ReadBookActivity.kt | 3 +- 6 files changed, 38 insertions(+), 20 deletions(-) diff --git a/app/src/main/java/io/legado/app/model/analyzeRule/AnalyzeRule.kt b/app/src/main/java/io/legado/app/model/analyzeRule/AnalyzeRule.kt index ca698b7df..ca37bc0b2 100644 --- a/app/src/main/java/io/legado/app/model/analyzeRule/AnalyzeRule.kt +++ b/app/src/main/java/io/legado/app/model/analyzeRule/AnalyzeRule.kt @@ -52,22 +52,19 @@ import kotlin.coroutines.EmptyCoroutineContext @Keep @Suppress("unused", "RegExpRedundantEscape", "MemberVisibilityCanBePrivate") class AnalyzeRule( - var ruleData: RuleDataInterface? = null, + private var ruleData: RuleDataInterface? = null, private val source: BaseSource? = null, private val preUpdateJs: Boolean = false ) : JsExtensions { - val book get() = ruleData as? BaseBook - val rssArticle get() = ruleData as? RssArticle + private val book get() = ruleData as? BaseBook + private val rssArticle get() = ruleData as? RssArticle - var chapter: BookChapter? = null - var nextChapterUrl: String? = null - var content: Any? = null - private set - var baseUrl: String? = null - private set - var redirectUrl: URL? = null - private set + private var chapter: BookChapter? = null + private var nextChapterUrl: String? = null + private var content: Any? = null + private var baseUrl: String? = null + private var redirectUrl: URL? = null private var isJSON: Boolean = false private var isRegex: Boolean = false @@ -894,6 +891,21 @@ class AnalyzeRule( return this } + fun AnalyzeRule.setRuleData(ruleData: RuleDataInterface?): AnalyzeRule { + this.ruleData = ruleData + return this + } + + fun AnalyzeRule.setNextChapterUrl(nextChapterUrl: String?): AnalyzeRule { + this.nextChapterUrl = nextChapterUrl + return this + } + + fun AnalyzeRule.setChapter(chapter: BookChapter?): AnalyzeRule { + this.chapter = chapter + return this + } + } } diff --git a/app/src/main/java/io/legado/app/model/rss/RssParserByRule.kt b/app/src/main/java/io/legado/app/model/rss/RssParserByRule.kt index f7db93657..26fd751b0 100644 --- a/app/src/main/java/io/legado/app/model/rss/RssParserByRule.kt +++ b/app/src/main/java/io/legado/app/model/rss/RssParserByRule.kt @@ -8,6 +8,7 @@ import io.legado.app.exception.NoStackTraceException import io.legado.app.model.Debug import io.legado.app.model.analyzeRule.AnalyzeRule import io.legado.app.model.analyzeRule.AnalyzeRule.Companion.setCoroutineContext +import io.legado.app.model.analyzeRule.AnalyzeRule.Companion.setRuleData import io.legado.app.model.analyzeRule.RuleData import io.legado.app.utils.NetworkUtils import splitties.init.appCtx @@ -101,7 +102,7 @@ object RssParserByRule { ruleLink: List ): RssArticle? { val rssArticle = RssArticle(variable = variable) - analyzeRule.ruleData = rssArticle + analyzeRule.setRuleData(rssArticle) analyzeRule.setContent(item) Debug.log(sourceUrl, "┌获取标题", log) rssArticle.title = analyzeRule.getString(ruleTitle) diff --git a/app/src/main/java/io/legado/app/model/webBook/BookChapterList.kt b/app/src/main/java/io/legado/app/model/webBook/BookChapterList.kt index 3a312facc..01ad6e9ca 100644 --- a/app/src/main/java/io/legado/app/model/webBook/BookChapterList.kt +++ b/app/src/main/java/io/legado/app/model/webBook/BookChapterList.kt @@ -16,6 +16,7 @@ import io.legado.app.help.book.simulatedTotalChapterNum import io.legado.app.help.config.AppConfig import io.legado.app.model.Debug import io.legado.app.model.analyzeRule.AnalyzeRule +import io.legado.app.model.analyzeRule.AnalyzeRule.Companion.setChapter import io.legado.app.model.analyzeRule.AnalyzeRule.Companion.setCoroutineContext import io.legado.app.model.analyzeRule.AnalyzeUrl import io.legado.app.utils.isTrue @@ -217,7 +218,7 @@ object BookChapterList { coroutineContext.ensureActive() analyzeRule.setContent(item) val bookChapter = BookChapter(bookUrl = book.bookUrl, baseUrl = redirectUrl) - analyzeRule.chapter = bookChapter + analyzeRule.setChapter(bookChapter) bookChapter.title = analyzeRule.getString(nameRule) bookChapter.url = analyzeRule.getString(urlRule) bookChapter.tag = analyzeRule.getString(upTimeRule) diff --git a/app/src/main/java/io/legado/app/model/webBook/BookContent.kt b/app/src/main/java/io/legado/app/model/webBook/BookContent.kt index 0455f8f0a..6208254bf 100644 --- a/app/src/main/java/io/legado/app/model/webBook/BookContent.kt +++ b/app/src/main/java/io/legado/app/model/webBook/BookContent.kt @@ -13,7 +13,9 @@ import io.legado.app.help.book.BookHelp import io.legado.app.help.config.AppConfig import io.legado.app.model.Debug import io.legado.app.model.analyzeRule.AnalyzeRule +import io.legado.app.model.analyzeRule.AnalyzeRule.Companion.setChapter import io.legado.app.model.analyzeRule.AnalyzeRule.Companion.setCoroutineContext +import io.legado.app.model.analyzeRule.AnalyzeRule.Companion.setNextChapterUrl import io.legado.app.model.analyzeRule.AnalyzeUrl import io.legado.app.utils.HtmlFormatter import io.legado.app.utils.NetworkUtils @@ -58,8 +60,8 @@ object BookContent { analyzeRule.setContent(body, baseUrl) analyzeRule.setRedirectUrl(redirectUrl) analyzeRule.setCoroutineContext(coroutineContext) - analyzeRule.chapter = bookChapter - analyzeRule.nextChapterUrl = mNextChapterUrl + analyzeRule.setChapter(bookChapter) + analyzeRule.setNextChapterUrl(mNextChapterUrl) coroutineContext.ensureActive() val titleRule = contentRule.title if (!titleRule.isNullOrBlank()) { @@ -170,9 +172,9 @@ object BookContent { analyzeRule.setContent(body, baseUrl) analyzeRule.setCoroutineContext(coroutineContext) val rUrl = analyzeRule.setRedirectUrl(redirectUrl) - analyzeRule.nextChapterUrl = nextChapterUrl + analyzeRule.setNextChapterUrl(nextChapterUrl) val nextUrlList = arrayListOf() - analyzeRule.chapter = chapter + analyzeRule.setChapter(chapter) //获取正文 var content = analyzeRule.getString(contentRule.content, unescape = false) content = HtmlFormatter.formatKeepImg(content, rUrl) diff --git a/app/src/main/java/io/legado/app/model/webBook/BookList.kt b/app/src/main/java/io/legado/app/model/webBook/BookList.kt index f73ecbc01..10898874f 100644 --- a/app/src/main/java/io/legado/app/model/webBook/BookList.kt +++ b/app/src/main/java/io/legado/app/model/webBook/BookList.kt @@ -13,6 +13,7 @@ import io.legado.app.help.source.getBookType import io.legado.app.model.Debug import io.legado.app.model.analyzeRule.AnalyzeRule import io.legado.app.model.analyzeRule.AnalyzeRule.Companion.setCoroutineContext +import io.legado.app.model.analyzeRule.AnalyzeRule.Companion.setRuleData import io.legado.app.model.analyzeRule.AnalyzeUrl import io.legado.app.model.analyzeRule.RuleData import io.legado.app.utils.GSON @@ -170,7 +171,7 @@ object BookList { book.originName = bookSource.bookSourceName book.originOrder = bookSource.customOrder book.type = bookSource.getBookType() - analyzeRule.ruleData = book + analyzeRule.setRuleData(book) BookInfo.analyzeBookInfo( book, body, @@ -212,7 +213,7 @@ object BookList { searchBook.origin = bookSource.bookSourceUrl searchBook.originName = bookSource.bookSourceName searchBook.originOrder = bookSource.customOrder - analyzeRule.ruleData = searchBook + analyzeRule.setRuleData(searchBook) analyzeRule.setContent(item) coroutineContext.ensureActive() Debug.log(bookSource.bookSourceUrl, "┌获取书名", log) diff --git a/app/src/main/java/io/legado/app/ui/book/read/ReadBookActivity.kt b/app/src/main/java/io/legado/app/ui/book/read/ReadBookActivity.kt index d3da4effd..48e5b1ddd 100644 --- a/app/src/main/java/io/legado/app/ui/book/read/ReadBookActivity.kt +++ b/app/src/main/java/io/legado/app/ui/book/read/ReadBookActivity.kt @@ -60,6 +60,7 @@ import io.legado.app.lib.theme.accentColor import io.legado.app.model.ReadAloud import io.legado.app.model.ReadBook import io.legado.app.model.analyzeRule.AnalyzeRule +import io.legado.app.model.analyzeRule.AnalyzeRule.Companion.setChapter import io.legado.app.model.analyzeRule.AnalyzeRule.Companion.setCoroutineContext import io.legado.app.model.localBook.EpubFile import io.legado.app.model.localBook.MobiFile @@ -1289,7 +1290,7 @@ class ReadBookActivity : BaseReadBookActivity(), val analyzeRule = AnalyzeRule(book, source) analyzeRule.setCoroutineContext(coroutineContext) analyzeRule.setBaseUrl(chapter.url) - analyzeRule.chapter = chapter + analyzeRule.setChapter(chapter) analyzeRule.evalJS(payAction).toString() }.onSuccess(IO) { if (it.isAbsUrl()) {