pull/28/head
fengyuecanzhu 2 years ago
parent aeacb04f7c
commit 1adaefad0c
No known key found for this signature in database
GPG Key ID: 04B78AD06A9D6E6C
  1. 32
      app/src/main/java/xyz/fycz/myreader/webapi/LanZouApi.kt

@ -97,9 +97,17 @@ object LanZouApi {
): Coroutine<List<LanZouFile>?> {
return Coroutine.async {
val params = if (page == 1) {
getFoldParams(getProxyClient().newCallResponseBody { url(foldUrl) }.text(), page, pwd)
getFoldParams(
getProxyClient().newCallResponseBody { url(foldUrl) }.text(),
page,
pwd
)
} else {
paramCathe[foldUrl] ?: getFoldParams(getProxyClient().newCallResponseBody { url(foldUrl) }.text(), page, pwd)
paramCathe[foldUrl] ?: getFoldParams(getProxyClient().newCallResponseBody {
url(
foldUrl
)
}.text(), page, pwd)
}
params["pg"] = page
paramCathe[foldUrl] = params
@ -160,11 +168,15 @@ object LanZouApi {
*/
fun getFileUrl(url: String, password: String = ""): Observable<String> {
return Observable.create {
val html = OkHttpUtils.getHtml(url)
var html = OkHttpUtils.getHtml(url)
val url2 = if (password.isEmpty()) {
val url1 = getUrl1(html)
val data = StringUtils.getSubString(OkHttpUtils.getHtml(url1), "},", "},")
val key = getKeyValueByKey(data, "sign") + "&" + getKeyValueByKey(data, "websignkey")
html = OkHttpUtils.getHtml(url1)
val data = getDataString(html)
Log.d("LanZouUtils", "data:$data")
val key = getKeyValueByKey(html, data, "sign") +
"&" + getKeyValueByKey(html, data, "websignkey")
Log.d("LanZouUtils", "key:$key")
getUrl2(key, url1)
} else {
getUrl2(StringHelper.getSubString(html, "sign=", "&"), url, password)
@ -178,13 +190,19 @@ object LanZouApi {
}
}
fun getDataString(html: String): String {
val start = html.lastIndexOf("data :") + "data :".length
val end = html.indexOf("},", start) + 1
return html.substring(start, end)
}
fun getUrl1(html: String): String {
val doc = Jsoup.parse(html)
return URLCONST.LAN_ZOU_URL + doc.getElementsByTag("iframe").attr("src")
}
fun getKeyValueByKey(html: String, key: String): String {
val keyName = StringHelper.getSubString(html, "'$key':", ",")
fun getKeyValueByKey(html: String, data: String, key: String): String {
val keyName = StringHelper.getSubString(data, "'$key':", ",")
return if (keyName.endsWith("'")) {
key + "=" + keyName.replace("'", "")
} else {

Loading…
Cancel
Save