From 49d8c8c3f17a505c619078172a096dc4ec2ca10d Mon Sep 17 00:00:00 2001 From: Xwite <1797350009@qq.com> Date: Thu, 31 Mar 2022 11:42:00 +0800 Subject: [PATCH 1/3] =?UTF-8?q?feat:js=E6=B7=BB=E5=8A=A0importScript?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/assets/help/jsHelp.md | 6 ++++ .../java/io/legado/app/help/JsExtensions.kt | 32 +++++++++++++++++++ 2 files changed, 38 insertions(+) diff --git a/app/src/main/assets/help/jsHelp.md b/app/src/main/assets/help/jsHelp.md index a23c29fab..40c368d58 100644 --- a/app/src/main/assets/help/jsHelp.md +++ b/app/src/main/assets/help/jsHelp.md @@ -59,6 +59,12 @@ java.ajaxAll(urlList: Array): Array java.log(msg) java.logType(var) ``` +* 从网络(由java.cacheFile实现)、本地导入JavaScript脚本 +``` +{{java.importScript(url)}} +{{java.importScript(relativePath)}} +{{java.importScript(absolutePath)}} +``` * 缓存网络文件 ``` 获取 diff --git a/app/src/main/java/io/legado/app/help/JsExtensions.kt b/app/src/main/java/io/legado/app/help/JsExtensions.kt index b21f5ec69..28ad60458 100644 --- a/app/src/main/java/io/legado/app/help/JsExtensions.kt +++ b/app/src/main/java/io/legado/app/help/JsExtensions.kt @@ -10,6 +10,8 @@ import io.legado.app.constant.AppConst import io.legado.app.constant.AppConst.dateFormat import io.legado.app.constant.AppLog import io.legado.app.data.entities.BaseSource +import io.legado.app.exception.NoStackTraceException +import io.legado.app.help.config.AppConfig import io.legado.app.help.http.* import io.legado.app.model.Debug import io.legado.app.model.analyzeRule.AnalyzeUrl @@ -127,6 +129,36 @@ interface JsExtensions { } } + /** + * 可从网络,本地文件(阅读私有缓存目录和书籍保存位置支持相对路径)导入JavaScript脚本 + */ + fun importScript(path: String): String { + var result: String = "" + when { + path.startsWith("http") -> result = cacheFile(path) ?: "" + path.isContentScheme() -> result = DocumentUtils.readText(appCtx, Uri.parse(path)) + path.startsWith("/storage") -> result = FileUtils.readText(path) + else -> { + //先找书籍保存目录下有没有 + val publicStoragePath = AppConfig.defaultBookTreeUri + val jsString = publicStoragePath?.let { + val jsPath = if (path.startsWith("/")) path else "/" + path + val filePathString = it + jsPath + val fileUri = Uri.parse(filePathString) + if (fileUri.isContentScheme()) { + DocumentUtils.readText(appCtx, fileUri) + } else { + FileUtils.readText(fileUri.path!!) + } + } + //私有目录 + result = if (jsString.isNullOrBlank()) readTxtFile(path) else jsString + } + } + if (result.isBlank()) throw NoStackTraceException("${path} 内容获取失败或者为空") + return result + } + /** * 缓存以文本方式保存的文件 如.js .txt等 */ From 9abd54b6b56f2d75528c55b83662e53bb3d87105 Mon Sep 17 00:00:00 2001 From: Xwite <1797350009@qq.com> Date: Thu, 31 Mar 2022 12:29:38 +0800 Subject: [PATCH 2/3] =?UTF-8?q?docs=EF=BC=9A=E6=B7=BB=E5=8A=A0=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/assets/updateLog.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/app/src/main/assets/updateLog.md b/app/src/main/assets/updateLog.md index 754f92056..3476d2c02 100644 --- a/app/src/main/assets/updateLog.md +++ b/app/src/main/assets/updateLog.md @@ -11,6 +11,11 @@ * 正文出现缺字漏字、内容缺失、排版错乱等情况,有可能是净化规则或简繁转换出现问题。 * 漫画源看书显示乱码,**阅读与其他软件的源并不通用**,请导入阅读的支持的漫画源! +**2022/03/31** + +* 添加java.importScript,详情见js帮助文档 +* 本地书籍信息匹配`(.*?)《([^《》]+)》(.*)`, `(^)(.+) 作者:(.+)$`, `(^)(.+) by (.+)$` + **2022/03/29** * 更新cronet: 100.0.4896.58 From 417836eeaef83b09db74136ac236e9ec8ed98c39 Mon Sep 17 00:00:00 2001 From: Xwite <1797350009@qq.com> Date: Thu, 31 Mar 2022 13:59:52 +0800 Subject: [PATCH 3/3] =?UTF-8?q?fix=EF=BC=9AimportScript=E7=9B=B8=E5=AF=B9?= =?UTF-8?q?=E8=B7=AF=E5=BE=84=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/io/legado/app/help/JsExtensions.kt | 21 +++++++++---------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/io/legado/app/help/JsExtensions.kt b/app/src/main/java/io/legado/app/help/JsExtensions.kt index 28ad60458..7a6662d68 100644 --- a/app/src/main/java/io/legado/app/help/JsExtensions.kt +++ b/app/src/main/java/io/legado/app/help/JsExtensions.kt @@ -133,26 +133,25 @@ interface JsExtensions { * 可从网络,本地文件(阅读私有缓存目录和书籍保存位置支持相对路径)导入JavaScript脚本 */ fun importScript(path: String): String { - var result: String = "" - when { - path.startsWith("http") -> result = cacheFile(path) ?: "" - path.isContentScheme() -> result = DocumentUtils.readText(appCtx, Uri.parse(path)) - path.startsWith("/storage") -> result = FileUtils.readText(path) + val result = when { + path.startsWith("http") -> cacheFile(path) ?: "" + path.isContentScheme() -> DocumentUtils.readText(appCtx, Uri.parse(path)) + path.startsWith("/storage") -> FileUtils.readText(path) else -> { + //相对路径 + val jsPath = if (path.startsWith("/")) path else "/" + path //先找书籍保存目录下有没有 val publicStoragePath = AppConfig.defaultBookTreeUri val jsString = publicStoragePath?.let { - val jsPath = if (path.startsWith("/")) path else "/" + path - val filePathString = it + jsPath - val fileUri = Uri.parse(filePathString) - if (fileUri.isContentScheme()) { + if (it.isContentScheme()) { + val fileUri = Uri.parse(it + URLEncoder.encode(jsPath, "UTF-8")) DocumentUtils.readText(appCtx, fileUri) } else { - FileUtils.readText(fileUri.path!!) + FileUtils.readText(it + jsPath) } } //私有目录 - result = if (jsString.isNullOrBlank()) readTxtFile(path) else jsString + if (jsString.isNullOrBlank()) readTxtFile(path) else jsString } } if (result.isBlank()) throw NoStackTraceException("${path} 内容获取失败或者为空")