压缩文件和远程文件自动恢复
This commit is contained in:
@@ -58,6 +58,14 @@ val Book.isUpError: Boolean
|
|||||||
val Book.isArchive: Boolean
|
val Book.isArchive: Boolean
|
||||||
get() = isType(BookType.archive)
|
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 {
|
fun Book.contains(word: String?): Boolean {
|
||||||
if (word.isNullOrEmpty()) {
|
if (word.isNullOrEmpty()) {
|
||||||
return true
|
return true
|
||||||
@@ -132,13 +140,12 @@ fun Book.getLocalUri(): Uri {
|
|||||||
return uri
|
return uri
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
fun Book.getArchiveUri(): Uri? {
|
fun Book.getArchiveUri(): Uri? {
|
||||||
val defaultBookDir = AppConfig.defaultBookTreeUri
|
val defaultBookDir = AppConfig.defaultBookTreeUri
|
||||||
return if (isArchive && !defaultBookDir.isNullOrBlank()) {
|
return if (isArchive && !defaultBookDir.isNullOrBlank()) {
|
||||||
// local_book::archive.rar
|
FileDoc.fromUri(Uri.parse(defaultBookDir), true)
|
||||||
// webDav::https://...../archive.rar
|
.find(archiveName)?.uri
|
||||||
val archiveFileName = origin.substringAfter("::").substringAfterLast("/")
|
|
||||||
FileDoc.fromUri(Uri.parse(defaultBookDir), true).find(archiveFileName)?.uri
|
|
||||||
} else {
|
} else {
|
||||||
null
|
null
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -399,16 +399,22 @@ object LocalBook {
|
|||||||
AppWebDav.authorization?.let { WebDav(webDavUrl, it) }
|
AppWebDav.authorization?.let { WebDav(webDavUrl, it) }
|
||||||
?: throw WebDavException("Unexpected defaultBookWebDav")
|
?: throw WebDavException("Unexpected defaultBookWebDav")
|
||||||
}
|
}
|
||||||
val fileUri = runBlocking {
|
val InputStream = runBlocking {
|
||||||
saveBookFile(webdav.downloadInputStream(), localBook.originName)
|
webdav.downloadInputStream()
|
||||||
}
|
}
|
||||||
if (localBook.isArchive) {
|
InputStream.use {
|
||||||
importArchiveFile(fileUri, localBook.originName) {
|
if (localBook.isArchive) {
|
||||||
it.contains(localBook.originName)
|
// 压缩包
|
||||||
|
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) {
|
} catch (e: Exception) {
|
||||||
e.printOnDebug()
|
e.printOnDebug()
|
||||||
|
|||||||
Reference in New Issue
Block a user