优化
This commit is contained in:
@@ -16,12 +16,17 @@ import java.io.File
|
|||||||
import java.io.FileInputStream
|
import java.io.FileInputStream
|
||||||
import java.io.FileNotFoundException
|
import java.io.FileNotFoundException
|
||||||
import java.io.InputStream
|
import java.io.InputStream
|
||||||
import java.util.regex.Matcher
|
|
||||||
import java.util.regex.Pattern
|
import java.util.regex.Pattern
|
||||||
import javax.script.SimpleBindings
|
import javax.script.SimpleBindings
|
||||||
|
|
||||||
object LocalBook {
|
object LocalBook {
|
||||||
|
|
||||||
|
private val nameAuthorPatterns = arrayOf(
|
||||||
|
Pattern.compile("(.*?)《([^《》]+)》(.*)"),
|
||||||
|
Pattern.compile("(^)(.+) 作者:(.+)$"),
|
||||||
|
Pattern.compile("(^)(.+) by (.+)$")
|
||||||
|
)
|
||||||
|
|
||||||
@Throws(FileNotFoundException::class, SecurityException::class)
|
@Throws(FileNotFoundException::class, SecurityException::class)
|
||||||
fun getBookInputStream(book: Book): InputStream {
|
fun getBookInputStream(book: Book): InputStream {
|
||||||
val uri = Uri.parse(book.bookUrl)
|
val uri = Uri.parse(book.bookUrl)
|
||||||
@@ -117,44 +122,37 @@ object LocalBook {
|
|||||||
val tempFileName = fileName.substringBeforeLast(".")
|
val tempFileName = fileName.substringBeforeLast(".")
|
||||||
var name: String
|
var name: String
|
||||||
var author: String
|
var author: String
|
||||||
//匹配(知轩藏书常用格式) 《书名》其它信息作者:作者名.txt
|
for (pattern in nameAuthorPatterns) {
|
||||||
val m1 = Pattern
|
pattern.matcher(tempFileName).takeIf { it.find() }?.run {
|
||||||
.compile("(.*?)《([^《》]+)》(.*)")
|
|
||||||
.matcher(tempFileName)
|
|
||||||
//匹配 书名 作者:作者名.txt
|
|
||||||
val m2 = Pattern
|
|
||||||
.compile("(^)(.+) 作者:(.+)$")
|
|
||||||
.matcher(tempFileName)
|
|
||||||
|
|
||||||
(m1.takeIf { m1.find() } ?: m2.takeIf { m2.find() }).run {
|
|
||||||
if (this is Matcher) {
|
|
||||||
//按默认格式将文件名分解成书名、作者名
|
|
||||||
name = group(2)!!
|
name = group(2)!!
|
||||||
author = BookHelp.formatBookAuthor((group(1) ?: "") + (group(3) ?: ""))
|
val group1 = group(1) ?: ""
|
||||||
} else if (!AppConfig.bookImportFileName.isNullOrBlank()) {
|
val group3 = group(3) ?: ""
|
||||||
try {
|
author = BookHelp.formatBookAuthor(group1 + group3)
|
||||||
//在脚本中定义如何分解文件名成书名、作者名
|
return Pair(name, author)
|
||||||
val jsonStr = AppConst.SCRIPT_ENGINE.eval(
|
}
|
||||||
//在用户脚本后添加捕获author、name的代码,只要脚本中author、name有值就会被捕获
|
}
|
||||||
AppConfig.bookImportFileName + "\nJSON.stringify({author:author,name:name})",
|
if (!AppConfig.bookImportFileName.isNullOrBlank()) {
|
||||||
//将文件名注入到脚步的src变量中
|
try {
|
||||||
SimpleBindings().also { it["src"] = tempFileName }
|
//在脚本中定义如何分解文件名成书名、作者名
|
||||||
).toString()
|
val jsonStr = AppConst.SCRIPT_ENGINE.eval(
|
||||||
val bookMess = GSON.fromJsonObject<HashMap<String, String>>(jsonStr)
|
//在用户脚本后添加捕获author、name的代码,只要脚本中author、name有值就会被捕获
|
||||||
.getOrThrow() ?: HashMap()
|
AppConfig.bookImportFileName + "\nJSON.stringify({author:author,name:name})",
|
||||||
name = bookMess["name"] ?: tempFileName
|
//将文件名注入到脚步的src变量中
|
||||||
author = bookMess["author"]?.takeIf { it.length != tempFileName.length } ?: ""
|
SimpleBindings().also { it["src"] = tempFileName }
|
||||||
} catch (e: Exception) {
|
).toString()
|
||||||
name = BookHelp.formatBookName(tempFileName)
|
val bookMess = GSON.fromJsonObject<HashMap<String, String>>(jsonStr)
|
||||||
author = BookHelp.formatBookAuthor(tempFileName.replace(name, ""))
|
.getOrThrow() ?: HashMap()
|
||||||
.takeIf { it.length != tempFileName.length } ?: ""
|
name = bookMess["name"] ?: tempFileName
|
||||||
}
|
author = bookMess["author"]?.takeIf { it.length != tempFileName.length } ?: ""
|
||||||
} else {
|
} catch (e: Exception) {
|
||||||
name = BookHelp.formatBookName(tempFileName)
|
name = BookHelp.formatBookName(tempFileName)
|
||||||
author = BookHelp.formatBookAuthor(tempFileName.replace(name, ""))
|
author = BookHelp.formatBookAuthor(tempFileName.replace(name, ""))
|
||||||
.takeIf { it.length != tempFileName.length } ?: ""
|
.takeIf { it.length != tempFileName.length } ?: ""
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
name = BookHelp.formatBookName(tempFileName)
|
||||||
|
author = BookHelp.formatBookAuthor(tempFileName.replace(name, ""))
|
||||||
|
.takeIf { it.length != tempFileName.length } ?: ""
|
||||||
}
|
}
|
||||||
return Pair(name, author)
|
return Pair(name, author)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user