From 69ae330c7a8b67b1190c2ef5b57b1502e573b0f9 Mon Sep 17 00:00:00 2001 From: lushunming <1357197829@qq.com> Date: Thu, 27 Nov 2025 10:46:06 +0800 Subject: [PATCH] =?UTF-8?q?uc=E5=92=8Cquark=E7=A9=BA=E6=8C=87=E9=92=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/github/catvod/api/UCApi.java | 8 +-- .../java/com/github/catvod/spider/Cloud.java | 31 +++++---- .../java/com/github/catvod/spider/Quark.java | 2 +- .../java/com/github/catvod/spider/SeedHub.kt | 67 ++++++++++++++----- .../java/com/github/catvod/spider/UC.java | 6 +- 5 files changed, 76 insertions(+), 38 deletions(-) diff --git a/app/src/main/java/com/github/catvod/api/UCApi.java b/app/src/main/java/com/github/catvod/api/UCApi.java index a9451d4e..06b9aaa3 100644 --- a/app/src/main/java/com/github/catvod/api/UCApi.java +++ b/app/src/main/java/com/github/catvod/api/UCApi.java @@ -44,7 +44,7 @@ public class UCApi { private String cookieToken = ""; private String ckey = ""; private Map> shareTokenCache = new HashMap<>(); - private String pr = "pr=UCBrowser&fr=pc"; + private String pr = "pr=UCBrowser&fr=pc&sys=darwin&ve=1.8.6&ut=Nk27FcCv6q1eo6rXz8QHR/nIG6qLA3jh7KdL+agFgcOvww=="; private List subtitleExts = Arrays.asList(".srt", ".ass", ".scc", ".stl", ".ttml"); private Map saveFileIdCaches = new HashMap<>(); private String saveDirId = null; @@ -227,13 +227,13 @@ public class UCApi { header.remove("Host"); header.remove("Content-Type"); - //UCTV 可以直接播放,不需要代理 + /* //UCTV 可以直接播放,不需要代理 if (testVideo(playUrl)) { SpiderDebug.log("UCTV 可以直接播放,不需要代理" ); return Result.get().url(playUrl).string(); - } - return Result.get().url(proxyVideoUrl(playUrl, header)).octet().header(header).string(); + }*/ + return Result.get().url(ProxyServer.INSTANCE.buildProxyUrl(playUrl, header)).string(); } private boolean testVideo(String url) { diff --git a/app/src/main/java/com/github/catvod/spider/Cloud.java b/app/src/main/java/com/github/catvod/spider/Cloud.java index e8f9f02b..81246b8d 100644 --- a/app/src/main/java/com/github/catvod/spider/Cloud.java +++ b/app/src/main/java/com/github/catvod/spider/Cloud.java @@ -10,6 +10,7 @@ import com.github.catvod.utils.Util; import com.google.gson.JsonObject; import java.util.ArrayList; +import java.util.Collections; import java.util.List; import java.util.Objects; @@ -20,8 +21,8 @@ import static com.github.catvod.api.TianyiApi.URL_CONTAIN; */ public class Cloud extends Spider { private Quark quark = null; - /* private Ali ali = null; - private UC uc = null;*/ + /* private Ali ali = null;*/ + private UC uc = null; private TianYi tianYi = null; private YiDongYun yiDongYun = null; private BaiDuPan baiDuPan = null; @@ -31,16 +32,16 @@ public class Cloud extends Spider { public void init(Context context, String extend) throws Exception { JsonObject ext = Json.safeObject(extend); quark = new Quark(); - /* uc = new UC(); - ali = new Ali();*/ + uc = new UC(); + /* ali = new Ali();*/ tianYi = new TianYi(); yiDongYun = new YiDongYun(); baiDuPan = new BaiDuPan(); pan123 = new Pan123(); boolean first = Objects.nonNull(ext); quark.init(context, first && ext.has("cookie") ? ext.get("cookie").getAsString() : ""); - /* uc.init(context, first && ext.has("uccookie") ? ext.get("uccookie").getAsString() : ""); - ali.init(context, first && ext.has("token") ? ext.get("token").getAsString() : "");*/ + uc.init(context, first && ext.has("uccookie") ? ext.get("uccookie").getAsString() : ""); + /* ali.init(context, first && ext.has("token") ? ext.get("token").getAsString() : "");*/ tianYi.init(context, first && ext.has("tianyicookie") ? ext.get("tianyicookie").getAsString() : ""); yiDongYun.init(context, ""); baiDuPan.init(context, ""); @@ -57,9 +58,9 @@ public class Cloud extends Spider { } else */ if (shareUrl.get(0).matches(Util.patternQuark)) { return quark.detailContent(shareUrl); - } /*else if (shareUrl.get(0).matches(Util.patternUC)) { + } else if (shareUrl.get(0).matches(Util.patternUC)) { return uc.detailContent(shareUrl); - } */ else if (shareUrl.get(0).contains(URL_CONTAIN)) { + } else if (shareUrl.get(0).contains(URL_CONTAIN)) { return tianYi.detailContent(shareUrl); } else if (shareUrl.get(0).contains(YiDongYun.URL_START)) { return yiDongYun.detailContent(shareUrl); @@ -78,9 +79,9 @@ public class Cloud extends Spider { if (flag.contains("quark")) { return quark.playerContent(flag, id, vipFlags); - } /*else if (flag.contains("uc")) { + } else if (flag.contains("uc")) { return uc.playerContent(flag, id, vipFlags); - } */ else if (flag.contains("天意")) { + } else if (flag.contains("天意")) { return tianYi.playerContent(flag, id, vipFlags); } else if (flag.contains("移动")) { return yiDongYun.playerContent(flag, id, vipFlags); @@ -95,13 +96,14 @@ public class Cloud extends Spider { } protected String detailContentVodPlayFrom(List shareLinks) { + Collections.sort(shareLinks); List from = new ArrayList<>(); int i = 0; for (String shareLink : shareLinks) { i++; - /*if (shareLink.matches(Util.patternUC)) { + if (shareLink.matches(Util.patternUC)) { from.add(uc.detailContentVodPlayFrom(List.of(shareLink), i)); - } else*/ + } else if (shareLink.matches(Util.patternQuark)) { from.add(quark.detailContentVodPlayFrom(List.of(shareLink), i)); } /*else if (shareLink.matches(Util.patternAli)) { @@ -121,11 +123,12 @@ public class Cloud extends Spider { } protected String detailContentVodPlayUrl(List shareLinks) throws Exception { + Collections.sort(shareLinks); List urls = new ArrayList<>(); for (String shareLink : shareLinks) { - /* if (shareLink.matches(Util.patternUC)) { + if (shareLink.matches(Util.patternUC)) { urls.add(uc.detailContentVodPlayUrl(List.of(shareLink))); - } else */ + } else if (shareLink.matches(Util.patternQuark)) { urls.add(quark.detailContentVodPlayUrl(List.of(shareLink))); }/* else if (shareLink.matches(Util.patternAli)) { diff --git a/app/src/main/java/com/github/catvod/spider/Quark.java b/app/src/main/java/com/github/catvod/spider/Quark.java index fc82a9f7..21315083 100644 --- a/app/src/main/java/com/github/catvod/spider/Quark.java +++ b/app/src/main/java/com/github/catvod/spider/Quark.java @@ -75,7 +75,7 @@ public class Quark extends Spider { for (String id : ids) { ShareData shareData = QuarkApi.get().getShareData(id); try { - playUrl.add(QuarkApi.get().getVod(shareData).getVodPlayUrl()); + playUrl.add(QuarkApi.get().getVod(shareData)==null?"":QuarkApi.get().getVod(shareData).getVodPlayUrl()); } catch (Exception e) { SpiderDebug.log("获取播放地址出错:" + e.getMessage()); } diff --git a/app/src/main/java/com/github/catvod/spider/SeedHub.kt b/app/src/main/java/com/github/catvod/spider/SeedHub.kt index 2b2fe288..f90db07b 100644 --- a/app/src/main/java/com/github/catvod/spider/SeedHub.kt +++ b/app/src/main/java/com/github/catvod/spider/SeedHub.kt @@ -164,26 +164,61 @@ class SeedHub : Cloud() { val jobs = ArrayList() runBlocking { - doc.select("ul.pan-links > li > a") - .filter { it.attr("data-link").contains("quark") || it.attr("data-link").contains("baidu") } - .slice(IntRange(0, 10)).forEach { element -> + val docEle = doc.select("ul.pan-links > li > a") + docEle.filter { it.attr("data-link").contains("uc") }.take(2).forEach { element -> - jobs += CoroutineScope(Dispatchers.IO).launch { - var link = siteUrl + element.attr("href") - val movieTitle = HttpUrl.parse(link)?.queryParameter("movie_title") - link = HttpUrl.parse(link)?.newBuilder()?.removeAllQueryParameters("movie_title") - ?.addEncodedQueryParameter( - "movie_title", URLEncoder.encode(movieTitle) - )?.build().toString() - val string = OkHttp.string(link, header) - val docEle = Jsoup.parse(string) - docEle.select("a.direct-pan").attr("href").let { - if (it.isNotEmpty()) { - shareLinks.add(it) - } + jobs += CoroutineScope(Dispatchers.IO).launch { + var link = siteUrl + element.attr("href") + val movieTitle = HttpUrl.parse(link)?.queryParameter("movie_title") + link = HttpUrl.parse(link)?.newBuilder()?.removeAllQueryParameters("movie_title") + ?.addEncodedQueryParameter( + "movie_title", URLEncoder.encode(movieTitle) + )?.build().toString() + val string = OkHttp.string(link, header) + val docEle = Jsoup.parse(string) + docEle.select("a.direct-pan").attr("href").let { + if (it.isNotEmpty()) { + shareLinks.add(it) } } } + } + docEle.filter { it.attr("data-link").contains("baidu") }.take(2).forEach { element -> + + jobs += CoroutineScope(Dispatchers.IO).launch { + var link = siteUrl + element.attr("href") + val movieTitle = HttpUrl.parse(link)?.queryParameter("movie_title") + link = HttpUrl.parse(link)?.newBuilder()?.removeAllQueryParameters("movie_title") + ?.addEncodedQueryParameter( + "movie_title", URLEncoder.encode(movieTitle) + )?.build().toString() + val string = OkHttp.string(link, header) + val docEle = Jsoup.parse(string) + docEle.select("a.direct-pan").attr("href").let { + if (it.isNotEmpty()) { + shareLinks.add(it) + } + } + } + } + docEle.filter { it.attr("data-link").contains("quark") }.take(2).forEach { element -> + + jobs += CoroutineScope(Dispatchers.IO).launch { + var link = siteUrl + element.attr("href") + val movieTitle = HttpUrl.parse(link)?.queryParameter("movie_title") + link = HttpUrl.parse(link)?.newBuilder()?.removeAllQueryParameters("movie_title") + ?.addEncodedQueryParameter( + "movie_title", URLEncoder.encode(movieTitle) + )?.build().toString() + val string = OkHttp.string(link, header) + val docEle = Jsoup.parse(string) + docEle.select("a.direct-pan").attr("href").let { + if (it.isNotEmpty()) { + shareLinks.add(it) + } + } + } + } jobs.joinAll() item.vodPlayUrl = super.detailContentVodPlayUrl(java.util.ArrayList(shareLinks)) item.setVodPlayFrom(super.detailContentVodPlayFrom(java.util.ArrayList(shareLinks))) diff --git a/app/src/main/java/com/github/catvod/spider/UC.java b/app/src/main/java/com/github/catvod/spider/UC.java index 178e46f6..69b80254 100644 --- a/app/src/main/java/com/github/catvod/spider/UC.java +++ b/app/src/main/java/com/github/catvod/spider/UC.java @@ -56,10 +56,10 @@ public class UC extends Spider { for (int i = 1; i <= ids.size(); i++) { - for (String s : UCApi.get().getPlayFormatList()) { + /* for (String s : UCApi.get().getPlayFormatList()) { playFrom.add(String.format(Locale.getDefault(), "uc" + s + "#%02d%02d", i, index)); - } + }*/ playFrom.add("uc原画" + i + index); } return TextUtils.join("$$$", playFrom); @@ -75,7 +75,7 @@ public class UC extends Spider { List playUrl = new ArrayList<>(); for (String id : ids) { ShareData shareData = UCApi.get().getShareData(id); - playUrl.add(UCApi.get().getVod(shareData).getVodPlayUrl()); + playUrl.add(UCApi.get().getVod(shareData)==null?"":UCApi.get().getVod(shareData).getVodPlayUrl()); } return TextUtils.join("$$$", playUrl); }