pull/1061/head
gedoor 4 years ago
parent 7203a948a5
commit 47106522bc
  1. 20
      app/src/main/java/io/legado/app/model/localBook/LocalBook.kt

@ -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,9 +74,7 @@ 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) {
@ -92,8 +90,9 @@ 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
).toString()
val bookMess = GSON.fromJsonObject<HashMap<String, String>>(jsonStr) ?: HashMap() val bookMess = GSON.fromJsonObject<HashMap<String, String>>(jsonStr) ?: HashMap()
name = bookMess["name"] ?: fileName name = bookMess["name"] ?: fileName
author = bookMess["author"]?.takeIf { it.length != fileName.length } ?: "" author = bookMess["author"]?.takeIf { it.length != fileName.length } ?: ""
@ -101,7 +100,8 @@ object LocalBook {
} 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 } ?: ""
} }

Loading…
Cancel
Save