From e0a51033c12ff7a10e54eee85d5b88291fadfb4f Mon Sep 17 00:00:00 2001 From: kunfei Date: Sat, 25 Dec 2021 23:32:04 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../legado/app/model/localBook/LocalBook.kt | 25 +++++++++++-------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/io/legado/app/model/localBook/LocalBook.kt b/app/src/main/java/io/legado/app/model/localBook/LocalBook.kt index e930392c3..ec85423f8 100644 --- a/app/src/main/java/io/legado/app/model/localBook/LocalBook.kt +++ b/app/src/main/java/io/legado/app/model/localBook/LocalBook.kt @@ -59,23 +59,25 @@ object LocalBook { fun importFile(uri: Uri): Book { val path: String + val updateTime: Long //这个变量不要修改,否则会导致读取不到缓存 val fileName = (if (uri.isContentScheme()) { path = uri.toString() - val doc = DocumentFile.fromSingleUri(appCtx, uri) - doc?.let { - val bookFile = cacheFolder.getFile(it.name!!) - if (!bookFile.exists()) { - bookFile.createNewFile() - doc.readBytes(appCtx).let { bytes -> - bookFile.writeBytes(bytes) - } + val doc = DocumentFile.fromSingleUri(appCtx, uri)!! + updateTime = doc.lastModified() + val bookFile = cacheFolder.getFile(doc.name!!) + if (!bookFile.exists()) { + bookFile.createNewFile() + doc.readBytes(appCtx).let { bytes -> + bookFile.writeBytes(bytes) } } - doc?.name!! + doc.name!! } else { path = uri.path!! - File(path).name + val file = File(path) + updateTime = file.lastModified() + file.name }) var book = appDb.bookDao.getBook(path) if (book == null) { @@ -89,7 +91,8 @@ object LocalBook { appCtx.externalFiles, "covers", "${MD5Utils.md5Encode16(path)}.jpg" - ) + ), + latestChapterTime = updateTime ) if (book.isEpub()) EpubFile.upBookInfo(book) if (book.isUmd()) UmdFile.upBookInfo(book) From 1f4c1d1bf4d3bd372fb86de4406d88a06c1f5c1b Mon Sep 17 00:00:00 2001 From: kunfei Date: Sat, 25 Dec 2021 23:49:56 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/io/legado/app/model/localBook/LocalBook.kt | 2 +- .../main/java/io/legado/app/model/localBook/TextFile.kt | 8 ++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/io/legado/app/model/localBook/LocalBook.kt b/app/src/main/java/io/legado/app/model/localBook/LocalBook.kt index ec85423f8..e38b89c1a 100644 --- a/app/src/main/java/io/legado/app/model/localBook/LocalBook.kt +++ b/app/src/main/java/io/legado/app/model/localBook/LocalBook.kt @@ -34,7 +34,7 @@ object LocalBook { UmdFile.getChapterList(book) } else -> { - TextFile().analyze(book) + TextFile.getChapterList(book) } } if (chapters.isEmpty()) { diff --git a/app/src/main/java/io/legado/app/model/localBook/TextFile.kt b/app/src/main/java/io/legado/app/model/localBook/TextFile.kt index 23062ba2e..166a9c90c 100644 --- a/app/src/main/java/io/legado/app/model/localBook/TextFile.kt +++ b/app/src/main/java/io/legado/app/model/localBook/TextFile.kt @@ -14,13 +14,13 @@ import java.nio.charset.Charset import java.util.regex.Matcher import java.util.regex.Pattern -class TextFile { +class TextFile(private val book: Book) { private val tocRules = arrayListOf() private lateinit var charset: Charset @Throws(Exception::class) - fun analyze(book: Book): ArrayList { + fun getChapterList(): ArrayList { val bookFile = getBookFile(book) if (book.charset == null) { book.charset = EncodingDetect.getEncode(bookFile) @@ -249,6 +249,10 @@ class TextFile { //没有标题的时候,每个章节的最大长度 private const val MAX_LENGTH_WITH_NO_CHAPTER = 10 * 1024 + fun getChapterList(book: Book): ArrayList { + return TextFile(book).getChapterList() + } + fun getContent(book: Book, bookChapter: BookChapter): String { val bookFile = getBookFile(book) //获取文件流