优化
This commit is contained in:
+2
-2
@@ -1,9 +1,9 @@
|
|||||||
package io.legado.app.help.storage
|
package io.legado.app.help
|
||||||
|
|
||||||
import io.legado.app.data.entities.ReplaceRule
|
import io.legado.app.data.entities.ReplaceRule
|
||||||
import io.legado.app.utils.*
|
import io.legado.app.utils.*
|
||||||
|
|
||||||
object OldReplace {
|
object ReplaceAnalyzer {
|
||||||
|
|
||||||
fun jsonToReplaceRules(json: String): List<ReplaceRule> {
|
fun jsonToReplaceRules(json: String): List<ReplaceRule> {
|
||||||
val replaceRules = mutableListOf<ReplaceRule>()
|
val replaceRules = mutableListOf<ReplaceRule>()
|
||||||
@@ -4,7 +4,9 @@ import android.content.Context
|
|||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
import androidx.documentfile.provider.DocumentFile
|
import androidx.documentfile.provider.DocumentFile
|
||||||
import io.legado.app.data.appDb
|
import io.legado.app.data.appDb
|
||||||
|
import io.legado.app.data.entities.Book
|
||||||
import io.legado.app.data.entities.BookSource
|
import io.legado.app.data.entities.BookSource
|
||||||
|
import io.legado.app.help.ReplaceAnalyzer
|
||||||
import io.legado.app.utils.*
|
import io.legado.app.utils.*
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
|
||||||
@@ -83,7 +85,7 @@ object ImportOldData {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun importOldBookshelf(json: String): Int {
|
private fun importOldBookshelf(json: String): Int {
|
||||||
val books = OldBook.toNewBook(json)
|
val books = fromOldBooks(json)
|
||||||
appDb.bookDao.insert(*books.toTypedArray())
|
appDb.bookDao.insert(*books.toTypedArray())
|
||||||
return books.size
|
return books.size
|
||||||
}
|
}
|
||||||
@@ -95,8 +97,48 @@ object ImportOldData {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun importOldReplaceRule(json: String): Int {
|
private fun importOldReplaceRule(json: String): Int {
|
||||||
val rules = OldReplace.jsonToReplaceRules(json)
|
val rules = ReplaceAnalyzer.jsonToReplaceRules(json)
|
||||||
appDb.replaceRuleDao.insert(*rules.toTypedArray())
|
appDb.replaceRuleDao.insert(*rules.toTypedArray())
|
||||||
return rules.size
|
return rules.size
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun fromOldBooks(json: String): List<Book> {
|
||||||
|
val books = mutableListOf<Book>()
|
||||||
|
val items: List<Map<String, Any>> = jsonPath.parse(json).read("$")
|
||||||
|
val existingBooks = appDb.bookDao.allBookUrls.toSet()
|
||||||
|
for (item in items) {
|
||||||
|
val jsonItem = jsonPath.parse(item)
|
||||||
|
val book = Book()
|
||||||
|
book.bookUrl = jsonItem.readString("$.noteUrl") ?: ""
|
||||||
|
if (book.bookUrl.isBlank()) continue
|
||||||
|
book.name = jsonItem.readString("$.bookInfoBean.name") ?: ""
|
||||||
|
if (book.bookUrl in existingBooks) {
|
||||||
|
DebugLog.d(javaClass.name, "Found existing book: " + book.name)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
book.origin = jsonItem.readString("$.tag") ?: ""
|
||||||
|
book.originName = jsonItem.readString("$.bookInfoBean.origin") ?: ""
|
||||||
|
book.author = jsonItem.readString("$.bookInfoBean.author") ?: ""
|
||||||
|
book.type =
|
||||||
|
if (jsonItem.readString("$.bookInfoBean.bookSourceType") == "AUDIO") 1 else 0
|
||||||
|
book.tocUrl = jsonItem.readString("$.bookInfoBean.chapterUrl") ?: book.bookUrl
|
||||||
|
book.coverUrl = jsonItem.readString("$.bookInfoBean.coverUrl")
|
||||||
|
book.customCoverUrl = jsonItem.readString("$.customCoverPath")
|
||||||
|
book.lastCheckTime = jsonItem.readLong("$.bookInfoBean.finalRefreshData") ?: 0
|
||||||
|
book.canUpdate = jsonItem.readBool("$.allowUpdate") == true
|
||||||
|
book.totalChapterNum = jsonItem.readInt("$.chapterListSize") ?: 0
|
||||||
|
book.durChapterIndex = jsonItem.readInt("$.durChapter") ?: 0
|
||||||
|
book.durChapterTitle = jsonItem.readString("$.durChapterName")
|
||||||
|
book.durChapterPos = jsonItem.readInt("$.durChapterPage") ?: 0
|
||||||
|
book.durChapterTime = jsonItem.readLong("$.finalDate") ?: 0
|
||||||
|
book.intro = jsonItem.readString("$.bookInfoBean.introduce")
|
||||||
|
book.latestChapterTitle = jsonItem.readString("$.lastChapterName")
|
||||||
|
book.lastCheckCount = jsonItem.readInt("$.newChapters") ?: 0
|
||||||
|
book.order = jsonItem.readInt("$.serialNumber") ?: 0
|
||||||
|
book.variable = jsonItem.readString("$.variable")
|
||||||
|
book.setUseReplaceRule(jsonItem.readBool("$.useReplaceRule") == true)
|
||||||
|
books.add(book)
|
||||||
|
}
|
||||||
|
return books
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -1,50 +0,0 @@
|
|||||||
package io.legado.app.help.storage
|
|
||||||
|
|
||||||
import io.legado.app.data.appDb
|
|
||||||
import io.legado.app.data.entities.Book
|
|
||||||
import io.legado.app.utils.*
|
|
||||||
|
|
||||||
|
|
||||||
object OldBook {
|
|
||||||
|
|
||||||
fun toNewBook(json: String): List<Book> {
|
|
||||||
val books = mutableListOf<Book>()
|
|
||||||
val items: List<Map<String, Any>> = jsonPath.parse(json).read("$")
|
|
||||||
val existingBooks = appDb.bookDao.allBookUrls.toSet()
|
|
||||||
for (item in items) {
|
|
||||||
val jsonItem = jsonPath.parse(item)
|
|
||||||
val book = Book()
|
|
||||||
book.bookUrl = jsonItem.readString("$.noteUrl") ?: ""
|
|
||||||
if (book.bookUrl.isBlank()) continue
|
|
||||||
book.name = jsonItem.readString("$.bookInfoBean.name") ?: ""
|
|
||||||
if (book.bookUrl in existingBooks) {
|
|
||||||
DebugLog.d(javaClass.name, "Found existing book: " + book.name)
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
book.origin = jsonItem.readString("$.tag") ?: ""
|
|
||||||
book.originName = jsonItem.readString("$.bookInfoBean.origin") ?: ""
|
|
||||||
book.author = jsonItem.readString("$.bookInfoBean.author") ?: ""
|
|
||||||
book.type =
|
|
||||||
if (jsonItem.readString("$.bookInfoBean.bookSourceType") == "AUDIO") 1 else 0
|
|
||||||
book.tocUrl = jsonItem.readString("$.bookInfoBean.chapterUrl") ?: book.bookUrl
|
|
||||||
book.coverUrl = jsonItem.readString("$.bookInfoBean.coverUrl")
|
|
||||||
book.customCoverUrl = jsonItem.readString("$.customCoverPath")
|
|
||||||
book.lastCheckTime = jsonItem.readLong("$.bookInfoBean.finalRefreshData") ?: 0
|
|
||||||
book.canUpdate = jsonItem.readBool("$.allowUpdate") == true
|
|
||||||
book.totalChapterNum = jsonItem.readInt("$.chapterListSize") ?: 0
|
|
||||||
book.durChapterIndex = jsonItem.readInt("$.durChapter") ?: 0
|
|
||||||
book.durChapterTitle = jsonItem.readString("$.durChapterName")
|
|
||||||
book.durChapterPos = jsonItem.readInt("$.durChapterPage") ?: 0
|
|
||||||
book.durChapterTime = jsonItem.readLong("$.finalDate") ?: 0
|
|
||||||
book.intro = jsonItem.readString("$.bookInfoBean.introduce")
|
|
||||||
book.latestChapterTitle = jsonItem.readString("$.lastChapterName")
|
|
||||||
book.lastCheckCount = jsonItem.readInt("$.newChapters") ?: 0
|
|
||||||
book.order = jsonItem.readInt("$.serialNumber") ?: 0
|
|
||||||
book.variable = jsonItem.readString("$.variable")
|
|
||||||
book.setUseReplaceRule(jsonItem.readBool("$.useReplaceRule") == true)
|
|
||||||
books.add(book)
|
|
||||||
}
|
|
||||||
return books
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -7,10 +7,10 @@ import io.legado.app.constant.AppPattern
|
|||||||
import io.legado.app.data.appDb
|
import io.legado.app.data.appDb
|
||||||
import io.legado.app.data.entities.ReplaceRule
|
import io.legado.app.data.entities.ReplaceRule
|
||||||
import io.legado.app.help.AppConfig
|
import io.legado.app.help.AppConfig
|
||||||
|
import io.legado.app.help.ReplaceAnalyzer
|
||||||
import io.legado.app.help.http.newCallResponseBody
|
import io.legado.app.help.http.newCallResponseBody
|
||||||
import io.legado.app.help.http.okHttpClient
|
import io.legado.app.help.http.okHttpClient
|
||||||
import io.legado.app.help.http.text
|
import io.legado.app.help.http.text
|
||||||
import io.legado.app.help.storage.OldReplace
|
|
||||||
import io.legado.app.utils.isAbsUrl
|
import io.legado.app.utils.isAbsUrl
|
||||||
import io.legado.app.utils.splitNotBlank
|
import io.legado.app.utils.splitNotBlank
|
||||||
|
|
||||||
@@ -87,11 +87,11 @@ class ImportReplaceRuleViewModel(app: Application) : BaseViewModel(app) {
|
|||||||
okHttpClient.newCallResponseBody {
|
okHttpClient.newCallResponseBody {
|
||||||
url(text)
|
url(text)
|
||||||
}.text("utf-8").let {
|
}.text("utf-8").let {
|
||||||
val rules = OldReplace.jsonToReplaceRules(it)
|
val rules = ReplaceAnalyzer.jsonToReplaceRules(it)
|
||||||
allRules.addAll(rules)
|
allRules.addAll(rules)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
val rules = OldReplace.jsonToReplaceRules(text)
|
val rules = ReplaceAnalyzer.jsonToReplaceRules(text)
|
||||||
allRules.addAll(rules)
|
allRules.addAll(rules)
|
||||||
}
|
}
|
||||||
}.onError {
|
}.onError {
|
||||||
|
|||||||
Reference in New Issue
Block a user