xb6v增强and quark bug
This commit is contained in:
parent
b7870d5e0b
commit
d182391299
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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.
|
|
@ -1 +1 @@
|
|||
d6c20f6b7e2cd7b9a0875bd783a93fd7
|
||||
a8cac0161a9bd2bb2754e34292c86ad5
|
||||
|
|
|
|||
|
|
@ -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",
|
||||
|
|
|
|||
|
|
@ -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",
|
||||
|
|
|
|||
|
|
@ -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",
|
||||
|
|
|
|||
Loading…
Reference in New Issue