uc和quark空指针

This commit is contained in:
lushunming 2025-11-27 10:46:06 +08:00
parent 608e1b51a1
commit 69ae330c7a
5 changed files with 76 additions and 38 deletions

View File

@ -44,7 +44,7 @@ public class UCApi {
private String cookieToken = ""; private String cookieToken = "";
private String ckey = ""; private String ckey = "";
private Map<String, Map<String, Object>> shareTokenCache = new HashMap<>(); private Map<String, Map<String, Object>> 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<String> subtitleExts = Arrays.asList(".srt", ".ass", ".scc", ".stl", ".ttml"); private List<String> subtitleExts = Arrays.asList(".srt", ".ass", ".scc", ".stl", ".ttml");
private Map<String, String> saveFileIdCaches = new HashMap<>(); private Map<String, String> saveFileIdCaches = new HashMap<>();
private String saveDirId = null; private String saveDirId = null;
@ -227,13 +227,13 @@ public class UCApi {
header.remove("Host"); header.remove("Host");
header.remove("Content-Type"); header.remove("Content-Type");
//UCTV 可以直接播放不需要代理 /* //UCTV 可以直接播放不需要代理
if (testVideo(playUrl)) { if (testVideo(playUrl)) {
SpiderDebug.log("UCTV 可以直接播放,不需要代理" ); SpiderDebug.log("UCTV 可以直接播放,不需要代理" );
return Result.get().url(playUrl).string(); 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) { private boolean testVideo(String url) {

View File

@ -10,6 +10,7 @@ import com.github.catvod.utils.Util;
import com.google.gson.JsonObject; import com.google.gson.JsonObject;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
@ -20,8 +21,8 @@ import static com.github.catvod.api.TianyiApi.URL_CONTAIN;
*/ */
public class Cloud extends Spider { public class Cloud extends Spider {
private Quark quark = null; private Quark quark = null;
/* private Ali ali = null; /* private Ali ali = null;*/
private UC uc = null;*/ private UC uc = null;
private TianYi tianYi = null; private TianYi tianYi = null;
private YiDongYun yiDongYun = null; private YiDongYun yiDongYun = null;
private BaiDuPan baiDuPan = null; private BaiDuPan baiDuPan = null;
@ -31,16 +32,16 @@ public class Cloud extends Spider {
public void init(Context context, String extend) throws Exception { public void init(Context context, String extend) throws Exception {
JsonObject ext = Json.safeObject(extend); JsonObject ext = Json.safeObject(extend);
quark = new Quark(); quark = new Quark();
/* uc = new UC(); uc = new UC();
ali = new Ali();*/ /* ali = new Ali();*/
tianYi = new TianYi(); tianYi = new TianYi();
yiDongYun = new YiDongYun(); yiDongYun = new YiDongYun();
baiDuPan = new BaiDuPan(); baiDuPan = new BaiDuPan();
pan123 = new Pan123(); pan123 = new Pan123();
boolean first = Objects.nonNull(ext); boolean first = Objects.nonNull(ext);
quark.init(context, first && ext.has("cookie") ? ext.get("cookie").getAsString() : ""); quark.init(context, first && ext.has("cookie") ? ext.get("cookie").getAsString() : "");
/* uc.init(context, first && ext.has("uccookie") ? ext.get("uccookie").getAsString() : ""); uc.init(context, first && ext.has("uccookie") ? ext.get("uccookie").getAsString() : "");
ali.init(context, first && ext.has("token") ? ext.get("token").getAsString() : "");*/ /* ali.init(context, first && ext.has("token") ? ext.get("token").getAsString() : "");*/
tianYi.init(context, first && ext.has("tianyicookie") ? ext.get("tianyicookie").getAsString() : ""); tianYi.init(context, first && ext.has("tianyicookie") ? ext.get("tianyicookie").getAsString() : "");
yiDongYun.init(context, ""); yiDongYun.init(context, "");
baiDuPan.init(context, ""); baiDuPan.init(context, "");
@ -57,9 +58,9 @@ public class Cloud extends Spider {
} else */ } else */
if (shareUrl.get(0).matches(Util.patternQuark)) { if (shareUrl.get(0).matches(Util.patternQuark)) {
return quark.detailContent(shareUrl); return quark.detailContent(shareUrl);
} /*else if (shareUrl.get(0).matches(Util.patternUC)) { } else if (shareUrl.get(0).matches(Util.patternUC)) {
return uc.detailContent(shareUrl); return uc.detailContent(shareUrl);
} */ else if (shareUrl.get(0).contains(URL_CONTAIN)) { } else if (shareUrl.get(0).contains(URL_CONTAIN)) {
return tianYi.detailContent(shareUrl); return tianYi.detailContent(shareUrl);
} else if (shareUrl.get(0).contains(YiDongYun.URL_START)) { } else if (shareUrl.get(0).contains(YiDongYun.URL_START)) {
return yiDongYun.detailContent(shareUrl); return yiDongYun.detailContent(shareUrl);
@ -78,9 +79,9 @@ public class Cloud extends Spider {
if (flag.contains("quark")) { if (flag.contains("quark")) {
return quark.playerContent(flag, id, vipFlags); return quark.playerContent(flag, id, vipFlags);
} /*else if (flag.contains("uc")) { } else if (flag.contains("uc")) {
return uc.playerContent(flag, id, vipFlags); return uc.playerContent(flag, id, vipFlags);
} */ else if (flag.contains("天意")) { } else if (flag.contains("天意")) {
return tianYi.playerContent(flag, id, vipFlags); return tianYi.playerContent(flag, id, vipFlags);
} else if (flag.contains("移动")) { } else if (flag.contains("移动")) {
return yiDongYun.playerContent(flag, id, vipFlags); return yiDongYun.playerContent(flag, id, vipFlags);
@ -95,13 +96,14 @@ public class Cloud extends Spider {
} }
protected String detailContentVodPlayFrom(List<String> shareLinks) { protected String detailContentVodPlayFrom(List<String> shareLinks) {
Collections.sort(shareLinks);
List<String> from = new ArrayList<>(); List<String> from = new ArrayList<>();
int i = 0; int i = 0;
for (String shareLink : shareLinks) { for (String shareLink : shareLinks) {
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)) {
@ -121,11 +123,12 @@ public class Cloud extends Spider {
} }
protected String detailContentVodPlayUrl(List<String> shareLinks) throws Exception { protected String detailContentVodPlayUrl(List<String> shareLinks) throws Exception {
Collections.sort(shareLinks);
List<String> urls = new ArrayList<>(); List<String> urls = new ArrayList<>();
for (String shareLink : shareLinks) { for (String shareLink : shareLinks) {
/* if (shareLink.matches(Util.patternUC)) { if (shareLink.matches(Util.patternUC)) {
urls.add(uc.detailContentVodPlayUrl(List.of(shareLink))); urls.add(uc.detailContentVodPlayUrl(List.of(shareLink)));
} else */ } else
if (shareLink.matches(Util.patternQuark)) { if (shareLink.matches(Util.patternQuark)) {
urls.add(quark.detailContentVodPlayUrl(List.of(shareLink))); urls.add(quark.detailContentVodPlayUrl(List.of(shareLink)));
}/* else if (shareLink.matches(Util.patternAli)) { }/* else if (shareLink.matches(Util.patternAli)) {

View File

@ -75,7 +75,7 @@ public class Quark extends Spider {
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).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());
} }

View File

@ -164,9 +164,44 @@ class SeedHub : Cloud() {
val jobs = ArrayList<Job>() val jobs = ArrayList<Job>()
runBlocking { runBlocking {
doc.select("ul.pan-links > li > a") val docEle = doc.select("ul.pan-links > li > a")
.filter { it.attr("data-link").contains("quark") || it.attr("data-link").contains("baidu") } docEle.filter { it.attr("data-link").contains("uc") }.take(2).forEach { element ->
.slice(IntRange(0, 10)).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("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 { jobs += CoroutineScope(Dispatchers.IO).launch {
var link = siteUrl + element.attr("href") var link = siteUrl + element.attr("href")

View File

@ -56,10 +56,10 @@ public class UC extends Spider {
for (int i = 1; i <= ids.size(); i++) { 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(String.format(Locale.getDefault(), "uc" + s + "#%02d%02d", i, index));
} }*/
playFrom.add("uc原画" + i + index); playFrom.add("uc原画" + i + index);
} }
return TextUtils.join("$$$", playFrom); return TextUtils.join("$$$", playFrom);
@ -75,7 +75,7 @@ public class UC extends Spider {
List<String> playUrl = new ArrayList<>(); List<String> playUrl = new ArrayList<>();
for (String id : ids) { for (String id : ids) {
ShareData shareData = UCApi.get().getShareData(id); 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); return TextUtils.join("$$$", playUrl);
} }