From adf384ba633165e300bd4e70346834b531927372 Mon Sep 17 00:00:00 2001 From: FongMi Date: Fri, 10 Mar 2023 09:28:07 +0800 Subject: [PATCH 1/3] Update Doll.java --- .../java/com/github/catvod/spider/Doll.java | 34 +++++++------------ .../java/com/github/catvod/utils/Utils.java | 8 ++++- 2 files changed, 19 insertions(+), 23 deletions(-) diff --git a/app/src/main/java/com/github/catvod/spider/Doll.java b/app/src/main/java/com/github/catvod/spider/Doll.java index df24760f..b8d717e8 100644 --- a/app/src/main/java/com/github/catvod/spider/Doll.java +++ b/app/src/main/java/com/github/catvod/spider/Doll.java @@ -1,8 +1,6 @@ package com.github.catvod.spider; -import android.os.SystemClock; -import android.webkit.WebView; -import android.webkit.WebViewClient; +import android.util.Base64; import com.github.catvod.bean.Class; import com.github.catvod.bean.Result; @@ -15,6 +13,7 @@ import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; +import java.net.URLDecoder; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -60,35 +59,26 @@ public class Doll extends Spider { @Override public String detailContent(List ids) throws Exception { - Document doc = Jsoup.parse(OkHttp.string(url + ids.get(0))); - String name = doc.select("meta[property=og:title]").attr("content"); + String html = OkHttp.string(url + ids.get(0)); + Document doc = Jsoup.parse(html); + StringBuilder sb = new StringBuilder(); + String videoId = ids.get(0).split("/")[1].split("\\.")[0]; String pic = doc.select("meta[property=og:image]").attr("content"); + String name = doc.select("meta[property=og:title]").attr("content"); + String voteTag = new String(Base64.decode(Utils.getVar(html, "voteTag").getBytes(), 0)); + for (int i = 0; i < voteTag.length(); i++) sb.append(Character.toChars(voteTag.charAt(i) ^ videoId.charAt(i % videoId.length()))); + String playUrl = URLDecoder.decode(new String(Base64.decode(sb.toString().getBytes(), 0))); Vod vod = new Vod(); vod.setVodId(ids.get(0)); vod.setVodPic(pic); vod.setVodName(name); vod.setVodPlayFrom("玩偶姐姐"); - vod.setVodPlayUrl("播放$" + ids.get(0)); + vod.setVodPlayUrl("播放$" + playUrl); return Result.string(vod); } @Override public String playerContent(String flag, String id, List vipFlags) throws Exception { - HashMap result = new HashMap<>(); - Utils.loadWebView(url + id, getClient(result)); - while (result.isEmpty()) SystemClock.sleep(10); - return Result.get().url(result.get("url")).string(); - } - - private WebViewClient getClient(HashMap result) { - return new WebViewClient() { - @Override - public void onLoadResource(WebView view, String url) { - if (url.endsWith(".m3u8")) { - result.put("url", url); - view.destroy(); - } - } - }; + return Result.get().url(id).string(); } } diff --git a/app/src/main/java/com/github/catvod/utils/Utils.java b/app/src/main/java/com/github/catvod/utils/Utils.java index 61582e31..05884b54 100644 --- a/app/src/main/java/com/github/catvod/utils/Utils.java +++ b/app/src/main/java/com/github/catvod/utils/Utils.java @@ -83,7 +83,13 @@ public class Utils { } public static String getVar(String data, String param) { - for (String var : data.split("var")) if (var.contains(param)) return var.split("'")[1]; + for (String var : data.split("var")) if (var.contains(param)) return checkVar(var); + return ""; + } + + private static String checkVar(String var) { + if (var.contains("'")) return var.split("'")[1]; + if (var.contains("\"")) return var.split("\"")[1]; return ""; } From 6d1f3b7769f56ad7ce54727120fd384284cfa8f7 Mon Sep 17 00:00:00 2001 From: FongMi Date: Fri, 10 Mar 2023 09:28:38 +0800 Subject: [PATCH 2/3] Update Ali.java --- app/src/main/java/com/github/catvod/spider/Ali.java | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/com/github/catvod/spider/Ali.java b/app/src/main/java/com/github/catvod/spider/Ali.java index acef265f..1f8b9e9a 100644 --- a/app/src/main/java/com/github/catvod/spider/Ali.java +++ b/app/src/main/java/com/github/catvod/spider/Ali.java @@ -36,13 +36,10 @@ public class Ali extends Spider { @Override public String playerContent(String flag, String id, List vipFlags) { - String[] ids = id.split("\\+"); API.get().checkAccessToken(); - if (flag.equals("原畫")) { - return Result.get().url(API.get().getDownloadUrl(ids[0])).subs(API.get().getSub(ids)).header(API.get().getHeader()).parse(0).string(); - } else { - return Result.get().url(API.get().getPreviewUrl(ids[0], flag)).subs(API.get().getSub(ids)).header(API.get().getHeader()).parse(0).string(); - } + String[] ids = id.split("\\+"); + String url = flag.equals("原畫") ? API.get().getDownloadUrl(ids[0]) : API.get().getPreviewUrl(ids[0], flag); + return Result.get().url(url).subs(API.get().getSub(ids)).header(API.get().getHeader()).parse(0).string(); } public static Object[] vod(Map params) { From 4330192dce17ce8ed528b27949d5a0b2d98ed83d Mon Sep 17 00:00:00 2001 From: FongMi Date: Fri, 10 Mar 2023 09:29:48 +0800 Subject: [PATCH 3/3] Update API.java --- .../main/java/com/github/catvod/ali/API.java | 51 ++++++++----------- 1 file changed, 20 insertions(+), 31 deletions(-) diff --git a/app/src/main/java/com/github/catvod/ali/API.java b/app/src/main/java/com/github/catvod/ali/API.java index 923a41f4..8979b496 100644 --- a/app/src/main/java/com/github/catvod/ali/API.java +++ b/app/src/main/java/com/github/catvod/ali/API.java @@ -90,7 +90,7 @@ public class API { return headers; } - private HashMap getHeaderAuthOpen() { + private HashMap getHeaderOpen() { HashMap headers = getHeader(); headers.put("authorization", auth.getAccessTokenOpen()); return headers; @@ -113,15 +113,13 @@ public class API { } private String auth(String url, String json, boolean retry) { - url = url.startsWith("https") ? url : "https://api.aliyundrive.com/" + url; - String result = OkHttp.postJson(url, json, getHeaderAuth()); - if (retry && check401(result)) return auth(url, json, false); - return result; + return auth(url, json, getHeaderAuth(), retry); } - private String authOpen(String url, String json, boolean retry) { - String result = OkHttp.postJson(url, json, getHeaderAuthOpen()); - if (retry && check401Open(result)) return authOpen(url, json, false); + private String auth(String url, String json, Map header, boolean retry) { + url = url.startsWith("https") ? url : "https://api.aliyundrive.com/" + url; + String result = OkHttp.postJson(url, json, header); + if (retry && check401(result)) return auth(url, json, header, false); return result; } @@ -139,11 +137,6 @@ public class API { return false; } - private boolean check401Open(String result) { - if (result.contains("AccessTokenInvalid")) return refreshAccessTokenOpen(); - return false; - } - public void checkAccessToken() { if (auth.getAccessToken().isEmpty()) refreshAccessToken(); } @@ -178,9 +171,10 @@ public class API { body.put("grant_type", "authorization_code"); object = new JSONObject(post("https://api.nn.ci/alist/ali_open/code", body)); auth.setRefreshTokenOpen(object.getString("refresh_token")); - refreshAccessTokenOpen(); + refreshOpenToken(); return true; } catch (Exception e) { + SpiderDebug.log(e); stopService(); auth.clean(); getQRCode(); @@ -190,22 +184,16 @@ public class API { } } - private boolean refreshAccessTokenOpen() { - try { - SpiderDebug.log("refreshAccessTokenOpen..."); - JSONObject body = new JSONObject(); - String token = auth.getRefreshTokenOpen(); - body.put("refresh_token", token); - body.put("grant_type", "refresh_token"); - JSONObject object = new JSONObject(OkHttp.postJson("https://api.nn.ci/alist/ali_open/token", body.toString(), getHeader())); - auth.setAccessTokenOpen(object.optString("token_type") + " " + object.optString("access_token")); - auth.setRefreshTokenOpen(object.optString("refresh_token")); - auth.save(); - return true; - } catch (Exception e) { - refreshAccessToken(); - return true; - } + private void refreshOpenToken() throws Exception { + SpiderDebug.log("refreshAccessTokenOpen..."); + JSONObject body = new JSONObject(); + String token = auth.getRefreshTokenOpen(); + body.put("refresh_token", token); + body.put("grant_type", "refresh_token"); + JSONObject object = new JSONObject(OkHttp.postJson("https://api.nn.ci/alist/ali_open/token", body.toString(), getHeader())); + auth.setAccessTokenOpen(object.optString("token_type") + " " + object.optString("access_token")); + auth.setRefreshTokenOpen(object.optString("refresh_token")); + auth.save(); } public boolean refreshShareToken() { @@ -243,6 +231,7 @@ public class API { auth.save(); return true; } catch (Exception e) { + SpiderDebug.log(e); auth.setSignature(""); e.printStackTrace(); return false; @@ -362,7 +351,7 @@ public class API { JSONObject body = new JSONObject(); body.put("file_id", fileId); body.put("drive_id", auth.getDriveId()); - String url = new JSONObject(authOpen("https://open.aliyundrive.com/adrive/v1.0/openFile/getDownloadUrl", body.toString(), true)).optString("url"); + String url = new JSONObject(auth("https://open.aliyundrive.com/adrive/v1.0/openFile/getDownloadUrl", body.toString(), getHeaderOpen(), true)).optString("url"); Init.execute(() -> delete(fileId)); return url; }