|
@@ -219,6 +219,8 @@ object LocalBook {
|
|
|
fileName: String,
|
|
fileName: String,
|
|
|
source: BaseSource? = null,
|
|
source: BaseSource? = null,
|
|
|
): Uri {
|
|
): Uri {
|
|
|
|
|
+ AppConfig.defaultBookTreeUri
|
|
|
|
|
+ ?: throw NoStackTraceException("没有设置书籍保存位置!")
|
|
|
val bytes = when {
|
|
val bytes = when {
|
|
|
str.isAbsUrl() -> AnalyzeUrl(str, source = source).getByteArray()
|
|
str.isAbsUrl() -> AnalyzeUrl(str, source = source).getByteArray()
|
|
|
str.isDataUrl() -> Base64.decode(str.substringAfter("base64,"), Base64.DEFAULT)
|
|
str.isDataUrl() -> Base64.decode(str.substringAfter("base64,"), Base64.DEFAULT)
|
|
@@ -269,6 +271,26 @@ object LocalBook {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ fun isOnBookShelf(
|
|
|
|
|
+ fileName: String
|
|
|
|
|
+ ): Boolean {
|
|
|
|
|
+ val defaultBookTreeUri = AppConfig.defaultBookTreeUri
|
|
|
|
|
+ if (defaultBookTreeUri.isNullOrBlank()) throw NoStackTraceException("没有设置书籍保存位置!")
|
|
|
|
|
+ val treeUri = Uri.parse(defaultBookTreeUri)
|
|
|
|
|
+ var bookUrl: String = ""
|
|
|
|
|
+ if (treeUri.isContentScheme()) {
|
|
|
|
|
+ val treeDoc = DocumentFile.fromTreeUri(appCtx, treeUri)
|
|
|
|
|
+ var doc = treeDoc!!.findFile(fileName) ?: return false
|
|
|
|
|
+ bookUrl = doc.uri.toString()
|
|
|
|
|
+ } else {
|
|
|
|
|
+ val treeFile = File(treeUri.path!!)
|
|
|
|
|
+ val file = treeFile.getFile(fileName)
|
|
|
|
|
+ if (!file.exists()) return false
|
|
|
|
|
+ bookUrl = file.absolutePath
|
|
|
|
|
+ }
|
|
|
|
|
+ return appDb.bookDao.getBook(bookUrl) != null
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
//文件类书源 合并在线书籍信息 在线 > 本地
|
|
//文件类书源 合并在线书籍信息 在线 > 本地
|
|
|
fun mergeBook(localBook: Book, onLineBook: Book?): Book {
|
|
fun mergeBook(localBook: Book, onLineBook: Book?): Book {
|
|
|
onLineBook ?: return localBook
|
|
onLineBook ?: return localBook
|