From 68b72532e803fedcee841c028ea00cda13d36ac2 Mon Sep 17 00:00:00 2001 From: lushunming <1357197829@qq.com> Date: Fri, 12 Dec 2025 16:15:37 +0800 Subject: [PATCH] =?UTF-8?q?cloud=E5=BC=82=E6=AD=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/github/catvod/spider/BaiDuPan.kt | 3 +- .../java/com/github/catvod/spider/Cloud.java | 69 ++++++++++++------- .../java/com/github/catvod/spider/Pan123.java | 3 +- .../java/com/github/catvod/spider/Quark.java | 5 +- .../java/com/github/catvod/spider/TianYi.java | 3 +- .../java/com/github/catvod/spider/UC.java | 12 +++- .../com/github/catvod/spider/YiDongYun.java | 12 +++- 7 files changed, 73 insertions(+), 34 deletions(-) diff --git a/app/src/main/java/com/github/catvod/spider/BaiDuPan.kt b/app/src/main/java/com/github/catvod/spider/BaiDuPan.kt index 8c116652..7b5f0030 100644 --- a/app/src/main/java/com/github/catvod/spider/BaiDuPan.kt +++ b/app/src/main/java/com/github/catvod/spider/BaiDuPan.kt @@ -78,7 +78,7 @@ class BaiDuPan : Spider() { * @param ids share_link 集合 * @return 詳情內容視頻播放地址 */ - @Throws(Exception::class) + fun detailContentVodPlayUrl(ids: List): String? { val playUrl: MutableList = ArrayList() for (id in ids) { @@ -86,6 +86,7 @@ class BaiDuPan : Spider() { playUrl.add(getVod(id).getVodPlayUrl()) } catch (e: Exception) { SpiderDebug.log("获取播放地址出错:" + e.message) + playUrl.add("") } } return TextUtils.join("$$$", playUrl) 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 4636dd34..6f89666a 100644 --- a/app/src/main/java/com/github/catvod/spider/Cloud.java +++ b/app/src/main/java/com/github/catvod/spider/Cloud.java @@ -8,11 +8,16 @@ import com.github.catvod.crawler.SpiderDebug; import com.github.catvod.utils.Json; import com.github.catvod.utils.Util; import com.google.gson.JsonObject; +import org.apache.commons.lang3.StringUtils; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Objects; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.CopyOnWriteArrayList; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; import static com.github.catvod.api.TianyiApi.URL_CONTAIN; @@ -22,7 +27,7 @@ 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 UC uc = null; private TianYi tianYi = null; private YiDongYun yiDongYun = null; private BaiDuPan baiDuPan = null; @@ -60,7 +65,7 @@ public class Cloud extends Spider { return quark.detailContent(shareUrl); } 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); @@ -81,7 +86,7 @@ public class Cloud extends Spider { return quark.playerContent(flag, id, vipFlags); } 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); @@ -101,10 +106,9 @@ public class Cloud extends Spider { 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 - if (shareLink.matches(Util.patternQuark)) { + } else if (shareLink.matches(Util.patternQuark)) { from.add(quark.detailContentVodPlayFrom(List.of(shareLink), i)); } /*else if (shareLink.matches(Util.patternAli)) { from.add(ali.detailContentVodPlayFrom(List.of(shareLink), i)); @@ -122,27 +126,44 @@ public class Cloud extends Spider { return TextUtils.join("$$$", from); } - protected String detailContentVodPlayUrl(List shareLinks) throws Exception { - Collections.sort(shareLinks, Collections.reverseOrder()); - List urls = new ArrayList<>(); + protected String detailContentVodPlayUrl(List shareLinks) { + + List urls = new CopyOnWriteArrayList<>(); + ExecutorService service = Executors.newFixedThreadPool(4); + List> futures = new ArrayList<>(); for (String shareLink : shareLinks) { - if (shareLink.matches(Util.patternUC)) { - urls.add(uc.detailContentVodPlayUrl(List.of(shareLink))); - } else - if (shareLink.matches(Util.patternQuark)) { - urls.add(quark.detailContentVodPlayUrl(List.of(shareLink))); - }/* else if (shareLink.matches(Util.patternAli)) { + futures.add(CompletableFuture.supplyAsync(() -> { + + String url = ""; + if (shareLink.matches(Util.patternUC)) { + url = uc.detailContentVodPlayUrl(List.of(shareLink)); + } else if (shareLink.matches(Util.patternQuark)) { + url = quark.detailContentVodPlayUrl(List.of(shareLink)); + }/* else if (shareLink.matches(Util.patternAli)) { urls.add(ali.detailContentVodPlayUrl(List.of(shareLink))); } */ else if (shareLink.contains(URL_CONTAIN)) { - urls.add(tianYi.detailContentVodPlayUrl(List.of(shareLink))); - } else if (shareLink.contains(YiDongYun.URL_START)) { - urls.add(yiDongYun.detailContentVodPlayUrl(List.of(shareLink))); - } else if (shareLink.contains(BaiDuPan.URL_START)) { - urls.add(baiDuPan.detailContentVodPlayUrl(List.of(shareLink))); - } else if (shareLink.matches(Pan123Api.regex)) { - urls.add(pan123.detailContentVodPlayUrl(List.of(shareLink))); - } + url = tianYi.detailContentVodPlayUrl(List.of(shareLink)); + } else if (shareLink.contains(YiDongYun.URL_START)) { + url = yiDongYun.detailContentVodPlayUrl(List.of(shareLink)); + } else if (shareLink.contains(BaiDuPan.URL_START)) { + url = baiDuPan.detailContentVodPlayUrl(List.of(shareLink)); + } else if (shareLink.matches(Pan123Api.regex)) { + url = pan123.detailContentVodPlayUrl(List.of(shareLink)); + } + return url; + }, service)); + } - return TextUtils.join("$$$", urls); + try { + for (CompletableFuture future : futures) { + urls.add(future.get()); + } + } catch (Exception e) { + SpiderDebug.log("获取异步结果出错:" + e); + } + + SpiderDebug.log("---urls:" + Json.toJson(urls)); + service.shutdown(); + return StringUtils.join(urls, "$$$"); } } diff --git a/app/src/main/java/com/github/catvod/spider/Pan123.java b/app/src/main/java/com/github/catvod/spider/Pan123.java index 5f0e5b4a..8b31d4b8 100644 --- a/app/src/main/java/com/github/catvod/spider/Pan123.java +++ b/app/src/main/java/com/github/catvod/spider/Pan123.java @@ -72,7 +72,7 @@ public class Pan123 extends Spider { * @param ids share_link 集合 * @return 詳情內容視頻播放地址 */ - public String detailContentVodPlayUrl(List ids) throws Exception { + public String detailContentVodPlayUrl(List ids){ List playUrl = new ArrayList<>(); for (String id : ids) { @NotNull Map<@NotNull String, @NotNull String> shareData = Pan123Api.INSTANCE.getShareData(id); @@ -80,6 +80,7 @@ public class Pan123 extends Spider { playUrl.add(Pan123Api.INSTANCE.getVod(shareData.get("key"), shareData.get("sharePwd")).getVodPlayUrl()); } catch (Exception e) { SpiderDebug.log("获取播放地址出错:" + e.getMessage()); + playUrl.add(""); } } return TextUtils.join("$$$", playUrl); 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 21315083..3b489356 100644 --- a/app/src/main/java/com/github/catvod/spider/Quark.java +++ b/app/src/main/java/com/github/catvod/spider/Quark.java @@ -70,14 +70,15 @@ public class Quark extends Spider { * @param ids share_link 集合 * @return 詳情內容視頻播放地址 */ - public String detailContentVodPlayUrl(List ids) throws Exception { + public String detailContentVodPlayUrl(List ids) { List playUrl = new ArrayList<>(); for (String id : ids) { ShareData shareData = QuarkApi.get().getShareData(id); try { - playUrl.add(QuarkApi.get().getVod(shareData)==null?"":QuarkApi.get().getVod(shareData).getVodPlayUrl()); + playUrl.add(QuarkApi.get().getVod(shareData)==null?" $$$ ":QuarkApi.get().getVod(shareData).getVodPlayUrl()); } catch (Exception e) { SpiderDebug.log("获取播放地址出错:" + e.getMessage()); + playUrl.add(" $$$ "); } } return TextUtils.join("$$$", playUrl); diff --git a/app/src/main/java/com/github/catvod/spider/TianYi.java b/app/src/main/java/com/github/catvod/spider/TianYi.java index 6bcda8af..620ee7a2 100644 --- a/app/src/main/java/com/github/catvod/spider/TianYi.java +++ b/app/src/main/java/com/github/catvod/spider/TianYi.java @@ -69,7 +69,7 @@ public class TianYi extends Spider { * @param ids share_link 集合 * @return 詳情內容視頻播放地址 */ - public String detailContentVodPlayUrl(List ids) throws Exception { + public String detailContentVodPlayUrl(List ids) { List playUrl = new ArrayList<>(); for (String id : ids) { ShareData shareData = TianyiApi.get().getShareData(id, ""); @@ -77,6 +77,7 @@ public class TianYi extends Spider { playUrl.add(TianyiApi.get().getVod(shareData).getVodPlayUrl()); } catch (Exception e) { SpiderDebug.log("获取播放地址出错:" + e.getMessage()); + playUrl.add(""); } } return TextUtils.join("$$$", playUrl); 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 69b80254..05b7f9d8 100644 --- a/app/src/main/java/com/github/catvod/spider/UC.java +++ b/app/src/main/java/com/github/catvod/spider/UC.java @@ -71,11 +71,17 @@ public class UC extends Spider { * @param ids share_link 集合 * @return 詳情內容視頻播放地址 */ - public String detailContentVodPlayUrl(List ids) throws Exception { + public String detailContentVodPlayUrl(List ids) { List playUrl = new ArrayList<>(); for (String id : ids) { - ShareData shareData = UCApi.get().getShareData(id); - playUrl.add(UCApi.get().getVod(shareData)==null?"":UCApi.get().getVod(shareData).getVodPlayUrl()); + try { + ShareData shareData = UCApi.get().getShareData(id); + playUrl.add(UCApi.get().getVod(shareData)==null?"":UCApi.get().getVod(shareData).getVodPlayUrl()); + }catch (Exception e){ + SpiderDebug.log("获取播放地址出错:" + e.getMessage()); + playUrl.add(""); + } + } return TextUtils.join("$$$", playUrl); } diff --git a/app/src/main/java/com/github/catvod/spider/YiDongYun.java b/app/src/main/java/com/github/catvod/spider/YiDongYun.java index b83faaa4..37e40d69 100644 --- a/app/src/main/java/com/github/catvod/spider/YiDongYun.java +++ b/app/src/main/java/com/github/catvod/spider/YiDongYun.java @@ -6,6 +6,7 @@ import com.github.catvod.api.YunDrive; import com.github.catvod.bean.Result; import com.github.catvod.bean.Vod; import com.github.catvod.crawler.Spider; +import com.github.catvod.crawler.SpiderDebug; import org.jetbrains.annotations.NotNull; import java.util.ArrayList; @@ -108,10 +109,17 @@ public class YiDongYun extends Spider { * @param ids share_link 集合 * @return 詳情內容視頻播放地址 */ - public String detailContentVodPlayUrl(List ids) throws Exception { + public String detailContentVodPlayUrl(List ids) { List playUrl = new ArrayList<>(); for (String id : ids) { - playUrl.add(getVod(List.of(id)).getVodPlayUrl()); + try { + playUrl.add(getVod(List.of(id)).getVodPlayUrl()); + }catch (Exception e) { + SpiderDebug.log("获取播放地址出错:" + e.getMessage()); + playUrl.add(""); + } + + } return TextUtils.join("$$$", playUrl); }