Merge remote-tracking branch 'upstream/master'

pull/1121/head
github-actions 3 years ago
commit d2c064667a
  1. 4
      app/build.gradle
  2. 20
      app/src/main/assets/updateLog.md
  3. 57
      app/src/main/java/io/legado/app/help/JsExtensions.kt

@ -168,7 +168,7 @@ dependencies {
implementation 'io.github.jeremyliao:live-event-bus-x:1.8.0'
//
implementation 'org.jsoup:jsoup:1.13.1'
implementation 'org.jsoup:jsoup:1.14.1'
//noinspection GradleDependency
implementation 'cn.wanghaomiao:JsoupXpath:2.3.2'
implementation 'com.jayway.jsonpath:json-path:2.6.0'
@ -205,4 +205,4 @@ dependencies {
//
implementation 'com.github.liuyueyi.quick-chinese-transfer:quick-transfer-core:0.2.1'
}
}

@ -8,6 +8,26 @@
* 正文出现缺字漏字、内容缺失、排版错乱等情况,有可能是净化规则出现问题。先关闭替换净化并刷新,再观察是否正常。如果正常说明净化规则存在误杀,如果关闭后仍然出现相关问题,请点击源链接查看原文与正文是否相同,如果不同,再进行反馈。
* 漫画源看书显示乱码,**阅读与其他软件的源并不通用**,请导入阅读的支持的漫画源!
**2021/07/15**
1. 添加js函数来修复开启js沙箱后某些书源失效。by ag2s20150909
```kotlin
/**
* 获取网络zip文件里面的数据
* @param url zip文件的链接
* @param path 所需获取文件在zip内的路径
* @return zip指定文件的数据
*/
fun getZipStringContent(url: String, path: String): String
/**
* 获取网络zip文件里面的数据
* @param url zip文件的链接
* @param path 所需获取文件在zip内的路径
* @return zip指定文件的数据
*/
fun getZipByteArrayContent(url: String, path: String): ByteArray?
```
* web服务添加一个导航页
**2021/07/11**
1. 开启JS沙箱限制
* 禁止在js里exec运行命令

@ -15,9 +15,13 @@ import kotlinx.coroutines.runBlocking
import org.jsoup.Connection
import org.jsoup.Jsoup
import splitties.init.appCtx
import java.io.ByteArrayInputStream
import java.io.ByteArrayOutputStream
import java.io.File
import java.net.URLEncoder
import java.util.*
import java.util.zip.ZipEntry
import java.util.zip.ZipInputStream
@Keep
@Suppress("unused")
@ -275,6 +279,59 @@ interface JsExtensions {
return null
}
/**
* 获取网络zip文件里面的数据
* @param url zip文件的链接
* @param path 所需获取文件在zip内的路径
* @return zip指定文件的数据
*/
fun getZipStringContent(url: String, path: String): String {
val bytes = runBlocking {
return@runBlocking okHttpClient.newCall { url(url) }.bytes()
}
val bos = ByteArrayOutputStream()
val zis = ZipInputStream(ByteArrayInputStream(bytes))
var entry: ZipEntry? = zis.nextEntry
while (entry != null) {
if (entry.name.equals(path)) {
zis.use { it.copyTo(bos) }
return bos.toString()
}
entry = zis.nextEntry
}
Debug.log("getZipContent 未发现内容")
return ""
}
/**
* 获取网络zip文件里面的数据
* @param url zip文件的链接
* @param path 所需获取文件在zip内的路径
* @return zip指定文件的数据
*/
fun getZipByteArrayContent(url: String, path: String): ByteArray? {
val bytes = runBlocking {
return@runBlocking okHttpClient.newCall { url(url) }.bytes()
}
val bos = ByteArrayOutputStream()
val zis = ZipInputStream(ByteArrayInputStream(bytes))
var entry: ZipEntry? = zis.nextEntry
while (entry != null) {
if (entry.name.equals(path)) {
zis.use { it.copyTo(bos) }
return bos.toByteArray()
}
entry = zis.nextEntry
}
Debug.log("getZipContent 未发现内容")
return null
}
/**
* 返回字体解析类
* @param str 支持url,本地文件,base64,自动判断,自动缓存

Loading…
Cancel
Save