Merge pull request #1119 from ag2s20150909/master

fix:添加js函数来解决开启js沙箱后某类书源失效
pull/1120/head
kunfei 3 years ago committed by GitHub
commit e36acb99cd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 4
      app/build.gradle
  2. 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 '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 //noinspection GradleDependency
implementation 'cn.wanghaomiao:JsoupXpath:2.3.2' implementation 'cn.wanghaomiao:JsoupXpath:2.3.2'
implementation 'com.jayway.jsonpath:json-path:2.6.0' 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' implementation 'com.github.liuyueyi.quick-chinese-transfer:quick-transfer-core:0.2.1'
} }

@ -15,9 +15,13 @@ import kotlinx.coroutines.runBlocking
import org.jsoup.Connection import org.jsoup.Connection
import org.jsoup.Jsoup import org.jsoup.Jsoup
import splitties.init.appCtx import splitties.init.appCtx
import java.io.ByteArrayInputStream
import java.io.ByteArrayOutputStream
import java.io.File import java.io.File
import java.net.URLEncoder import java.net.URLEncoder
import java.util.* import java.util.*
import java.util.zip.ZipEntry
import java.util.zip.ZipInputStream
@Keep @Keep
@Suppress("unused") @Suppress("unused")
@ -275,6 +279,59 @@ interface JsExtensions {
return null 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,自动判断,自动缓存 * @param str 支持url,本地文件,base64,自动判断,自动缓存

Loading…
Cancel
Save