xb6v增强and quark bug

This commit is contained in:
lushunming 2024-09-18 13:38:26 +08:00
parent b7870d5e0b
commit d182391299
10 changed files with 78 additions and 43 deletions

View File

@ -5,7 +5,6 @@ import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.os.Handler;
import android.os.SystemClock;
import android.text.TextUtils;
import android.view.Gravity;
@ -37,7 +36,6 @@ import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
public class QuarkApi {
private String apiUrl = "https://drive-pc.quark.cn/1/clouddrive/";
@ -117,8 +115,11 @@ public class QuarkApi {
return QuarkApi.Loader.INSTANCE;
}
public void setRefreshToken(String token) {
this.cookie = token;
public void setRefreshToken(String token) throws Exception {
if (StringUtils.isNoneBlank(token)) {
this.cookie = token;
refreshAccessToken();
}
}
private Map<String, String> getHeaders() {
@ -240,7 +241,7 @@ public class QuarkApi {
Matcher cookieMatcher = Pattern.compile("__puus=([^;]+)").matcher(this.cookie);
if (cookieMatcher.find() && !cookieMatcher.group(1).equals(matcher.group(1))) {
this.cookie = this.cookie.replaceAll("__puus=[^;]+", "__puus=" + matcher.group(1));
}else{
} else {
this.cookie = this.cookie + ";__puus=" + matcher.group(1);
}
}
@ -254,14 +255,21 @@ public class QuarkApi {
return okResult.getBody();
}
private boolean refreshAccessToken() {
private void refreshAccessToken() {
try {
SpiderDebug.log("refreshCookie...");
cookie = cache.getUser().getCookie();
if (cookie.isEmpty() && serviceTicket.isBlank()) {
if (StringUtils.isAllBlank(cookie)) {
cookie = cache.getUser().getCookie();
}
if (StringUtils.isAllBlank(cookie) && StringUtils.isAllBlank(serviceTicket)) {
SpiderDebug.log("cookie为空");
throw new RuntimeException("cookie为空");
}
if (StringUtils.isNoneBlank(cookie)) {
initQuark(this.cookie);
return;
}
String token = serviceTicket;
OkResult result = OkHttp.get("https://pan.quark.cn/account/info?st=" + token + "&lw=scan", new HashMap<>(), getWebHeaders());
Map json = Json.parseSafe(result.getBody(), Map.class);
@ -276,18 +284,15 @@ public class QuarkApi {
cache.setUser(User.objectFrom(this.cookie));
if (cache.getUser().getCookie().isEmpty()) throw new Exception(this.cookie);
initQuark(this.cookie);
return true;
}
return false;
} catch (Exception e) {
cache.getUser().clean();
e.printStackTrace();
stopService();
startFlow();
return true;
} finally {
while (cache.getUser().getCookie().isEmpty()) SystemClock.sleep(250);
// while (cache.getUser().getCookie().isEmpty()) SystemClock.sleep(250);
}
}

View File

@ -52,8 +52,13 @@ public class Cloud extends Spider {
quarkShare.add(shareLink);
}
}
from.add(quark.detailContentVodPlayFrom(quarkShare));
from.add(ali.detailContentVodPlayFrom(aliShare));
if (!quarkShare.isEmpty()) {
from.add(quark.detailContentVodPlayFrom(quarkShare));
}
if (!aliShare.isEmpty()) {
from.add(ali.detailContentVodPlayFrom(aliShare));
}
return TextUtils.join("$$$", from);
}

View File

@ -9,8 +9,10 @@ import com.github.catvod.bean.Result;
import com.github.catvod.bean.Vod;
import com.github.catvod.crawler.Spider;
import com.github.catvod.net.OkHttp;
import com.github.catvod.net.OkResult;
import com.github.catvod.utils.Util;
import org.apache.commons.lang3.StringUtils;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
@ -156,7 +158,7 @@ public class Xb6v extends Cloud {
for (Element element : sourceList2) {
String catName = element.select("h3").text();
List<Vod.VodPlayBuilder.PlayUrl> playUrls = new ArrayList<>();
int count = 0;
for (Element a : element.select("a")) {
String url = a.attr("href");
String name = a.text();
@ -167,16 +169,19 @@ public class Xb6v extends Cloud {
playUrl.name = name;
playUrl.url = url;
playUrls.add(playUrl);
count++;
}
}
builder.append(catName, playUrls);
if (count > 0) {
builder.append(catName, playUrls);
}
}
String quarkNames="";
String quarkUrls="";
if(shareLinks.size()>0){
quarkNames= super.detailContentVodPlayFrom(shareLinks);
quarkUrls= super.detailContentVodPlayUrl(shareLinks);
String quarkNames = "";
String quarkUrls = "";
if (shareLinks.size() > 0) {
quarkNames = super.detailContentVodPlayFrom(shareLinks);
quarkUrls = super.detailContentVodPlayUrl(shareLinks);
}
Vod.VodPlayBuilder.BuildResult result = builder.build();
@ -192,13 +197,10 @@ public class Xb6v extends Cloud {
if (area.equals("")) area = getStrByRegex(Pattern.compile("地区:(.*?)<br>"), partHTML);
String remark = getStrByRegex(Pattern.compile("◎上映日期 (.*?)<br>"), partHTML);
String actor = getActorOrDirector(Pattern.compile("◎演  员 (.*?)</p>"), partHTML);
if (actor.equals(""))
actor = getActorOrDirector(Pattern.compile("◎主  演 (.*?)</p>"), partHTML);
if (actor.equals(""))
actor = getActorOrDirector(Pattern.compile("主演:(.*?)<br>"), partHTML);
if (actor.equals("")) actor = getActorOrDirector(Pattern.compile("◎主  演 (.*?)</p>"), partHTML);
if (actor.equals("")) actor = getActorOrDirector(Pattern.compile("主演:(.*?)<br>"), partHTML);
String director = getActorOrDirector(Pattern.compile("◎导  演 (.*?)<br>"), partHTML);
if (director.equals(""))
director = getActorOrDirector(Pattern.compile("导演:(.*?)<br>"), partHTML);
if (director.equals("")) director = getActorOrDirector(Pattern.compile("导演:(.*?)<br>"), partHTML);
String description = getDescription(Pattern.compile("◎简  介(.*?)<hr>", Pattern.CASE_INSENSITIVE | Pattern.DOTALL), partHTML);
if (description.equals(""))
description = getDescription(Pattern.compile("简介(.*?)</p>", Pattern.CASE_INSENSITIVE | Pattern.DOTALL), partHTML);
@ -214,8 +216,8 @@ public class Xb6v extends Cloud {
vod.setVodActor(actor);
vod.setVodDirector(director);
vod.setVodContent(description);
vod.setVodPlayFrom(result.vodPlayFrom+"$$$"+quarkNames);
vod.setVodPlayUrl(result.vodPlayUrl+"$$$"+quarkUrls);
vod.setVodPlayFrom(result.vodPlayFrom + "$$$" + quarkNames);
vod.setVodPlayUrl(result.vodPlayUrl + "$$$" + quarkUrls);
return Result.string(vod);
}
@ -259,6 +261,24 @@ public class Xb6v extends Cloud {
@Override
public String playerContent(String flag, String id, List<String> vipFlags) throws Exception {
return Result.get().url(id).string();
if (id.startsWith("magnet")) {
return Result.get().url(id).string();
}
if (flag.contains("quark")) {
return super.playerContent(flag, id, vipFlags);
}
Document doc = Jsoup.parse(OkHttp.string(siteUrl + id));
String url = Util.findByRegex(Util.RULE.pattern(), doc.html(), 0);
if (StringUtils.isAllBlank(url)) {
String iframeSrc = doc.select("iframe").attr("src");
Document iframeDoc = Jsoup.parse(OkHttp.string(iframeSrc));
url = Util.findByRegex(Util.RULE.pattern(), iframeDoc.html(), 0);
}
return Result.get().url(url).string();
}
}

View File

@ -28,7 +28,8 @@ public class WoggTest {
spider = new Wogg();
Server.get().start();
// spider.init(mockContext, "{\"cookie\":\"b-user-id=89ede34e-0efc-e1dd-c997-f16aaa792d0c; _UP_A4A_11_=wb9661c6dfb642f88f73d8e0c7edd398; b-user-id=89ede34e-0efc-e1dd-c997-f16aaa792d0c; ctoken=wla6p3EUOLyn1FSB8IKp1SEW; grey-id=5583e32b-39df-4bf0-f39f-1adf83f604a2; grey-id.sig=p8ReBIMG2BeZu1sYvsuOAZxYbx-MVrsfKEiCv87MsTM; isQuark=true; isQuark.sig=hUgqObykqFom5Y09bll94T1sS9abT1X-4Df_lzgl8nM; _UP_F7E_8D_=ZkyvVHnrBLp1A1NFJIjWi0PwKLOVbxJPcg0RzQPI6KmBtV6ZMgPh38l93pgubgHDQqhaZ2Sfc0qv%2BRantbfg1mWGAUpRMP4RqXP78Wvu%2FCfvkWWGc5NhCTV71tGOIGgDBR3%2Bu6%2Fjj44KlE5biSNDOWW7Bigcz27lvOTidzNw8s%2FWtKAIxWbnCzZn4%2FJMBUub1SIMcW89g57k4mfPmDlCgpZKzxwl6beSfdtZ4RUWXmZOn5v5NkxVKhU4wR0Pq7NklczEGdRq2nIAcu7v22Uw2o%2FxMY0xBdeC9Korm5%2FNHnxl6K%2Bd6FXSoT9a3XIMQO359auZPiZWzrNlZe%2BqnOahXcx7KAhQIRqSOapSmL4ygJor4r5isJhRuDoXy7vJAVuH%2FRDtEJJ8rZTq0BdC23Bz%2B0MrsdgbK%2BiW; _UP_D_=pc; __wpkreporterwid_=3d3f74a7-99b7-4916-3f78-911fc2eb9d87; tfstk=fIoZNxjnbhKwPOu0TWZ4LsaRqirTcudSSmNbnxD0C5VgClMm8xMyB-GsnSu4tjpOflAOmSD-9PNiGl120XrgkVNb1SrqHbJBN3tSBAEYoQOWVUUg9qZ8n1bGGkD3CqGYINKSBABhjnXgp3_Vywz6gSc0Syj3BWf0mr2DLW24eZfiiovEKWefj1q0swq3E82iNEMinMy7SLrcpA4Fh3z_ZAViCfih3PbtdW5N_DuU77AaTijmYRkL2Wq54ENoy5a7ZXxCbok33XzS7QSZgxD-oyoVsdGotql0p2dVu7umC4nLStbiLmParc4FELHrI-c0u2dPVRrs8zoZWKCnIbNZrlHfUCMUz2z8KyXVSlgSFmUojh58OzeqTzgwaGll4YCYKwctDV5coP2LL79eKHxpNTXHmre1kZU32JPWCR_AkP2LL79eLZQY-WeUNdw1.; __pus=2051c82285199d8be553be41dd5a2100AAQ+mmv35G4FDDZ5x+3Mhe2OMbNgweQ1ODbW8zDt9YuP1LQVqHUuAAz9KWLsPjpNtim0AVGHusN4MCosTmbq/khM; __kp=e6604120-6051-11ef-bfe4-c31b6cdd0766; __kps=AATcZArVgS76EPn0FMaV4HEj; __ktd=sii/iz4ePzEaoVirXul7QQ==; __uid=AATcZArVgS76EPn0FMaV4HEj; __itrace_wid=5829b95d-dac1-48d3-bfd5-f60cd9462786; __puus=7da0b96cb710fa1b376934485f977e05AATp/q8/QupT7IiBR1GWqZhxlIRT677smMvoHlLxQA0Lk6CkP0YJBOTl+p9DZgzlMz6w4hPXPgWsokukk8PW7ZfhFfPmv8tKMgLpCGLW+tk57luhNghmSdTeVPkAF59STtyCPBEtiNzNAd/zZJ6qILJDi5ywEBAAAg+gOyWHoLHNUR+QxeHRuQa8g5WWA95J8jebIlrr8rCvI1vjTbtiYktT\",\"token\":\"26fc6787afff43e78b78992e782502f1\"}");
spider.init(mockContext, "");
spider.init(mockContext, "{\"cookie\":\"ctoken=rldVUeNBAbGyhJdbpC4wEUE-;__pus=75e54cf66f9ea5ed1497838782a90a78AATTBUV9c9w7KXUiHDEl6VdV8Wxki4L9R5kIIjSKQnX1wedJe3s8weva95YKUkRqI1aBY/MA+YBNvaTO0JkXvLp+;__kp=be6b9e10-74f8-11ef-aa08-7d8956cd7603;__kps=AATcZArVgS76EPn0FMaV4HEj;__ktd=sii/iz4ePzEaoVirXul7QQ==;__uid=AATcZArVgS76EPn0FMaV4HEj\"}");
// spider.init(mockContext, "");
}
@org.junit.Test

File diff suppressed because one or more lines are too long

Binary file not shown.

View File

@ -1 +1 @@
d6c20f6b7e2cd7b9a0875bd783a93fd7
a8cac0161a9bd2bb2754e34292c86ad5

View File

@ -1,5 +1,5 @@
{
"spider": "https://androidcatvodspider.pages.dev/jar/custom_spider.jar;md5;d6c20f6b7e2cd7b9a0875bd783a93fd7",
"spider": "https://androidcatvodspider.pages.dev/jar/custom_spider.jar;md5;a8cac0161a9bd2bb2754e34292c86ad5",
"lives": [
{
"name": "直播ipv6",

View File

@ -1,5 +1,5 @@
{
"spider": "https://androidcatvodspider.pages.dev/jar/custom_spider.jar;md5;d6c20f6b7e2cd7b9a0875bd783a93fd7",
"spider": "https://androidcatvodspider.pages.dev/jar/custom_spider.jar;md5;a8cac0161a9bd2bb2754e34292c86ad5",
"lives": [
{
"name": "直播ipv6",

View File

@ -1,5 +1,5 @@
{
"spider": "https://androidcatvodspider.pages.dev/jar/custom_spider.jar;md5;d6c20f6b7e2cd7b9a0875bd783a93fd7",
"spider": "https://androidcatvodspider.pages.dev/jar/custom_spider.jar;md5;a8cac0161a9bd2bb2754e34292c86ad5",
"lives": [
{
"name": "直播ipv6",