From 079088d6e5ac11daaa137b0bfedf109dfffcda75 Mon Sep 17 00:00:00 2001 From: kunfei Date: Fri, 28 Jun 2019 23:42:09 +0800 Subject: [PATCH] up --- .../io/legado/app/data/dao/BookSourceDao.kt | 8 +- .../java/io/legado/app/data/entities/Book.kt | 4 +- .../io/legado/app/data/entities/BookSource.kt | 30 ++++- .../io/legado/app/data/entities/SearchBook.kt | 4 +- .../legado/app/data/entities/rule/BaseRule.kt | 8 -- .../app/data/entities/rule/BookInfoRule.kt | 17 ++- .../app/data/entities/rule/ChapterRule.kt | 10 -- .../app/data/entities/rule/ContentRule.kt | 5 +- .../app/data/entities/rule/ExploreRule.kt | 17 ++- .../legado/app/data/entities/rule/PutRule.kt | 6 - .../io/legado/app/data/entities/rule/Rule.kt | 120 ------------------ .../app/data/entities/rule/SearchRule.kt | 17 ++- .../legado/app/data/entities/rule/TocRule.kt | 8 ++ .../io/legado/app/help/storage/Restore.kt | 62 ++++++++- .../app/model/analyzeRule/AnalyzeHeaders.kt | 6 +- .../app/model/analyzeRule/AnalyzeRule.kt | 2 +- .../app/model/analyzeRule/AnalyzeUrl.kt | 2 +- .../ui/main/booksource/BookSourceAdapter.kt | 4 +- .../ui/main/booksource/BookSourceFragment.kt | 2 +- .../app/ui/main/findbook/FindBookAdapter.kt | 4 +- .../app/ui/sourceedit/SourceEditActivity.kt | 5 +- .../app/ui/sourceedit/SourceEditViewModel.kt | 2 +- .../io/legado/app/utils/GsonExtensions.kt | 2 +- 23 files changed, 145 insertions(+), 200 deletions(-) delete mode 100644 app/src/main/java/io/legado/app/data/entities/rule/BaseRule.kt delete mode 100644 app/src/main/java/io/legado/app/data/entities/rule/ChapterRule.kt delete mode 100644 app/src/main/java/io/legado/app/data/entities/rule/PutRule.kt delete mode 100644 app/src/main/java/io/legado/app/data/entities/rule/Rule.kt create mode 100644 app/src/main/java/io/legado/app/data/entities/rule/TocRule.kt diff --git a/app/src/main/java/io/legado/app/data/dao/BookSourceDao.kt b/app/src/main/java/io/legado/app/data/dao/BookSourceDao.kt index ddc2f3cfa..d93baa8fb 100644 --- a/app/src/main/java/io/legado/app/data/dao/BookSourceDao.kt +++ b/app/src/main/java/io/legado/app/data/dao/BookSourceDao.kt @@ -10,13 +10,13 @@ interface BookSourceDao { @Query("select * from book_sources order by customOrder asc") fun observeAll(): DataSource.Factory - @Query("select * from book_sources where bookSourceName like :searchKey or `bookSourceGroup` like :searchKey or bookSourceOrigin like :searchKey order by customOrder asc") + @Query("select * from book_sources where bookSourceName like :searchKey or `bookSourceGroup` like :searchKey or bookSourceUrl like :searchKey order by customOrder asc") fun observeSearch(searchKey: String = ""): DataSource.Factory - @Query("select distinct enabled from book_sources where bookSourceName like :searchKey or `bookSourceGroup` like :searchKey or bookSourceOrigin like :searchKey") + @Query("select distinct enabled from book_sources where bookSourceName like :searchKey or `bookSourceGroup` like :searchKey or bookSourceUrl like :searchKey") fun searchIsEnable(searchKey: String = ""): List - @Query("UPDATE book_sources SET enabled = :enable where bookSourceName like :searchKey or `bookSourceGroup` like :searchKey or bookSourceOrigin like :searchKey") + @Query("UPDATE book_sources SET enabled = :enable where bookSourceName like :searchKey or `bookSourceGroup` like :searchKey or bookSourceUrl like :searchKey") fun enableAllSearch(searchKey: String = "", enable: String = "1") @Query("select * from book_sources where enabledExplore = 1 order by customOrder asc") @@ -25,7 +25,7 @@ interface BookSourceDao { @get:Query("select * from book_sources order by customOrder asc") val all: List - @Query("select * from book_sources where bookSourceOrigin = :key") + @Query("select * from book_sources where bookSourceUrl = :key") fun findByKey(key: String): BookSource? @Query("select count(*) from book_sources") diff --git a/app/src/main/java/io/legado/app/data/entities/Book.kt b/app/src/main/java/io/legado/app/data/entities/Book.kt index 80804ce79..cf7ded306 100644 --- a/app/src/main/java/io/legado/app/data/entities/Book.kt +++ b/app/src/main/java/io/legado/app/data/entities/Book.kt @@ -8,7 +8,7 @@ import androidx.room.Index import androidx.room.PrimaryKey import io.legado.app.constant.AppConst.NOT_AVAILABLE import io.legado.app.utils.GSON -import io.legado.app.utils.fromJson +import io.legado.app.utils.fromJsonObject import kotlinx.android.parcel.IgnoredOnParcel import kotlinx.android.parcel.Parcelize @@ -69,7 +69,7 @@ data class Book( variableMap = if (isEmpty(variable)) { HashMap() } else { - GSON.fromJson>(variable!!) + GSON.fromJsonObject>(variable!!) } } } diff --git a/app/src/main/java/io/legado/app/data/entities/BookSource.kt b/app/src/main/java/io/legado/app/data/entities/BookSource.kt index 552427dfb..db9071165 100644 --- a/app/src/main/java/io/legado/app/data/entities/BookSource.kt +++ b/app/src/main/java/io/legado/app/data/entities/BookSource.kt @@ -4,18 +4,21 @@ import android.os.Parcelable import androidx.room.Entity import androidx.room.Index import androidx.room.PrimaryKey +import io.legado.app.data.entities.rule.* +import io.legado.app.utils.GSON +import io.legado.app.utils.fromJsonObject import kotlinx.android.parcel.Parcelize @Parcelize @Entity( tableName = "book_sources", - indices = [(Index(value = ["bookSourceOrigin"], unique = false))] + indices = [(Index(value = ["bookSourceUrl"], unique = false))] ) data class BookSource( var bookSourceName: String = "", // 名称 var bookSourceGroup: String? = null, // 分组 @PrimaryKey - var bookSourceOrigin: String = "", // 地址,包括 http/https + var bookSourceUrl: String = "", // 地址,包括 http/https var bookSourceType: Int = 0, // 类型,0 文本,1 音频 var customOrder: Int = 0, // 手动排序编号 var enabled: Boolean = true, // 是否启用 @@ -29,4 +32,25 @@ data class BookSource( var ruleBookInfo: String? = null, // 书籍信息页规则 var ruleToc: String? = null, // 目录页规则 var ruleContent: String? = null // 正文页规则 -) : Parcelable \ No newline at end of file +) : Parcelable { + + fun getSearchRule(): SearchRule? { + return GSON.fromJsonObject(ruleSearch) + } + + fun getExploreRule(): ExploreRule? { + return GSON.fromJsonObject(ruleExplore) + } + + fun getBookInfoRule(): BookInfoRule? { + return GSON.fromJsonObject(ruleBookInfo) + } + + fun getTocRule(): TocRule? { + return GSON.fromJsonObject(ruleToc) + } + + fun getContentRule(): ContentRule? { + return GSON.fromJsonObject(ruleContent) + } +} \ No newline at end of file diff --git a/app/src/main/java/io/legado/app/data/entities/SearchBook.kt b/app/src/main/java/io/legado/app/data/entities/SearchBook.kt index 23f658b3a..fc71d6dd8 100644 --- a/app/src/main/java/io/legado/app/data/entities/SearchBook.kt +++ b/app/src/main/java/io/legado/app/data/entities/SearchBook.kt @@ -7,7 +7,7 @@ import androidx.room.Ignore import androidx.room.Index import androidx.room.PrimaryKey import io.legado.app.utils.GSON -import io.legado.app.utils.fromJson +import io.legado.app.utils.fromJsonObject import kotlinx.android.parcel.IgnoredOnParcel import kotlinx.android.parcel.Parcelize @@ -40,7 +40,7 @@ data class SearchBook( variableMap = if (TextUtils.isEmpty(variable)) { HashMap() } else { - GSON.fromJson>(variable!!) + GSON.fromJsonObject>(variable!!) } } } diff --git a/app/src/main/java/io/legado/app/data/entities/rule/BaseRule.kt b/app/src/main/java/io/legado/app/data/entities/rule/BaseRule.kt deleted file mode 100644 index 0ba753d23..000000000 --- a/app/src/main/java/io/legado/app/data/entities/rule/BaseRule.kt +++ /dev/null @@ -1,8 +0,0 @@ -package io.legado.app.data.entities.rule - -data class BaseRule( - var selector: String = "", - var template: String? = null, - var attr: String? = null, - var type: RuleType -) diff --git a/app/src/main/java/io/legado/app/data/entities/rule/BookInfoRule.kt b/app/src/main/java/io/legado/app/data/entities/rule/BookInfoRule.kt index 230da5358..396f682c0 100644 --- a/app/src/main/java/io/legado/app/data/entities/rule/BookInfoRule.kt +++ b/app/src/main/java/io/legado/app/data/entities/rule/BookInfoRule.kt @@ -1,11 +1,14 @@ package io.legado.app.data.entities.rule data class BookInfoRule( - var name: Rule, - var author: Rule, - var desc: Rule, - var meta: Rule, - var updateTime: Rule, - var tocUrl: Rule, - var store: List + var urlPattern: String? = null, + var init: String? = null, + var name: String? = null, + var author: String? = null, + var desc: String? = null, + var meta: String? = null, + var lastChapter: String? = null, + var updateTime: String? = null, + var coverUrl: String? = null, + var tocUrl: String? = null ) \ No newline at end of file diff --git a/app/src/main/java/io/legado/app/data/entities/rule/ChapterRule.kt b/app/src/main/java/io/legado/app/data/entities/rule/ChapterRule.kt deleted file mode 100644 index e3799d048..000000000 --- a/app/src/main/java/io/legado/app/data/entities/rule/ChapterRule.kt +++ /dev/null @@ -1,10 +0,0 @@ -package io.legado.app.data.entities.rule - -data class ChapterRule( - var chapterList: Rule, - var isReversed: Boolean = false, - var title: Rule, - var contentUrl: Rule, - var resourceUrl: Rule, - var nextUrl: Rule -) \ No newline at end of file diff --git a/app/src/main/java/io/legado/app/data/entities/rule/ContentRule.kt b/app/src/main/java/io/legado/app/data/entities/rule/ContentRule.kt index a301c114e..c213a9fe8 100644 --- a/app/src/main/java/io/legado/app/data/entities/rule/ContentRule.kt +++ b/app/src/main/java/io/legado/app/data/entities/rule/ContentRule.kt @@ -1,7 +1,6 @@ package io.legado.app.data.entities.rule data class ContentRule( - var fulltext: Rule, - var resourceUrl: Rule, - var nextUrl: Rule + var content: String? = null, + var nextUrl: String? = null ) \ No newline at end of file diff --git a/app/src/main/java/io/legado/app/data/entities/rule/ExploreRule.kt b/app/src/main/java/io/legado/app/data/entities/rule/ExploreRule.kt index f1fe3e425..988679fec 100644 --- a/app/src/main/java/io/legado/app/data/entities/rule/ExploreRule.kt +++ b/app/src/main/java/io/legado/app/data/entities/rule/ExploreRule.kt @@ -1,11 +1,14 @@ package io.legado.app.data.entities.rule data class ExploreRule( - var bookList: Rule, - var name: Rule, - var author: Rule, - var desc: Rule, - var meta: Rule, - var bookUrl: Rule, - var store: PutRule + var exploreUrl: String? = null, + var bookList: String? = null, + var name: String? = null, + var author: String? = null, + var desc: String? = null, + var meta: String? = null, + var lastChapter: String? = null, + var updateTime: String? = null, + var bookUrl: String? = null, + var coverUrl: String? = null ) \ No newline at end of file diff --git a/app/src/main/java/io/legado/app/data/entities/rule/PutRule.kt b/app/src/main/java/io/legado/app/data/entities/rule/PutRule.kt deleted file mode 100644 index 2b315eccb..000000000 --- a/app/src/main/java/io/legado/app/data/entities/rule/PutRule.kt +++ /dev/null @@ -1,6 +0,0 @@ -package io.legado.app.data.entities.rule - -data class PutRule( - var selector: Rule, - var key: String -) \ No newline at end of file diff --git a/app/src/main/java/io/legado/app/data/entities/rule/Rule.kt b/app/src/main/java/io/legado/app/data/entities/rule/Rule.kt deleted file mode 100644 index 8d43370d1..000000000 --- a/app/src/main/java/io/legado/app/data/entities/rule/Rule.kt +++ /dev/null @@ -1,120 +0,0 @@ -package io.legado.app.data.entities.rule - -import io.legado.app.utils.safeTrim -import io.legado.app.utils.splitNotBlank - -data class Rule( - var selectors: List, - var regex: String?, - var replacement: String?, - var javascript: String?, - var extra: String? -) { - companion object { - val JS_PATTERN = Regex("""\{\{([^}]+?)}}""") - val CONST_PATTERN = Regex("""\{(\$\.[^}]+?)}""") - - fun parse(input: String) = when { - input.startsWith("$.") -> parseJSON(input) - input.startsWith("//") -> parseXPATH(input) - input.startsWith("RE:") -> parseREGEX(input) - isJsRule(input) -> parseJS(input) - isConstRule(input) -> parseCONST(input) - else -> parseCSS(input) - } - - private fun isJsRule(input: String): Boolean { - val open = input.indexOf("{{") - if (open < 0) return false - val close = input.indexOf("}}", open) - return close > 0 - } - - private fun isConstRule(input: String): Boolean { - val open = input.indexOf("{") - if (open < 0) return false - val close = input.indexOf("}", open) - return close > 0 - } - - - private fun parseCSS(rawRule: String): List { - val rules = mutableListOf() - for (line in rawRule.splitNotBlank("\n")) { - val baseRule = BaseRule(type = RuleType.CSS) - if (line.contains("@@")) { - val temp = line.split("@@") - baseRule.selector = temp[0].trim() - baseRule.attr = temp[1].safeTrim() ?: "text" // 写了 @@ 但是后面空白的也默认为 text - } else { - baseRule.selector = line - baseRule.attr = "text" - } - rules.add(baseRule) - } - return rules - } - - private fun parseJSON(rawRule: String): List { - val rules = mutableListOf() - for (line in rawRule.splitNotBlank("\n")) { - val baseRule = BaseRule(type = RuleType.JSON) - baseRule.selector = line - rules.add(baseRule) - } - return rules - } - - private fun parseXPATH(rawRule: String): List { - val rules = mutableListOf() - for (line in rawRule.splitNotBlank("\n")) { - val baseRule = BaseRule(type = RuleType.XPATH) - baseRule.selector = line - rules.add(baseRule) - } - return rules - } - - private fun parseCONST(rawRule: String): List { - val rules = mutableListOf() - val subRule = mutableListOf() - for (line in rawRule.splitNotBlank("\n")) { - subRule.clear() - val baseRule = BaseRule(type = RuleType.JSON) - // 保留 URL 中的 % 字符 - baseRule.template = CONST_PATTERN.replace(line.replace("%", "%%")) { match -> - subRule.add(match.groupValues[1]) - "%s" - } - baseRule.selector = subRule.joinToString("\n") - rules.add(baseRule) - } - return rules - } - - private fun parseJS(rawRule: String): List { - TODO() - } - - private fun parseREGEX(rawRule: String): List { - TODO() - } - - } -} - -/* -* -* CSS 规则说明 -* 使用 JSOUP 的"选择规则",后面加上需要获取的属性名或者方法,如 href, data-url, text 等,如果不加默认为 text -* CSS "选择规则" 和 "属性方法" 之间用 @@ 隔开 -* -* CONST 规则说明: -* {$.xxx} 表示要获取 JSON 变量 $.xxx,最先解析 -* {@.yyy} 表示要获取之前存储的变量 yyy -* {#.zzz} 表示直接输出 zzz,可以留空,{#.} 什么也不输出 -* -* */ -enum class RuleType { - CSS, XPATH, JSON, REGEX, CONST, JS, HYBRID -} diff --git a/app/src/main/java/io/legado/app/data/entities/rule/SearchRule.kt b/app/src/main/java/io/legado/app/data/entities/rule/SearchRule.kt index def4cfee0..82b0b9f4a 100644 --- a/app/src/main/java/io/legado/app/data/entities/rule/SearchRule.kt +++ b/app/src/main/java/io/legado/app/data/entities/rule/SearchRule.kt @@ -1,11 +1,14 @@ package io.legado.app.data.entities.rule data class SearchRule( - var bookList: Rule, - var name: Rule, - var author: Rule, - var desc: Rule, - var meta: Rule, - var bookUrl: Rule, - var store: List + var searchUrl: String? = null, + var bookList: String? = null, + var name: String? = null, + var author: String? = null, + var desc: String? = null, + var meta: String? = null, + var lastChapter: String? = null, + var updateTime: String? = null, + var bookUrl: String? = null, + var coverUrl: String? = null ) \ No newline at end of file diff --git a/app/src/main/java/io/legado/app/data/entities/rule/TocRule.kt b/app/src/main/java/io/legado/app/data/entities/rule/TocRule.kt new file mode 100644 index 000000000..d9fe9034c --- /dev/null +++ b/app/src/main/java/io/legado/app/data/entities/rule/TocRule.kt @@ -0,0 +1,8 @@ +package io.legado.app.data.entities.rule + +data class TocRule( + var chapterList: String? = null, + var chapterName: String? = null, + var chapterUrl: String? = null, + var nextUrl: String? = null +) \ No newline at end of file diff --git a/app/src/main/java/io/legado/app/help/storage/Restore.kt b/app/src/main/java/io/legado/app/help/storage/Restore.kt index f698fcb0c..34f8226af 100644 --- a/app/src/main/java/io/legado/app/help/storage/Restore.kt +++ b/app/src/main/java/io/legado/app/help/storage/Restore.kt @@ -10,6 +10,7 @@ import io.legado.app.constant.AppConst import io.legado.app.data.entities.Book import io.legado.app.data.entities.BookSource import io.legado.app.data.entities.ReplaceRule +import io.legado.app.data.entities.rule.* import io.legado.app.utils.* import org.jetbrains.anko.doAsync import org.jetbrains.anko.toast @@ -94,17 +95,64 @@ object Restore { if (shelfFile.exists()) try { doAsync { val items: List> = jsonPath.parse(sourceFile.readText()).read("$") - val existings = App.db.bookSourceDao().all.map { it.origin }.toSet() + val existingSources = App.db.bookSourceDao().all.map { it.bookSourceUrl }.toSet() for (item in items) { val jsonItem = jsonPath.parse(item) val source = BookSource() - source.origin = jsonItem.readString("bookSourceUrl") ?: "" - if (source.origin.isBlank()) continue - if (source.origin in existings) continue - source.name = jsonItem.readString("bookSourceName") ?: "" - source.group = jsonItem.readString("bookSourceGroup") ?: "" + source.bookSourceUrl = jsonItem.readString("bookSourceUrl") ?: "" + if (source.bookSourceUrl.isBlank()) continue + if (source.bookSourceUrl in existingSources) continue + source.bookSourceName = jsonItem.readString("bookSourceName") ?: "" + source.bookSourceGroup = jsonItem.readString("bookSourceGroup") ?: "" source.loginUrl = jsonItem.readString("loginUrl") - + val searchRule = SearchRule( + searchUrl = jsonItem.readString("ruleSearchUrl"), + bookList = jsonItem.readString("ruleSearchList"), + name = jsonItem.readString("ruleSearchName"), + author = jsonItem.readString("ruleSearchAuthor"), + desc = jsonItem.readString("ruleSearchIntroduce"), + meta = jsonItem.readString("ruleSearchKind"), + bookUrl = jsonItem.readString("ruleSearchNoteUrl"), + coverUrl = jsonItem.readString("ruleSearchCoverUrl"), + lastChapter = jsonItem.readString("ruleSearchLastChapter") + ) + source.ruleSearch = GSON.toJson(searchRule) + val exploreRule = ExploreRule( + exploreUrl = jsonItem.readString("ruleFindUrl"), + bookList = jsonItem.readString("ruleFindList"), + name = jsonItem.readString("ruleFindName"), + author = jsonItem.readString("ruleFindAuthor"), + desc = jsonItem.readString("ruleFindIntroduce"), + meta = jsonItem.readString("ruleFindKind"), + bookUrl = jsonItem.readString("ruleFindNoteUrl"), + coverUrl = jsonItem.readString("ruleFindCoverUrl"), + lastChapter = jsonItem.readString("ruleFindLastChapter") + ) + source.ruleExplore = GSON.toJson(exploreRule) + val bookInfoRule = BookInfoRule( + urlPattern = jsonItem.readString("ruleBookUrlPattern"), + init = jsonItem.readString("ruleBookInfoInit"), + name = jsonItem.readString("ruleBookName"), + author = jsonItem.readString("ruleBookAuthor"), + desc = jsonItem.readString("ruleIntroduce"), + meta = jsonItem.readString("ruleBookKind"), + coverUrl = jsonItem.readString("ruleCoverUrl"), + lastChapter = jsonItem.readString("ruleBookLastChapter"), + tocUrl = jsonItem.readString("ruleChapterUrl") + ) + source.ruleBookInfo = GSON.toJson(bookInfoRule) + val chapterRule = TocRule( + chapterList = jsonItem.readString("ruleChapterUrlNext"), + chapterName = jsonItem.readString("ruleChapterName"), + chapterUrl = jsonItem.readString("ruleContentUrl"), + nextUrl = jsonItem.readString("ruleChapterUrlNext") + ) + source.ruleToc = GSON.toJson(chapterRule) + val contentRule = ContentRule( + content = jsonItem.readString("ruleBookContent"), + nextUrl = jsonItem.readString("ruleContentUrlNext") + ) + source.ruleContent = GSON.toJson(contentRule) bookSources.add(source) } App.db.bookSourceDao().insert(*bookSources.toTypedArray()) diff --git a/app/src/main/java/io/legado/app/model/analyzeRule/AnalyzeHeaders.kt b/app/src/main/java/io/legado/app/model/analyzeRule/AnalyzeHeaders.kt index 381987183..d96d1e2de 100644 --- a/app/src/main/java/io/legado/app/model/analyzeRule/AnalyzeHeaders.kt +++ b/app/src/main/java/io/legado/app/model/analyzeRule/AnalyzeHeaders.kt @@ -5,7 +5,7 @@ import io.legado.app.App import io.legado.app.R import io.legado.app.data.entities.BookSource import io.legado.app.utils.GSON -import io.legado.app.utils.fromJson +import io.legado.app.utils.fromJsonObject import io.legado.app.utils.getPrefString import java.util.* @@ -24,12 +24,12 @@ object AnalyzeHeaders { val headerMap = HashMap() if (bookSource != null && !isEmpty(bookSource.header)) { bookSource.header?.let { - val map: HashMap? = GSON.fromJson>(it) + val map: HashMap? = GSON.fromJsonObject>(it) map?.let { headerMap.putAll(map) } } } if (bookSource != null) { - val cookie = App.db.sourceCookieDao().getCookieByUrl(bookSource.origin) + val cookie = App.db.sourceCookieDao().getCookieByUrl(bookSource.bookSourceUrl) cookie?.let { headerMap["Cookie"] = cookie } } return headerMap 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 2f9eb6b45..5693e4d78 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 @@ -259,7 +259,7 @@ class AnalyzeRule(private var book: BaseBook? = null) { val putMatcher = putPattern.matcher(ruleStr) while (putMatcher.find()) { ruleStr = ruleStr.replace(putMatcher.group(), "") - val map = GSON.fromJson>(putMatcher.group(1)) + val map = GSON.fromJsonObject>(putMatcher.group(1)) putRule(map) } return ruleStr diff --git a/app/src/main/java/io/legado/app/model/analyzeRule/AnalyzeUrl.kt b/app/src/main/java/io/legado/app/model/analyzeRule/AnalyzeUrl.kt index dffcd7aee..9382490f7 100644 --- a/app/src/main/java/io/legado/app/model/analyzeRule/AnalyzeUrl.kt +++ b/app/src/main/java/io/legado/app/model/analyzeRule/AnalyzeUrl.kt @@ -121,7 +121,7 @@ constructor(ruleUrl: String, key: String?, page: Int?, headerMapF: Map>(find) +// val map = Gson().fromJsonObject>(find) // headerMap.putAll(map) // } catch (ignored: Exception) { // } diff --git a/app/src/main/java/io/legado/app/ui/main/booksource/BookSourceAdapter.kt b/app/src/main/java/io/legado/app/ui/main/booksource/BookSourceAdapter.kt index e737b02ab..2bf43bb1b 100644 --- a/app/src/main/java/io/legado/app/ui/main/booksource/BookSourceAdapter.kt +++ b/app/src/main/java/io/legado/app/ui/main/booksource/BookSourceAdapter.kt @@ -21,10 +21,10 @@ class BookSourceAdapter : PagedListAdapter() { override fun areItemsTheSame(oldItem: BookSource, newItem: BookSource): Boolean = - oldItem.bookSourceOrigin == newItem.bookSourceOrigin + oldItem.bookSourceUrl == newItem.bookSourceUrl override fun areContentsTheSame(oldItem: BookSource, newItem: BookSource): Boolean = - oldItem.bookSourceOrigin == newItem.bookSourceOrigin + oldItem.bookSourceUrl == newItem.bookSourceUrl && oldItem.bookSourceName == newItem.bookSourceName && oldItem.bookSourceGroup == newItem.bookSourceGroup && oldItem.enabled == newItem.enabled diff --git a/app/src/main/java/io/legado/app/ui/main/booksource/BookSourceFragment.kt b/app/src/main/java/io/legado/app/ui/main/booksource/BookSourceFragment.kt index 9462f03f7..d223cf8b4 100644 --- a/app/src/main/java/io/legado/app/ui/main/booksource/BookSourceFragment.kt +++ b/app/src/main/java/io/legado/app/ui/main/booksource/BookSourceFragment.kt @@ -124,6 +124,6 @@ class BookSourceFragment : BaseFragment(R.layout.fragment_book_source), BookSour } override fun edit(bookSource: BookSource) { - context?.startActivity(Pair("data", bookSource.bookSourceOrigin)) + context?.startActivity(Pair("data", bookSource.bookSourceUrl)) } } \ No newline at end of file diff --git a/app/src/main/java/io/legado/app/ui/main/findbook/FindBookAdapter.kt b/app/src/main/java/io/legado/app/ui/main/findbook/FindBookAdapter.kt index 79af1c168..41b190618 100644 --- a/app/src/main/java/io/legado/app/ui/main/findbook/FindBookAdapter.kt +++ b/app/src/main/java/io/legado/app/ui/main/findbook/FindBookAdapter.kt @@ -17,10 +17,10 @@ class FindBookAdapter:PagedListAdapter companion object { var DIFF_CALLBACK = object : DiffUtil.ItemCallback() { override fun areItemsTheSame(oldItem: BookSource, newItem: BookSource): Boolean = - oldItem.bookSourceOrigin == newItem.bookSourceOrigin + oldItem.bookSourceUrl == newItem.bookSourceUrl override fun areContentsTheSame(oldItem: BookSource, newItem: BookSource): Boolean = - oldItem.bookSourceOrigin == newItem.bookSourceOrigin + oldItem.bookSourceUrl == newItem.bookSourceUrl && oldItem.bookSourceName == newItem.bookSourceName } } diff --git a/app/src/main/java/io/legado/app/ui/sourceedit/SourceEditActivity.kt b/app/src/main/java/io/legado/app/ui/sourceedit/SourceEditActivity.kt index 941685ae3..e89d7042e 100644 --- a/app/src/main/java/io/legado/app/ui/sourceedit/SourceEditActivity.kt +++ b/app/src/main/java/io/legado/app/ui/sourceedit/SourceEditActivity.kt @@ -68,9 +68,10 @@ class SourceEditActivity : BaseActivity() { cb_is_enable_find.isChecked = it.enabledExplore } sourceEditEntities.clear() - sourceEditEntities.add(SourceEditEntity("origin", bookSource?.bookSourceOrigin, R.string.book_source_url)) + sourceEditEntities.add(SourceEditEntity("origin", bookSource?.bookSourceUrl, R.string.book_source_url)) sourceEditEntities.add(SourceEditEntity("name", bookSource?.bookSourceName, R.string.book_source_name)) sourceEditEntities.add(SourceEditEntity("group", bookSource?.bookSourceGroup, R.string.book_source_group)) + adapter.sourceEditEntities = sourceEditEntities adapter.notifyDataSetChanged() } @@ -85,7 +86,7 @@ class SourceEditActivity : BaseActivity() { if (entity.value == null) { return null } else { - bookSource.bookSourceOrigin = entity.value!! + bookSource.bookSourceUrl = entity.value!! } } "name" -> { diff --git a/app/src/main/java/io/legado/app/ui/sourceedit/SourceEditViewModel.kt b/app/src/main/java/io/legado/app/ui/sourceedit/SourceEditViewModel.kt index 19876c56b..bd8363ea5 100644 --- a/app/src/main/java/io/legado/app/ui/sourceedit/SourceEditViewModel.kt +++ b/app/src/main/java/io/legado/app/ui/sourceedit/SourceEditViewModel.kt @@ -20,7 +20,7 @@ class SourceEditViewModel(application: Application) : BaseViewModel(application) fun save(bookSource: BookSource, finally: (() -> Unit)? = null) { launch(IO) { - val source = App.db.bookSourceDao().findByKey(bookSource.bookSourceOrigin) + val source = App.db.bookSourceDao().findByKey(bookSource.bookSourceUrl) if (source == null) { bookSource.customOrder = App.db.bookSourceDao().allCount() } diff --git a/app/src/main/java/io/legado/app/utils/GsonExtensions.kt b/app/src/main/java/io/legado/app/utils/GsonExtensions.kt index 2cb4b1a17..593979856 100644 --- a/app/src/main/java/io/legado/app/utils/GsonExtensions.kt +++ b/app/src/main/java/io/legado/app/utils/GsonExtensions.kt @@ -7,7 +7,7 @@ import org.jetbrains.anko.attempt val GSON: Gson by lazy { GsonBuilder().create() } -inline fun Gson.fromJson(json: String): T = fromJson(json, T::class.java) +inline fun Gson.fromJsonObject(json: String?): T? = fromJson(json, T::class.java) inline fun Gson.fromJsonArray(json: String): ArrayList? { return attempt {