From 83667fe69e357ff76acd71dd47a93c694f8dea67 Mon Sep 17 00:00:00 2001 From: gedoor Date: Sat, 19 Dec 2020 23:13:06 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/java/io/legado/app/model/Debug.kt | 11 ++++++----- .../io/legado/app/model/analyzeRule/AnalyzeRule.kt | 6 ++++++ .../io/legado/app/model/webBook/BookChapterList.kt | 1 - .../java/io/legado/app/model/webBook/BookContent.kt | 2 -- .../java/io/legado/app/model/webBook/BookInfo.kt | 1 - .../io/legado/app/model/webBook/SearchBookModel.kt | 12 ------------ .../main/java/io/legado/app/model/webBook/WebBook.kt | 8 ++++---- .../java/io/legado/app/service/help/CheckSource.kt | 4 +--- .../app/ui/book/changecover/ChangeCoverViewModel.kt | 3 +-- .../ui/book/changesource/ChangeSourceViewModel.kt | 3 +-- .../app/ui/book/explore/ExploreShowActivity.kt | 9 +++++++-- .../app/ui/book/explore/ExploreShowViewModel.kt | 3 +-- .../io/legado/app/ui/book/read/ReadBookViewModel.kt | 4 +--- 13 files changed, 28 insertions(+), 39 deletions(-) diff --git a/app/src/main/java/io/legado/app/model/Debug.kt b/app/src/main/java/io/legado/app/model/Debug.kt index cfd64d6ee..d9a9fa49c 100644 --- a/app/src/main/java/io/legado/app/model/Debug.kt +++ b/app/src/main/java/io/legado/app/model/Debug.kt @@ -1,7 +1,10 @@ package io.legado.app.model import android.annotation.SuppressLint -import io.legado.app.data.entities.* +import io.legado.app.data.entities.Book +import io.legado.app.data.entities.BookChapter +import io.legado.app.data.entities.RssArticle +import io.legado.app.data.entities.RssSource import io.legado.app.help.coroutine.CompositeCoroutine import io.legado.app.model.rss.Rss import io.legado.app.model.webBook.WebBook @@ -142,8 +145,7 @@ object Debug { private fun exploreDebug(webBook: WebBook, url: String) { log(debugSource, "︾开始解析发现页") - val variableBook = SearchBook() - val explore = webBook.exploreBook(url, 1, variableBook) + val explore = webBook.exploreBook(url, 1) .onSuccess { exploreBooks -> if (exploreBooks.isNotEmpty()) { log(debugSource, "︽发现页解析完成") @@ -161,8 +163,7 @@ object Debug { private fun searchDebug(webBook: WebBook, key: String) { log(debugSource, "︾开始解析搜索页") - val variableBook = SearchBook() - val search = webBook.searchBook(key, 1, variableBook) + val search = webBook.searchBook(key, 1) .onSuccess { searchBooks -> if (searchBooks.isNotEmpty()) { log(debugSource, "︽搜索页解析完成") 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 6f3c57ace..7a778472e 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 @@ -41,6 +41,12 @@ class AnalyzeRule(val ruleData: RuleDataInterface) : JsExtensions { private var objectChangedJS = false private var objectChangedJP = false + init { + if (ruleData is BaseBook) { + book = ruleData + } + } + @JvmOverloads fun setContent(content: Any?, baseUrl: String? = null): AnalyzeRule { if (content == null) throw AssertionError("Content cannot be null") 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 5e21f8164..94ba0baf7 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 @@ -211,7 +211,6 @@ object BookChapterList { ): ChapterData> { val analyzeRule = AnalyzeRule(book) analyzeRule.setContent(body).setBaseUrl(baseUrl) - analyzeRule.book = book val chapterList = arrayListOf() val nextUrlList = arrayListOf() val nextTocRule = tocRule.nextTocUrl 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 106a452d1..f1bb8d405 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 @@ -35,7 +35,6 @@ object BookContent { val nextUrlList = arrayListOf(baseUrl) val contentRule = bookSource.getContentRule() val analyzeRule = AnalyzeRule(book).setContent(body, baseUrl) - analyzeRule.book = book var contentData = analyzeContent( book, baseUrl, body, contentRule, bookChapter, bookSource ) @@ -119,7 +118,6 @@ object BookContent { ): ContentData> { val analyzeRule = AnalyzeRule(book) analyzeRule.setContent(body).setBaseUrl(baseUrl) - analyzeRule.book = book val nextUrlList = arrayListOf() analyzeRule.chapter = chapter val nextUrlRule = contentRule.nextContentUrl diff --git a/app/src/main/java/io/legado/app/model/webBook/BookInfo.kt b/app/src/main/java/io/legado/app/model/webBook/BookInfo.kt index ed896f1c3..877081cbc 100644 --- a/app/src/main/java/io/legado/app/model/webBook/BookInfo.kt +++ b/app/src/main/java/io/legado/app/model/webBook/BookInfo.kt @@ -27,7 +27,6 @@ object BookInfo { Debug.log(bookSource.bookSourceUrl, "≡获取成功:${baseUrl}") val infoRule = bookSource.getBookInfoRule() val analyzeRule = AnalyzeRule(book) - analyzeRule.book = book analyzeRule.setContent(body).setBaseUrl(baseUrl) infoRule.init?.let { if (it.isNotBlank()) { diff --git a/app/src/main/java/io/legado/app/model/webBook/SearchBookModel.kt b/app/src/main/java/io/legado/app/model/webBook/SearchBookModel.kt index a641b619a..d94c4df10 100644 --- a/app/src/main/java/io/legado/app/model/webBook/SearchBookModel.kt +++ b/app/src/main/java/io/legado/app/model/webBook/SearchBookModel.kt @@ -21,7 +21,6 @@ class SearchBookModel(private val scope: CoroutineScope, private val callBack: C private var searchKey: String = "" private var tasks = CompositeCoroutine() private var bookSourceList = arrayListOf() - private val variableBookMap = hashMapOf() @Volatile private var searchIndex = -1 @@ -61,15 +60,6 @@ class SearchBookModel(private val scope: CoroutineScope, private val callBack: C } } - private fun getVariableBook(sourceUrl: String): SearchBook { - var vBook = variableBookMap[sourceUrl] - if (vBook == null) { - vBook = SearchBook() - variableBookMap[sourceUrl] = vBook - } - return vBook - } - private fun search(searchId: Long) { synchronized(this) { if (searchIndex >= bookSourceList.lastIndex) { @@ -77,11 +67,9 @@ class SearchBookModel(private val scope: CoroutineScope, private val callBack: C } searchIndex++ val source = bookSourceList[searchIndex] - val variableBook = getVariableBook(source.bookSourceUrl) val task = WebBook(source).searchBook( searchKey, searchPage, - variableBook, scope = scope, context = searchPool!! ).timeout(30000L) diff --git a/app/src/main/java/io/legado/app/model/webBook/WebBook.kt b/app/src/main/java/io/legado/app/model/webBook/WebBook.kt index 7a1c29a05..952ec1993 100644 --- a/app/src/main/java/io/legado/app/model/webBook/WebBook.kt +++ b/app/src/main/java/io/legado/app/model/webBook/WebBook.kt @@ -22,12 +22,11 @@ class WebBook(val bookSource: BookSource) { fun searchBook( key: String, page: Int? = 1, - variableBook: SearchBook, scope: CoroutineScope = Coroutine.DEFAULT, context: CoroutineContext = Dispatchers.IO, ): Coroutine> { return Coroutine.async(scope, context) { - searchBookSuspend(scope, key, page, variableBook) + searchBookSuspend(scope, key, page) } } @@ -35,8 +34,8 @@ class WebBook(val bookSource: BookSource) { scope: CoroutineScope, key: String, page: Int? = 1, - variableBook: SearchBook, ): ArrayList { + val variableBook = SearchBook() bookSource.searchUrl?.let { searchUrl -> val analyzeUrl = AnalyzeUrl( ruleUrl = searchUrl, @@ -66,15 +65,16 @@ class WebBook(val bookSource: BookSource) { fun exploreBook( url: String, page: Int? = 1, - variableBook: SearchBook, scope: CoroutineScope = Coroutine.DEFAULT, context: CoroutineContext = Dispatchers.IO, ): Coroutine> { + val variableBook = SearchBook() return Coroutine.async(scope, context) { val analyzeUrl = AnalyzeUrl( ruleUrl = url, page = page, baseUrl = sourceUrl, + book = variableBook, headerMapF = bookSource.getHeaderMap() ) val res = analyzeUrl.getStrResponse(bookSource.bookSourceUrl) diff --git a/app/src/main/java/io/legado/app/service/help/CheckSource.kt b/app/src/main/java/io/legado/app/service/help/CheckSource.kt index d1b82a556..88d1dbcca 100644 --- a/app/src/main/java/io/legado/app/service/help/CheckSource.kt +++ b/app/src/main/java/io/legado/app/service/help/CheckSource.kt @@ -6,7 +6,6 @@ import io.legado.app.App import io.legado.app.R import io.legado.app.constant.IntentAction import io.legado.app.data.entities.BookSource -import io.legado.app.data.entities.SearchBook import io.legado.app.help.coroutine.Coroutine import io.legado.app.model.webBook.WebBook import io.legado.app.service.CheckSourceService @@ -50,9 +49,8 @@ class CheckSource(val source: BookSource) { onNext: (sourceUrl: String) -> Unit ): Coroutine<*> { val webBook = WebBook(source) - val variableBook = SearchBook(origin = source.bookSourceUrl) return webBook - .searchBook(keyword, scope = scope, context = context, variableBook = variableBook) + .searchBook(keyword, scope = scope, context = context) .timeout(60000L) .onError(Dispatchers.IO) { source.addGroup("失效") diff --git a/app/src/main/java/io/legado/app/ui/book/changecover/ChangeCoverViewModel.kt b/app/src/main/java/io/legado/app/ui/book/changecover/ChangeCoverViewModel.kt index e0635376b..305126b36 100644 --- a/app/src/main/java/io/legado/app/ui/book/changecover/ChangeCoverViewModel.kt +++ b/app/src/main/java/io/legado/app/ui/book/changecover/ChangeCoverViewModel.kt @@ -97,9 +97,8 @@ class ChangeCoverViewModel(application: Application) : BaseViewModel(application } searchIndex++ val source = bookSourceList[searchIndex] - val variableBook = SearchBook(origin = source.bookSourceUrl) val task = WebBook(source) - .searchBook(name, scope = this, context = searchPool!!, variableBook = variableBook) + .searchBook(name, scope = this, context = searchPool!!) .timeout(60000L) .onSuccess(Dispatchers.IO) { if (it.isNotEmpty()) { diff --git a/app/src/main/java/io/legado/app/ui/book/changesource/ChangeSourceViewModel.kt b/app/src/main/java/io/legado/app/ui/book/changesource/ChangeSourceViewModel.kt index 559e91982..7c61b8d62 100644 --- a/app/src/main/java/io/legado/app/ui/book/changesource/ChangeSourceViewModel.kt +++ b/app/src/main/java/io/legado/app/ui/book/changesource/ChangeSourceViewModel.kt @@ -121,10 +121,9 @@ class ChangeSourceViewModel(application: Application) : BaseViewModel(applicatio searchIndex++ } val source = bookSourceList[searchIndex] - val variableBook = SearchBook() val webBook = WebBook(source) val task = webBook - .searchBook(name, variableBook = variableBook, scope = this, context = searchPool!!) + .searchBook(name, scope = this, context = searchPool!!) .timeout(60000L) .onSuccess(IO) { it.forEach { searchBook -> diff --git a/app/src/main/java/io/legado/app/ui/book/explore/ExploreShowActivity.kt b/app/src/main/java/io/legado/app/ui/book/explore/ExploreShowActivity.kt index 67a552833..136717903 100644 --- a/app/src/main/java/io/legado/app/ui/book/explore/ExploreShowActivity.kt +++ b/app/src/main/java/io/legado/app/ui/book/explore/ExploreShowActivity.kt @@ -30,8 +30,11 @@ class ExploreShowActivity : VMBaseActivity>() val errorLiveData = MutableLiveData() private var bookSource: BookSource? = null - private val variableBook = SearchBook() private var exploreUrl: String? = null private var page = 1 @@ -35,7 +34,7 @@ class ExploreShowViewModel(application: Application) : BaseViewModel(application val source = bookSource val url = exploreUrl if (source != null && url != null) { - WebBook(source).exploreBook(url, page, variableBook, this) + WebBook(source).exploreBook(url, page, this) .timeout(30000L) .onSuccess(IO) { searchBooks -> booksData.postValue(searchBooks) diff --git a/app/src/main/java/io/legado/app/ui/book/read/ReadBookViewModel.kt b/app/src/main/java/io/legado/app/ui/book/read/ReadBookViewModel.kt index 0257337aa..7f0962663 100644 --- a/app/src/main/java/io/legado/app/ui/book/read/ReadBookViewModel.kt +++ b/app/src/main/java/io/legado/app/ui/book/read/ReadBookViewModel.kt @@ -8,7 +8,6 @@ import io.legado.app.base.BaseViewModel import io.legado.app.data.entities.Book import io.legado.app.data.entities.BookChapter import io.legado.app.data.entities.BookProgress -import io.legado.app.data.entities.SearchBook import io.legado.app.help.AppConfig import io.legado.app.help.BookHelp import io.legado.app.help.IntentDataHelp @@ -216,9 +215,8 @@ class ReadBookViewModel(application: Application) : BaseViewModel(application) { execute { App.db.bookSourceDao.allTextEnabled.forEach { source -> try { - val variableBook = SearchBook() WebBook(source) - .searchBookSuspend(this, name, variableBook = variableBook) + .searchBookSuspend(this, name) .getOrNull(0)?.let { if (it.name == name && (it.author == author || author == "")) { val book = it.toBook()