优化
This commit is contained in:
@@ -62,7 +62,8 @@ val Book.archiveName: String?
|
|||||||
get() {
|
get() {
|
||||||
return if (isArchive) {
|
return if (isArchive) {
|
||||||
// local_book::archive.rar
|
// local_book::archive.rar
|
||||||
origin.substring(BookType.localTag.length + 2)
|
// webDav::https://...../archive.rar
|
||||||
|
origin.substringAfter("::").substringAfterLast("/")
|
||||||
} else {
|
} else {
|
||||||
null
|
null
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -213,6 +213,21 @@ object LocalBook {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* 批量导入 支持自动导入压缩包的支持书籍 */
|
/* 批量导入 支持自动导入压缩包的支持书籍 */
|
||||||
|
fun importFiles(uri: Uri): List<Book> {
|
||||||
|
val books = mutableListOf<Book>()
|
||||||
|
val fileDoc = FileDoc.fromUri(uri, false)
|
||||||
|
if (ArchiveUtils.isArchive(fileDoc.name)) {
|
||||||
|
books.addAll(
|
||||||
|
importArchiveFile(uri) {
|
||||||
|
it.matches(AppPattern.bookFileRegex)
|
||||||
|
}
|
||||||
|
)
|
||||||
|
} else {
|
||||||
|
books.add(importFile(uri))
|
||||||
|
}
|
||||||
|
return books
|
||||||
|
}
|
||||||
|
|
||||||
fun importFiles(uris: List<Uri>) {
|
fun importFiles(uris: List<Uri>) {
|
||||||
var errorCount = 0
|
var errorCount = 0
|
||||||
uris.forEach { uri ->
|
uris.forEach { uri ->
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package io.legado.app.model.remote
|
package io.legado.app.model.remote
|
||||||
|
|
||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
|
import io.legado.app.constant.AppPattern.archiveFileRegex
|
||||||
import io.legado.app.constant.AppPattern.bookFileRegex
|
import io.legado.app.constant.AppPattern.bookFileRegex
|
||||||
import io.legado.app.constant.BookType
|
import io.legado.app.constant.BookType
|
||||||
import io.legado.app.data.entities.Book
|
import io.legado.app.data.entities.Book
|
||||||
@@ -39,7 +40,8 @@ class RemoteBookWebDav(
|
|||||||
val remoteWebDavFileList: List<WebDavFile> = WebDav(path, authorization).listFiles()
|
val remoteWebDavFileList: List<WebDavFile> = WebDav(path, authorization).listFiles()
|
||||||
//转化远程文件信息到本地对象
|
//转化远程文件信息到本地对象
|
||||||
remoteWebDavFileList.forEach { webDavFile ->
|
remoteWebDavFileList.forEach { webDavFile ->
|
||||||
if (webDavFile.isDir || bookFileRegex.matches(webDavFile.displayName)) {
|
if (webDavFile.isDir || bookFileRegex.matches(webDavFile.displayName) || archiveFileRegex.matches(webDavFile.displayName)
|
||||||
|
) {
|
||||||
//扩展名符合阅读的格式则认为是书籍
|
//扩展名符合阅读的格式则认为是书籍
|
||||||
remoteBooks.add(RemoteBook(webDavFile))
|
remoteBooks.add(RemoteBook(webDavFile))
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -124,18 +124,17 @@ class RemoteBookViewModel(application: Application) : BaseViewModel(application)
|
|||||||
|
|
||||||
fun addToBookshelf(remoteBooks: HashSet<RemoteBook>, finally: () -> Unit) {
|
fun addToBookshelf(remoteBooks: HashSet<RemoteBook>, finally: () -> Unit) {
|
||||||
execute {
|
execute {
|
||||||
remoteBooks.forEach { remoteBook ->
|
|
||||||
val bookWebDav = remoteBookWebDav
|
val bookWebDav = remoteBookWebDav
|
||||||
?: throw NoStackTraceException("没有配置webDav")
|
?: throw NoStackTraceException("没有配置webDav")
|
||||||
val downloadBookPath = bookWebDav.downloadRemoteBook(remoteBook)
|
remoteBooks.forEach { remoteBook ->
|
||||||
downloadBookPath.let {
|
val downloadBookUri = bookWebDav.downloadRemoteBook(remoteBook)
|
||||||
val localBook = LocalBook.importFile(it)
|
LocalBook.importFiles(downloadBookUri).forEach { book ->
|
||||||
localBook.origin = BookType.webDavTag + CustomUrl(remoteBook.path)
|
book.origin = BookType.webDavTag + CustomUrl(remoteBook.path)
|
||||||
.putAttribute(
|
.putAttribute(
|
||||||
"serverID",
|
"serverID",
|
||||||
bookWebDav.serverID
|
bookWebDav.serverID
|
||||||
).toString()
|
).toString()
|
||||||
localBook.save()
|
book.save()
|
||||||
remoteBook.isOnBookShelf = true
|
remoteBook.isOnBookShelf = true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -82,7 +82,7 @@ object UrlUtil {
|
|||||||
val headersString = buildString {
|
val headersString = buildString {
|
||||||
headers.forEach { (key, value) ->
|
headers.forEach { (key, value) ->
|
||||||
value.forEach {
|
value.forEach {
|
||||||
append(key ?: "HEAD ${url.toString}")
|
append(key)
|
||||||
append(": ")
|
append(": ")
|
||||||
append(it)
|
append(it)
|
||||||
append("\n")
|
append("\n")
|
||||||
|
|||||||
Reference in New Issue
Block a user