cloud异步

This commit is contained in:
lushunming 2025-12-12 16:15:37 +08:00
parent cb27d8b6d0
commit 68b72532e8
7 changed files with 73 additions and 34 deletions

View File

@ -78,7 +78,7 @@ class BaiDuPan : Spider() {
* @param ids share_link 集合 * @param ids share_link 集合
* @return 詳情內容視頻播放地址 * @return 詳情內容視頻播放地址
*/ */
@Throws(Exception::class)
fun detailContentVodPlayUrl(ids: List<String>): String? { fun detailContentVodPlayUrl(ids: List<String>): String? {
val playUrl: MutableList<String?> = ArrayList<String?>() val playUrl: MutableList<String?> = ArrayList<String?>()
for (id in ids) { for (id in ids) {
@ -86,6 +86,7 @@ class BaiDuPan : Spider() {
playUrl.add(getVod(id).getVodPlayUrl()) playUrl.add(getVod(id).getVodPlayUrl())
} catch (e: Exception) { } catch (e: Exception) {
SpiderDebug.log("获取播放地址出错:" + e.message) SpiderDebug.log("获取播放地址出错:" + e.message)
playUrl.add("")
} }
} }
return TextUtils.join("$$$", playUrl) return TextUtils.join("$$$", playUrl)

View File

@ -8,11 +8,16 @@ import com.github.catvod.crawler.SpiderDebug;
import com.github.catvod.utils.Json; import com.github.catvod.utils.Json;
import com.github.catvod.utils.Util; import com.github.catvod.utils.Util;
import com.google.gson.JsonObject; import com.google.gson.JsonObject;
import org.apache.commons.lang3.StringUtils;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.Objects; 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; import static com.github.catvod.api.TianyiApi.URL_CONTAIN;
@ -103,8 +108,7 @@ public class Cloud extends Spider {
i++; i++;
if (shareLink.matches(Util.patternUC)) { if (shareLink.matches(Util.patternUC)) {
from.add(uc.detailContentVodPlayFrom(List.of(shareLink), i)); from.add(uc.detailContentVodPlayFrom(List.of(shareLink), i));
} else } else if (shareLink.matches(Util.patternQuark)) {
if (shareLink.matches(Util.patternQuark)) {
from.add(quark.detailContentVodPlayFrom(List.of(shareLink), i)); from.add(quark.detailContentVodPlayFrom(List.of(shareLink), i));
} /*else if (shareLink.matches(Util.patternAli)) { } /*else if (shareLink.matches(Util.patternAli)) {
from.add(ali.detailContentVodPlayFrom(List.of(shareLink), i)); from.add(ali.detailContentVodPlayFrom(List.of(shareLink), i));
@ -122,27 +126,44 @@ public class Cloud extends Spider {
return TextUtils.join("$$$", from); return TextUtils.join("$$$", from);
} }
protected String detailContentVodPlayUrl(List<String> shareLinks) throws Exception { protected String detailContentVodPlayUrl(List<String> shareLinks) {
Collections.sort(shareLinks, Collections.reverseOrder());
List<String> urls = new ArrayList<>(); List<String> urls = new CopyOnWriteArrayList<>();
ExecutorService service = Executors.newFixedThreadPool(4);
List<CompletableFuture<String>> futures = new ArrayList<>();
for (String shareLink : shareLinks) { for (String shareLink : shareLinks) {
futures.add(CompletableFuture.supplyAsync(() -> {
String url = "";
if (shareLink.matches(Util.patternUC)) { if (shareLink.matches(Util.patternUC)) {
urls.add(uc.detailContentVodPlayUrl(List.of(shareLink))); url = uc.detailContentVodPlayUrl(List.of(shareLink));
} else } else if (shareLink.matches(Util.patternQuark)) {
if (shareLink.matches(Util.patternQuark)) { url = quark.detailContentVodPlayUrl(List.of(shareLink));
urls.add(quark.detailContentVodPlayUrl(List.of(shareLink)));
}/* else if (shareLink.matches(Util.patternAli)) { }/* else if (shareLink.matches(Util.patternAli)) {
urls.add(ali.detailContentVodPlayUrl(List.of(shareLink))); urls.add(ali.detailContentVodPlayUrl(List.of(shareLink)));
} */ else if (shareLink.contains(URL_CONTAIN)) { } */ else if (shareLink.contains(URL_CONTAIN)) {
urls.add(tianYi.detailContentVodPlayUrl(List.of(shareLink))); url = tianYi.detailContentVodPlayUrl(List.of(shareLink));
} else if (shareLink.contains(YiDongYun.URL_START)) { } else if (shareLink.contains(YiDongYun.URL_START)) {
urls.add(yiDongYun.detailContentVodPlayUrl(List.of(shareLink))); url = yiDongYun.detailContentVodPlayUrl(List.of(shareLink));
} else if (shareLink.contains(BaiDuPan.URL_START)) { } else if (shareLink.contains(BaiDuPan.URL_START)) {
urls.add(baiDuPan.detailContentVodPlayUrl(List.of(shareLink))); url = baiDuPan.detailContentVodPlayUrl(List.of(shareLink));
} else if (shareLink.matches(Pan123Api.regex)) { } else if (shareLink.matches(Pan123Api.regex)) {
urls.add(pan123.detailContentVodPlayUrl(List.of(shareLink))); url = pan123.detailContentVodPlayUrl(List.of(shareLink));
} }
return url;
}, service));
} }
return TextUtils.join("$$$", urls); try {
for (CompletableFuture<String> future : futures) {
urls.add(future.get());
}
} catch (Exception e) {
SpiderDebug.log("获取异步结果出错:" + e);
}
SpiderDebug.log("---urls" + Json.toJson(urls));
service.shutdown();
return StringUtils.join(urls, "$$$");
} }
} }

