From b7b7c3324dfe77f58834481051c3dca838fc129d Mon Sep 17 00:00:00 2001 From: Xwite <1797350009@qq.com> Date: Fri, 17 Mar 2023 18:04:10 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8E=8B=E7=BC=A9=E6=96=87=E4=BB=B6=E5=92=8C?= =?UTF-8?q?=E8=BF=9C=E7=A8=8B=E6=96=87=E4=BB=B6=E8=87=AA=E5=8A=A8=E6=81=A2?= =?UTF-8?q?=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../io/legado/app/help/book/BookExtensions.kt | 15 +++++++++---- .../legado/app/model/localBook/LocalBook.kt | 22 ++++++++++++------- 2 files changed, 25 insertions(+), 12 deletions(-) diff --git a/app/src/main/java/io/legado/app/help/book/BookExtensions.kt b/app/src/main/java/io/legado/app/help/book/BookExtensions.kt index 7b58246b8..6a9ade837 100644 --- a/app/src/main/java/io/legado/app/help/book/BookExtensions.kt +++ b/app/src/main/java/io/legado/app/help/book/BookExtensions.kt @@ -58,6 +58,14 @@ val Book.isUpError: Boolean val Book.isArchive: Boolean get() = isType(BookType.archive) +val Book.archiveName: String + get() { + if (!isArchive) throw NoStackTraceException("Book is not deCompressed from archive") + // local_book::archive.rar + // webDav::https://...../archive.rar + return origin.substringAfter("::").substringAfterLast("/") + } + fun Book.contains(word: String?): Boolean { if (word.isNullOrEmpty()) { return true @@ -132,13 +140,12 @@ fun Book.getLocalUri(): Uri { return uri } + fun Book.getArchiveUri(): Uri? { val defaultBookDir = AppConfig.defaultBookTreeUri return if (isArchive && !defaultBookDir.isNullOrBlank()) { - // local_book::archive.rar - // webDav::https://...../archive.rar - val archiveFileName = origin.substringAfter("::").substringAfterLast("/") - FileDoc.fromUri(Uri.parse(defaultBookDir), true).find(archiveFileName)?.uri + FileDoc.fromUri(Uri.parse(defaultBookDir), true) + .find(archiveName)?.uri } else { null } 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 f203124d1..1dd42cf43 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 @@ -399,16 +399,22 @@ object LocalBook { AppWebDav.authorization?.let { WebDav(webDavUrl, it) } ?: throw WebDavException("Unexpected defaultBookWebDav") } - val fileUri = runBlocking { - saveBookFile(webdav.downloadInputStream(), localBook.originName) + val InputStream = runBlocking { + webdav.downloadInputStream() } - if (localBook.isArchive) { - importArchiveFile(fileUri, localBook.originName) { - it.contains(localBook.originName) + InputStream.use { + if (localBook.isArchive) { + // 压缩包 + val fileUri = saveBookFile(it, localBook.archiveName) + importArchiveFile(fileUri, localBook.originName) { + it.contains(localBook.originName) + } + } else { + // txt epub pdf umd + val fileUri = saveBookFile(it, localBook.originName) + localBook.bookUrl = FileDoc.fromUri(fileUri, false).toString() + localBook.save() } - } else { - localBook.bookUrl = FileDoc.fromUri(fileUr, false).toString() - localBook.save() } } catch (e: Exception) { e.printOnDebug()