Просмотр исходного кода

Merge pull request #1493 from Xwite/master

重写添加函数;修正书源调试文字错误
kunfei 4 лет назад
Родитель
Сommit
3cae0a28a6

+ 15 - 2
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代理设置

+ 8 - 0
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

+ 22 - 13
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实现解码,不能删
      */

+ 6 - 0
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))

+ 1 - 1
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" />
 
             <TextView