修复导入本地txt时显示为没有书源

pull/1068/head
ag2s20150909 3 years ago
parent d5e7395807
commit 5337ca4713
  1. 2
      app/build.gradle
  2. 4
      app/src/main/java/io/legado/app/model/localBook/EpubFile.kt
  3. 20
      app/src/main/java/io/legado/app/model/localBook/LocalBook.kt

@ -203,6 +203,6 @@ dependencies {
implementation 'io.noties.markwon:html:4.6.0'
//
implementation 'com.github.liuyueyi.quick-chinese-transfer:quick-transfer-core:0.1.3'
implementation 'com.github.liuyueyi.quick-chinese-transfer:quick-transfer-core:0.2.0'
}

@ -30,6 +30,8 @@ class EpubFile(var book: Book) {
@Synchronized
private fun getEFile(book: Book): EpubFile {
BookHelp.getEpubFile(book)
//对于Epub文件默认不启用替换
book.setUseReplaceRule(false)
if (eFile == null || eFile?.book?.bookUrl != book.bookUrl) {
eFile = EpubFile(book)
return eFile!!
@ -135,7 +137,7 @@ class EpubFile(var book: Book) {
/*选择去除正文中的H标签,部分书籍标题与阅读标题重复待优化*/
var tag = Book.hTag
if (book.getDelTag(tag)) {
if (book.getUseReplaceRule()) {
body.getElementsByTag("h1")?.remove()
body.getElementsByTag("h2")?.remove()
body.getElementsByTag("h3")?.remove()

@ -43,6 +43,7 @@ object LocalBook {
fun importFile(uri: Uri): Book {
val path: String
//这个变量不要修改,否则会导致读取不到缓存
val fileName = (if (uri.isContentScheme()) {
path = uri.toString()
val doc = DocumentFile.fromSingleUri(appCtx, uri)
@ -59,7 +60,8 @@ object LocalBook {
} else {
path = uri.path!!
File(path).name
}).replace(Regex("\\.txt$"), "")
})
val tempFileName=fileName.replace(Regex("\\.txt$"), "")
val name: String
val author: String
@ -67,12 +69,12 @@ object LocalBook {
//匹配(知轩藏书常用格式) 《书名》其它信息作者:作者名.txt
val m1 = Pattern
.compile("(.*?)《([^《》]+)》(.*)")
.matcher(fileName)
.matcher(tempFileName)
//匹配 书名 by 作者名.txt
val m2 = Pattern
.compile("(^)(.+) by (.+)$")
.matcher(fileName)
.matcher(tempFileName)
(m1.takeIf { m1.find() } ?: m2.takeIf { m2.find() }).run {
@ -91,17 +93,17 @@ object LocalBook {
AppConfig.bookImportFileName + "\nJSON.stringify({author:author,name:name})",
//将文件名注入到脚步的src变量中
SimpleBindings().also{ it["src"] = fileName }
SimpleBindings().also{ it["src"] = tempFileName }
).toString()
val bookMess = GSON.fromJsonObject<HashMap<String, String>>(jsonStr) ?: HashMap()
name = bookMess["name"] ?: fileName
author = bookMess["author"]?.takeIf { it.length != fileName.length } ?: ""
name = bookMess["name"] ?: tempFileName
author = bookMess["author"]?.takeIf { it.length != tempFileName.length } ?: ""
} else {
name = fileName.replace(AppPattern.nameRegex, "")
author = fileName.replace(AppPattern.authorRegex, "")
.takeIf { it.length != fileName.length } ?: ""
name = tempFileName.replace(AppPattern.nameRegex, "")
author = tempFileName.replace(AppPattern.authorRegex, "")
.takeIf { it.length != tempFileName.length } ?: ""
}

Loading…
Cancel
Save