From 1adaefad0c3c50d5b8b3d6626ccb7edd9dc5d60a Mon Sep 17 00:00:00 2001 From: fengyuecanzhu <1021300691@qq.com> Date: Tue, 2 Aug 2022 08:18:56 +0800 Subject: [PATCH] fix lanzou --- .../xyz/fycz/myreader/webapi/LanZouApi.kt | 32 +++++++++++++++---- 1 file changed, 25 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/xyz/fycz/myreader/webapi/LanZouApi.kt b/app/src/main/java/xyz/fycz/myreader/webapi/LanZouApi.kt index e3481fd..62c42d4 100644 --- a/app/src/main/java/xyz/fycz/myreader/webapi/LanZouApi.kt +++ b/app/src/main/java/xyz/fycz/myreader/webapi/LanZouApi.kt @@ -97,9 +97,17 @@ object LanZouApi { ): Coroutine?> { 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 { 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 {