View File

@ -72,7 +72,7 @@ public class Pan123 extends Spider {
* @param ids share_link 集合 * @param ids share_link 集合
* @return 詳情內容視頻播放地址 * @return 詳情內容視頻播放地址
*/ */
public String detailContentVodPlayUrl(List<String> ids) throws Exception { public String detailContentVodPlayUrl(List<String> ids){
List<String> playUrl = new ArrayList<>(); List<String> playUrl = new ArrayList<>();
for (String id : ids) { for (String id : ids) {
@NotNull Map<@NotNull String, @NotNull String> shareData = Pan123Api.INSTANCE.getShareData(id); @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()); playUrl.add(Pan123Api.INSTANCE.getVod(shareData.get("key"), shareData.get("sharePwd")).getVodPlayUrl());
} catch (Exception e) { } catch (Exception e) {
SpiderDebug.log("获取播放地址出错:" + e.getMessage()); SpiderDebug.log("获取播放地址出错:" + e.getMessage());
playUrl.add("");
} }
} }
return TextUtils.join("$$$", playUrl); return TextUtils.join("$$$", playUrl);

View File

@ -70,14 +70,15 @@ public class Quark extends Spider {
* @param ids share_link 集合 * @param ids share_link 集合
* @return 詳情內容視頻播放地址 * @return 詳情內容視頻播放地址
*/ */
public String detailContentVodPlayUrl(List<String> ids) throws Exception { public String detailContentVodPlayUrl(List<String> ids) {
List<String> playUrl = new ArrayList<>(); List<String> playUrl = new ArrayList<>();
for (String id : ids) { for (String id : ids) {
ShareData shareData = QuarkApi.get().getShareData(id); ShareData shareData = QuarkApi.get().getShareData(id);
try { 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) { } catch (Exception e) {
SpiderDebug.log("获取播放地址出错:" + e.getMessage()); SpiderDebug.log("获取播放地址出错:" + e.getMessage());
playUrl.add(" $$$ ");
} }
} }
return TextUtils.join("$$$", playUrl); return TextUtils.join("$$$", playUrl);

View File

@ -69,7 +69,7 @@ public class TianYi extends Spider {
* @param ids share_link 集合 * @param ids share_link 集合
* @return 詳情內容視頻播放地址 * @return 詳情內容視頻播放地址
*/ */
public String detailContentVodPlayUrl(List<String> ids) throws Exception { public String detailContentVodPlayUrl(List<String> ids) {
List<String> playUrl = new ArrayList<>(); List<String> playUrl = new ArrayList<>();
for (String id : ids) { for (String id : ids) {
ShareData shareData = TianyiApi.get().getShareData(id, ""); ShareData shareData = TianyiApi.get().getShareData(id, "");
@ -77,6 +77,7 @@ public class TianYi extends Spider {
playUrl.add(TianyiApi.get().getVod(shareData).getVodPlayUrl()); playUrl.add(TianyiApi.get().getVod(shareData).getVodPlayUrl());
} catch (Exception e) { } catch (Exception e) {
SpiderDebug.log("获取播放地址出错:" + e.getMessage()); SpiderDebug.log("获取播放地址出错:" + e.getMessage());
playUrl.add("");
} }
} }
return TextUtils.join("$$$", playUrl); return TextUtils.join("$$$", playUrl);

View File

@ -71,11 +71,17 @@ public class UC extends Spider {
* @param ids share_link 集合 * @param ids share_link 集合
* @return 詳情內容視頻播放地址 * @return 詳情內容視頻播放地址
*/ */
public String detailContentVodPlayUrl(List<String> ids) throws Exception { public String detailContentVodPlayUrl(List<String> ids) {
List<String> playUrl = new ArrayList<>(); List<String> playUrl = new ArrayList<>();
for (String id : ids) { for (String id : ids) {
try {
ShareData shareData = UCApi.get().getShareData(id); ShareData shareData = UCApi.get().getShareData(id);
playUrl.add(UCApi.get().getVod(shareData)==null?"":UCApi.get().getVod(shareData).getVodPlayUrl()); 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); return TextUtils.join("$$$", playUrl);
} }

View File

@ -6,6 +6,7 @@ import com.github.catvod.api.YunDrive;
import com.github.catvod.bean.Result; import com.github.catvod.bean.Result;
import com.github.catvod.bean.Vod; import com.github.catvod.bean.Vod;
import com.github.catvod.crawler.Spider; import com.github.catvod.crawler.Spider;
import com.github.catvod.crawler.SpiderDebug;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import java.util.ArrayList; import java.util.ArrayList;
@ -108,10 +109,17 @@ public class YiDongYun extends Spider {
* @param ids share_link 集合 * @param ids share_link 集合
* @return 詳情內容視頻播放地址 * @return 詳情內容視頻播放地址
*/ */
public String detailContentVodPlayUrl(List<String> ids) throws Exception { public String detailContentVodPlayUrl(List<String> ids) {
List<String> playUrl = new ArrayList<>(); List<String> playUrl = new ArrayList<>();
for (String id : ids) { for (String id : ids) {
try {
playUrl.add(getVod(List.of(id)).getVodPlayUrl()); playUrl.add(getVod(List.of(id)).getVodPlayUrl());
}catch (Exception e) {
SpiderDebug.log("获取播放地址出错:" + e.getMessage());
playUrl.add("");
}
} }
return TextUtils.join("$$$", playUrl); return TextUtils.join("$$$", playUrl);
} }