|
|
@ -2,19 +2,19 @@ package io.legado.app.model.localBook |
|
|
|
|
|
|
|
|
|
|
|
import android.net.Uri |
|
|
|
import android.net.Uri |
|
|
|
import androidx.documentfile.provider.DocumentFile |
|
|
|
import androidx.documentfile.provider.DocumentFile |
|
|
|
|
|
|
|
import io.legado.app.constant.AppConst |
|
|
|
|
|
|
|
import io.legado.app.constant.AppPattern |
|
|
|
import io.legado.app.data.appDb |
|
|
|
import io.legado.app.data.appDb |
|
|
|
import io.legado.app.data.entities.Book |
|
|
|
import io.legado.app.data.entities.Book |
|
|
|
import io.legado.app.data.entities.BookChapter |
|
|
|
import io.legado.app.data.entities.BookChapter |
|
|
|
|
|
|
|
import io.legado.app.help.AppConfig |
|
|
|
import io.legado.app.help.BookHelp |
|
|
|
import io.legado.app.help.BookHelp |
|
|
|
import io.legado.app.utils.* |
|
|
|
import io.legado.app.utils.* |
|
|
|
import splitties.init.appCtx |
|
|
|
import splitties.init.appCtx |
|
|
|
import java.io.File |
|
|
|
import java.io.File |
|
|
|
|
|
|
|
import java.util.regex.Matcher |
|
|
|
import java.util.regex.Pattern |
|
|
|
import java.util.regex.Pattern |
|
|
|
import io.legado.app.constant.AppConst |
|
|
|
|
|
|
|
import io.legado.app.constant.AppPattern |
|
|
|
|
|
|
|
import io.legado.app.help.AppConfig |
|
|
|
|
|
|
|
import javax.script.SimpleBindings |
|
|
|
import javax.script.SimpleBindings |
|
|
|
import java.util.regex.Matcher |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
object LocalBook { |
|
|
|
object LocalBook { |
|
|
|
private const val folderName = "bookTxt" |
|
|
|
private const val folderName = "bookTxt" |
|
|
@ -74,17 +74,15 @@ object LocalBook { |
|
|
|
.compile("(^)(.+) by (.+)$") |
|
|
|
.compile("(^)(.+) by (.+)$") |
|
|
|
.matcher(fileName) |
|
|
|
.matcher(fileName) |
|
|
|
|
|
|
|
|
|
|
|
(m1.takeIf { m1.find() } |
|
|
|
(m1.takeIf { m1.find() } ?: m2.takeIf { m2.find() }).run { |
|
|
|
?: m2.takeIf { m2.find() } |
|
|
|
|
|
|
|
). run{ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if(this is Matcher) { |
|
|
|
if (this is Matcher) { |
|
|
|
|
|
|
|
|
|
|
|
//按默认格式将文件名分解成书名、作者名 |
|
|
|
//按默认格式将文件名分解成书名、作者名 |
|
|
|
name = group(2)!! |
|
|
|
name = group(2)!! |
|
|
|
author = BookHelp.formatBookAuthor((group(1) ?: "") + (group(3) ?: "")) |
|
|
|
author = BookHelp.formatBookAuthor((group(1) ?: "") + (group(3) ?: "")) |
|
|
|
|
|
|
|
|
|
|
|
} else if(!AppConfig.bookImportFileName.isNullOrBlank()) { |
|
|
|
} else if (!AppConfig.bookImportFileName.isNullOrBlank()) { |
|
|
|
|
|
|
|
|
|
|
|
//在脚本中定义如何分解文件名成书名、作者名 |
|
|
|
//在脚本中定义如何分解文件名成书名、作者名 |
|
|
|
val bindings = SimpleBindings() |
|
|
|
val bindings = SimpleBindings() |
|
|
@ -92,16 +90,18 @@ object LocalBook { |
|
|
|
val jsonStr = AppConst.SCRIPT_ENGINE.eval( |
|
|
|
val jsonStr = AppConst.SCRIPT_ENGINE.eval( |
|
|
|
|
|
|
|
|
|
|
|
//在用户脚本后添加捕获author、name的代码,只要脚本中author、name有值就会被捕获,未定义则赋值为空字符串 |
|
|
|
//在用户脚本后添加捕获author、name的代码,只要脚本中author、name有值就会被捕获,未定义则赋值为空字符串 |
|
|
|
AppConfig.bookImportFileName + "\nJSON.stringify({author:author,name:name})" |
|
|
|
AppConfig.bookImportFileName + "\nJSON.stringify({author:author,name:name})", |
|
|
|
, bindings).toString() |
|
|
|
bindings |
|
|
|
val bookMess =GSON.fromJsonObject<HashMap<String, String>>(jsonStr) ?: HashMap() |
|
|
|
).toString() |
|
|
|
name = bookMess["name"]?: fileName |
|
|
|
val bookMess = GSON.fromJsonObject<HashMap<String, String>>(jsonStr) ?: HashMap() |
|
|
|
|
|
|
|
name = bookMess["name"] ?: fileName |
|
|
|
author = bookMess["author"]?.takeIf { it.length != fileName.length } ?: "" |
|
|
|
author = bookMess["author"]?.takeIf { it.length != fileName.length } ?: "" |
|
|
|
|
|
|
|
|
|
|
|
} else { |
|
|
|
} else { |
|
|
|
|
|
|
|
|
|
|
|
name = fileName.replace(AppPattern.nameRegex,"") |
|
|
|
name = fileName.replace(AppPattern.nameRegex, "") |
|
|
|
author = fileName.replace(AppPattern.authorRegex,"").takeIf { it.length != fileName.length } ?: "" |
|
|
|
author = fileName.replace(AppPattern.authorRegex, "") |
|
|
|
|
|
|
|
.takeIf { it.length != fileName.length } ?: "" |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
@ -129,10 +129,10 @@ object LocalBook { |
|
|
|
val bookFile = FileUtils.getFile(cacheFolder, book.originName) |
|
|
|
val bookFile = FileUtils.getFile(cacheFolder, book.originName) |
|
|
|
bookFile.delete() |
|
|
|
bookFile.delete() |
|
|
|
} |
|
|
|
} |
|
|
|
if(book.isEpub()){ |
|
|
|
if (book.isEpub()) { |
|
|
|
val bookFile=BookHelp.getEpubFile(book).parentFile |
|
|
|
val bookFile = BookHelp.getEpubFile(book).parentFile |
|
|
|
if (bookFile!=null&&bookFile.exists()){ |
|
|
|
if (bookFile != null && bookFile.exists()) { |
|
|
|
FileUtils.delete(bookFile,true) |
|
|
|
FileUtils.delete(bookFile, true) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|