diff --git a/app/src/main/assets/help/ruleHelp.md b/app/src/main/assets/help/ruleHelp.md index 043677f4b..b2b1bb0b8 100644 --- a/app/src/main/assets/help/ruleHelp.md +++ b/app/src/main/assets/help/ruleHelp.md @@ -31,8 +31,21 @@ * 获取登录后的cookie ``` -java.getCookie("http://baidu.com", null) => userid=1234;pwd=adbcd -java.getCookie("http://baidu.com", "userid") => 1234 +获取全部 +cookie.getCookie(url) +获取某一键值 +cookie.getKey(url,key) +``` + +* 缓存网络文件 +``` +获取 +java.cacheFile(url) +java.cacheFile(url,saveTime) +执行内容 +eval(String(java.cacheFile(url))) +删除缓存文件 +cache.delete(java.md5Encode16(url)) ``` * 请求头,支持http代理,socks4 socks5代理设置 diff --git a/app/src/main/assets/updateLog.md b/app/src/main/assets/updateLog.md index 72a7a3678..feb5a70ef 100644 --- a/app/src/main/assets/updateLog.md +++ b/app/src/main/assets/updateLog.md @@ -11,6 +11,14 @@ * 正文出现缺字漏字、内容缺失、排版错乱等情况,有可能是净化规则或简繁转换出现问题。 * 漫画源看书显示乱码,**阅读与其他软件的源并不通用**,请导入阅读的支持的漫画源! +**2022/01/04** + +* 弃用java.getCookie(tag,key),请使用cookie.getKey(url,key) +* js添加java.cacheFile(url, saveTime),缓存网络链接,返回文件内容,可实现代码共用和减少代码量 +```js +eval(String(java.cacheFile(url))) +``` + **2022/01/03** * 修复打开Web服务,切出app后很快崩溃 #1489 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 90ec06c55..d420a32de 100644 --- a/app/src/main/java/io/legado/app/help/JsExtensions.kt +++ b/app/src/main/java/io/legado/app/help/JsExtensions.kt @@ -8,6 +8,7 @@ import io.legado.app.constant.AppConst import io.legado.app.constant.AppConst.dateFormat import io.legado.app.data.entities.BaseSource import io.legado.app.help.http.* +import io.legado.app.help.CacheManager import io.legado.app.model.Debug import io.legado.app.model.analyzeRule.AnalyzeUrl import io.legado.app.model.analyzeRule.QueryTTF @@ -125,6 +126,27 @@ interface JsExtensions { } } + /** + * 缓存网络文件 + * @param url 网络文件的链接 + * @param saveTime 缓存时间,单位:秒 + * @return 返回缓存后的文件内容 + */ + fun cacheFile(url: String): String? { + return cacheFile(url, 0) + } + + fun cacheFile(url: String, saveTime: Int = 0): String? { + val key = md5Encode16(url) + val _cache = CacheManager.get(key) + if(_cache.isNullOrBlank()) { + log("首次下载${url}...") + val value = ajax(url) ?: "" + CacheManager.put(key, value as Any, saveTime) + } + return _cache + } + /** * 实现16进制字符串转文件 * @param content 需要转成文件的16进制字符串 @@ -174,19 +196,6 @@ interface JsExtensions { .execute() } - /** - *js实现读取cookie - */ - fun getCookie(tag: String, key: String? = null): String { - val cookie = CookieStore.getCookie(tag) - val cookieMap = CookieStore.cookieToMap(cookie) - return if (key != null) { - cookieMap[key] ?: "" - } else { - cookie - } - } - /** * js实现解码,不能删 */ diff --git a/app/src/main/java/io/legado/app/help/http/CookieStore.kt b/app/src/main/java/io/legado/app/help/http/CookieStore.kt index c8d516091..f9fba9520 100644 --- a/app/src/main/java/io/legado/app/help/http/CookieStore.kt +++ b/app/src/main/java/io/legado/app/help/http/CookieStore.kt @@ -34,6 +34,12 @@ object CookieStore : CookieManager { val cookieBean = appDb.cookieDao.get(NetworkUtils.getSubDomain(url)) return cookieBean?.cookie ?: "" } + + fun getKey(url: String, key: String): String { + val cookie = getCookie(url) + val cookieMap = cookieToMap(cookie) + return cookieMap[key] ?: "" + } override fun removeCookie(url: String) { appDb.cookieDao.delete(NetworkUtils.getSubDomain(url)) diff --git a/app/src/main/res/layout/activity_source_debug.xml b/app/src/main/res/layout/activity_source_debug.xml index 4061274ec..5405684ab 100644 --- a/app/src/main/res/layout/activity_source_debug.xml +++ b/app/src/main/res/layout/activity_source_debug.xml @@ -176,7 +176,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:textColor="@color/secondaryText" - android:text="调试详情页>>输入详情页URL,如:" + android:text="调试正文页>>输入正文页URL,如:" tools:ignore="HardcodedText" />