mirror of
https://github.com/gedoor/legado.git
synced 2025-08-10 00:52:30 +00:00
压缩文件和远程文件自动恢复
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user