From 88eae602b39a4a370bebba7adbb694c0de680c68 Mon Sep 17 00:00:00 2001 From: Horis <8674809+821938089@users.noreply.github.com> Date: Thu, 27 Feb 2025 15:00:56 +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 --- .../legado/app/model/localBook/LocalBook.kt | 50 ++++++++++++++++--- .../app/model/webBook/BookChapterList.kt | 2 +- .../app/ui/book/info/BookInfoViewModel.kt | 6 +++ 3 files changed, 51 insertions(+), 7 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 69c3cb9ff..ef33d948a 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 @@ -6,7 +6,9 @@ import androidx.documentfile.provider.DocumentFile import com.script.ScriptBindings import com.script.rhino.RhinoScriptEngine import io.legado.app.R -import io.legado.app.constant.* +import io.legado.app.constant.AppLog +import io.legado.app.constant.AppPattern +import io.legado.app.constant.BookType import io.legado.app.data.appDb import io.legado.app.data.entities.BaseSource import io.legado.app.data.entities.Book @@ -16,16 +18,47 @@ import io.legado.app.exception.NoBooksDirException import io.legado.app.exception.NoStackTraceException import io.legado.app.exception.TocEmptyException import io.legado.app.help.AppWebDav -import io.legado.app.help.book.* +import io.legado.app.help.book.BookHelp +import io.legado.app.help.book.ContentProcessor +import io.legado.app.help.book.addType +import io.legado.app.help.book.archiveName +import io.legado.app.help.book.getArchiveUri +import io.legado.app.help.book.getLocalUri +import io.legado.app.help.book.getRemoteUrl +import io.legado.app.help.book.isArchive +import io.legado.app.help.book.isEpub +import io.legado.app.help.book.isMobi +import io.legado.app.help.book.isPdf +import io.legado.app.help.book.isUmd +import io.legado.app.help.book.removeLocalUriCache +import io.legado.app.help.book.simulatedTotalChapterNum +import io.legado.app.help.book.update import io.legado.app.help.config.AppConfig import io.legado.app.lib.webdav.WebDav import io.legado.app.lib.webdav.WebDavException import io.legado.app.model.analyzeRule.AnalyzeUrl -import io.legado.app.utils.* +import io.legado.app.utils.ArchiveUtils +import io.legado.app.utils.FileDoc +import io.legado.app.utils.FileUtils +import io.legado.app.utils.GSON +import io.legado.app.utils.MD5Utils +import io.legado.app.utils.externalFiles +import io.legado.app.utils.fromJsonObject +import io.legado.app.utils.getFile +import io.legado.app.utils.inputStream +import io.legado.app.utils.isAbsUrl +import io.legado.app.utils.isContentScheme +import io.legado.app.utils.isDataUrl +import io.legado.app.utils.printOnDebug import kotlinx.coroutines.runBlocking import org.apache.commons.text.StringEscapeUtils import splitties.init.appCtx -import java.io.* +import java.io.ByteArrayInputStream +import java.io.File +import java.io.FileInputStream +import java.io.FileNotFoundException +import java.io.FileOutputStream +import java.io.InputStream import java.util.regex.Pattern /** @@ -112,9 +145,14 @@ object LocalBook { list.forEachIndexed { index, bookChapter -> bookChapter.index = index } - book.latestChapterTitle = list.last().title + val replaceRules = ContentProcessor.get(book).getTitleReplaceRules() + book.durChapterTitle = list.getOrElse(book.durChapterIndex) { list.last() } + .getDisplayTitle(replaceRules, book.getUseReplaceRule()) + book.latestChapterTitle = + list.getOrElse(book.simulatedTotalChapterNum() - 1) { list.last() } + .getDisplayTitle(replaceRules, book.getUseReplaceRule()) book.totalChapterNum = list.size - book.save() + book.update() return list } 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 15a1aa7dc..2714cfafd 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 @@ -150,7 +150,7 @@ object BookChapterList { } } } - val replaceRules = ContentProcessor.get(book.name, book.origin).getTitleReplaceRules() + val replaceRules = ContentProcessor.get(book).getTitleReplaceRules() book.durChapterTitle = list.getOrElse(book.durChapterIndex) { list.last() } .getDisplayTitle(replaceRules, book.getUseReplaceRule()) if (book.totalChapterNum < list.size) { diff --git a/app/src/main/java/io/legado/app/ui/book/info/BookInfoViewModel.kt b/app/src/main/java/io/legado/app/ui/book/info/BookInfoViewModel.kt index d9fbd6825..bb553712f 100644 --- a/app/src/main/java/io/legado/app/ui/book/info/BookInfoViewModel.kt +++ b/app/src/main/java/io/legado/app/ui/book/info/BookInfoViewModel.kt @@ -226,6 +226,12 @@ class BookInfoViewModel(application: Application) : BaseViewModel(application) { appDb.bookDao.update(book) appDb.bookChapterDao.delByBook(book.bookUrl) appDb.bookChapterDao.insert(*it.toTypedArray()) + if (book.isSameNameAuthor(ReadBook.book)) { + ReadBook.book = book + ReadBook.chapterSize = book.totalChapterNum + ReadBook.simulatedChapterSize = book.simulatedTotalChapterNum() + ReadBook.clearTextChapter() + } chapterListData.postValue(it) } }.onError {