低端影视修复
This commit is contained in:
parent
528d97ed9d
commit
cdb2ed4561
|
|
@ -1,20 +1,17 @@
|
|||
package com.github.catvod.spider;
|
||||
|
||||
import android.content.Context;
|
||||
import android.text.TextUtils;
|
||||
|
||||
import com.github.catvod.bean.Class;
|
||||
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 com.github.catvod.net.OkHttp;
|
||||
import com.github.catvod.utils.Json;
|
||||
import com.github.catvod.utils.ProxyVideo;
|
||||
import com.github.catvod.utils.Util;
|
||||
|
||||
import com.google.gson.JsonElement;
|
||||
import org.json.JSONArray;
|
||||
import org.json.JSONException;
|
||||
import org.json.JSONObject;
|
||||
import org.jsoup.Jsoup;
|
||||
import org.jsoup.nodes.Document;
|
||||
|
|
@ -25,9 +22,7 @@ import java.net.URLEncoder;
|
|||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
|
|
@ -37,7 +32,7 @@ import java.util.regex.Pattern;
|
|||
* Source from Author: CatVod
|
||||
*/
|
||||
|
||||
public class Ddrk extends Spider {
|
||||
public class Ddrk extends Cloud {
|
||||
|
||||
private static String siteUrl = "https://ddys.mov";
|
||||
|
||||
|
|
@ -53,6 +48,25 @@ public class Ddrk extends Spider {
|
|||
|
||||
// protected Pattern t = Pattern.compile("(\\S+)");
|
||||
|
||||
protected static HashMap<String, String> Headers() {
|
||||
HashMap<String, String> headers = new HashMap<>();
|
||||
headers.put("User-Agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36");
|
||||
headers.put("Referer", siteUrl);
|
||||
return headers;
|
||||
}
|
||||
|
||||
private static String doReplaceRegex(Pattern pattern, String src) {
|
||||
if (pattern == null) return src;
|
||||
try {
|
||||
Matcher matcher = pattern.matcher(src);
|
||||
if (matcher.find()) {
|
||||
return matcher.group(1).trim();
|
||||
}
|
||||
} catch (Exception e) {
|
||||
SpiderDebug.log(e);
|
||||
}
|
||||
return src;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void init(Context context, String extend) throws Exception {
|
||||
|
|
@ -83,13 +97,6 @@ public class Ddrk extends Spider {
|
|||
return headers;
|
||||
}
|
||||
|
||||
protected static HashMap<String, String> Headers() {
|
||||
HashMap<String, String> headers = new HashMap<>();
|
||||
headers.put("User-Agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36");
|
||||
headers.put("Referer", siteUrl);
|
||||
return headers;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取分类数据 + 首页最近更新视频列表数据
|
||||
*
|
||||
|
|
@ -144,7 +151,6 @@ public class Ddrk extends Spider {
|
|||
return Result.string(classes, vods, filterConfig);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取分类信息数据
|
||||
*
|
||||
|
|
@ -167,12 +173,10 @@ public class Ddrk extends Spider {
|
|||
} else {
|
||||
url = siteUrl + "/category/" + tid;
|
||||
}
|
||||
;
|
||||
}
|
||||
} else {
|
||||
url = siteUrl + "/category/" + tid;
|
||||
}
|
||||
;
|
||||
if (pg.equals("1")) {
|
||||
url = url + "/";
|
||||
} else {
|
||||
|
|
@ -317,60 +321,44 @@ public class Ddrk extends Spider {
|
|||
vodList.put("vod_actor", actor);
|
||||
vodList.put("vod_director", director);
|
||||
vodList.put("vod_content", desc);
|
||||
Vod.VodPlayBuilder builder = new Vod.VodPlayBuilder();
|
||||
List<String> shareLinks = new ArrayList<>();
|
||||
getVodDetail(doc, builder, "1");
|
||||
|
||||
List<String> vodItems = new ArrayList<>();
|
||||
List<String> vodItems2 = new ArrayList<>();
|
||||
Map<String, String> vod_play = new LinkedHashMap<>();
|
||||
|
||||
Elements allScript = doc.select(".wp-playlist-script");
|
||||
String sourceName = "第1季";
|
||||
for (int j = 0; j < allScript.size(); j++) {
|
||||
String scContent = allScript.get(j).html().trim();
|
||||
int start = scContent.indexOf('{');
|
||||
int end = scContent.lastIndexOf('}') + 1;
|
||||
String json = scContent.substring(start, end);
|
||||
JSONObject UJson = new JSONObject(json);
|
||||
JSONArray Track = UJson.getJSONArray("tracks");
|
||||
for (int k = 0; k < Track.length(); k++) {
|
||||
JSONObject src = Track.getJSONObject(k);
|
||||
String adk = src.getString("src0");
|
||||
String vodName = src.getString("caption");
|
||||
String pzm = getPlayUrl(adk);
|
||||
vodItems.add(vodName + "$" + pzm);
|
||||
}
|
||||
vod_play.put(sourceName, TextUtils.join("#", vodItems));
|
||||
}
|
||||
//多季剧集处理
|
||||
Elements sources = doc.select(".post-page-numbers");
|
||||
if (!sources.isEmpty()) {
|
||||
for (Element source : sources) {
|
||||
sourceName = "第" + source.text() + "季";
|
||||
String Purl = siteUrl + "/" + ids.get(0) + "/" + source.text() + "/";
|
||||
if (!source.select("a").isEmpty()) {
|
||||
|
||||
String Purl = source.select("a").attr("href");
|
||||
Document docs = Jsoup.parse(OkHttp.string(Purl, getHeaders(Purl)));
|
||||
Elements allScripts = docs.select(".wp-playlist-script");
|
||||
for (Element script : allScripts) {
|
||||
String scContent = script.html().trim();
|
||||
int start = scContent.indexOf('{');
|
||||
int end = scContent.lastIndexOf('}') + 1;
|
||||
String json = scContent.substring(start, end);
|
||||
JSONObject UJson = new JSONObject(json);
|
||||
JSONArray Track = UJson.getJSONArray("tracks");
|
||||
for (int k = 0; k < Track.length(); k++) {
|
||||
JSONObject src = Track.getJSONObject(k);
|
||||
String adk = src.getString("src0");
|
||||
String vodName = src.getString("caption");
|
||||
String pzm = getPlayUrl(adk);
|
||||
vodItems2.add(vodName + "$" + pzm);
|
||||
getVodDetail(docs, builder, source.text());
|
||||
}
|
||||
vod_play.put(sourceName, TextUtils.join("#", vodItems2));
|
||||
}
|
||||
vodItems2.removeAll(vodItems2);
|
||||
}
|
||||
}
|
||||
|
||||
String vod_play_from = TextUtils.join("$$$", vod_play.keySet());
|
||||
String vod_play_url = TextUtils.join("$$$", vod_play.values());
|
||||
vodList.put("vod_play_from", vod_play_from);
|
||||
vodList.put("vod_play_url", vod_play_url);
|
||||
Elements clouds = doc.select("p > a");
|
||||
if (!clouds.isEmpty()) {
|
||||
for (Element cloud : clouds) {
|
||||
String cloudUrl = cloud.attr("href");
|
||||
if (!Util.findByRegex(Util.patternQuark, cloudUrl, 0).isBlank()) {
|
||||
shareLinks.add(cloudUrl);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
String quarkNames = "";
|
||||
String quarkUrls = "";
|
||||
if (!shareLinks.isEmpty()) {
|
||||
quarkUrls = super.detailContentVodPlayUrl(shareLinks);
|
||||
quarkNames = super.detailContentVodPlayFrom(shareLinks);
|
||||
|
||||
}
|
||||
|
||||
Vod.VodPlayBuilder.BuildResult buildResult = builder.build();
|
||||
vodList.put("vod_play_from", buildResult.vodPlayFrom + "$$$" + quarkNames);
|
||||
vodList.put("vod_play_url", buildResult.vodPlayUrl + "$$$" + quarkUrls);
|
||||
|
||||
JSONArray list = new JSONArray();
|
||||
list.put(vodList);
|
||||
|
|
@ -383,6 +371,30 @@ public class Ddrk extends Spider {
|
|||
return "";
|
||||
}
|
||||
|
||||
private void getVodDetail(Document doc, Vod.VodPlayBuilder builder, String index) throws JSONException {
|
||||
Elements allScript = doc.select(".wp-playlist-script");
|
||||
String sourceName = "第" + index + "季";
|
||||
for (Element element : allScript) {
|
||||
String scContent = element.html().trim();
|
||||
int start = scContent.indexOf('{');
|
||||
int end = scContent.lastIndexOf('}') + 1;
|
||||
String json = scContent.substring(start, end);
|
||||
JSONObject UJson = new JSONObject(json);
|
||||
JSONArray Track = UJson.getJSONArray("tracks");
|
||||
List<Vod.VodPlayBuilder.PlayUrl> list = new ArrayList<>();
|
||||
for (int k = 0; k < Track.length(); k++) {
|
||||
JSONObject src = Track.getJSONObject(k);
|
||||
String adk = src.getString("src0");
|
||||
String vodName = src.getString("caption");
|
||||
String pzm = getPlayUrl(adk);
|
||||
Vod.VodPlayBuilder.PlayUrl playUrl = new Vod.VodPlayBuilder.PlayUrl();
|
||||
playUrl.name = vodName;
|
||||
playUrl.url = ProxyVideo.buildCommonProxyUrl(pzm, Util.webHeaders(siteUrl));
|
||||
list.add(playUrl);
|
||||
}
|
||||
builder.append(sourceName, list);
|
||||
}
|
||||
}
|
||||
|
||||
public String getPlayUrl(String source) {
|
||||
if (source.endsWith("m3u8")) {
|
||||
|
|
@ -407,7 +419,6 @@ public class Ddrk extends Spider {
|
|||
return Result.get().url(ProxyVideo.buildCommonProxyUrl(id, Util.webHeaders(siteUrl))).string();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public String searchContent(String key, boolean quick) {
|
||||
|
||||
|
|
@ -423,18 +434,5 @@ public class Ddrk extends Spider {
|
|||
return Result.string(vods);
|
||||
}
|
||||
|
||||
private static String doReplaceRegex(Pattern pattern, String src) {
|
||||
if (pattern == null) return src;
|
||||
try {
|
||||
Matcher matcher = pattern.matcher(src);
|
||||
if (matcher.find()) {
|
||||
return matcher.group(1).trim();
|
||||
}
|
||||
} catch (Exception e) {
|
||||
SpiderDebug.log(e);
|
||||
}
|
||||
return src;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -28,7 +28,9 @@ public class DdrkTest {
|
|||
mockContext = RuntimeEnvironment.application;
|
||||
Init.init(mockContext);
|
||||
spider = new Ddrk();
|
||||
spider.init(mockContext, " {\"site\":\"https://ddys.info/\"}");
|
||||
|
||||
spider.init(mockContext, "{\"site\":\"https://ddys.info/\" ,\"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\"}");
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -67,7 +69,7 @@ public class DdrkTest {
|
|||
@org.junit.Test
|
||||
public void detailContent() throws Exception {
|
||||
|
||||
String content = spider.detailContent(Arrays.asList("https://ddys.pro/the-fable/"));
|
||||
String content = spider.detailContent(Arrays.asList("https://ddys.pro/dahmer-monster/"));
|
||||
JsonObject map = Json.safeObject(content);
|
||||
Gson gson = new GsonBuilder().setPrettyPrinting().create();
|
||||
System.out.println("detailContent--" + gson.toJson(map));
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -1 +1 @@
|
|||
6b32420ea8da1560ff69f609769fc883
|
||||
3414fbf0c21f59f02b3cf03a7473cabb
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"spider": "https://androidcatvodspider.pages.dev/jar/custom_spider.jar;md5;6b32420ea8da1560ff69f609769fc883",
|
||||
"spider": "https://androidcatvodspider.pages.dev/jar/custom_spider.jar;md5;3414fbf0c21f59f02b3cf03a7473cabb",
|
||||
"lives": [
|
||||
{
|
||||
"name": "直播ipv6",
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"spider": "https://androidcatvodspider.pages.dev/jar/custom_spider.jar;md5;6b32420ea8da1560ff69f609769fc883",
|
||||
"spider": "https://androidcatvodspider.pages.dev/jar/custom_spider.jar;md5;3414fbf0c21f59f02b3cf03a7473cabb",
|
||||
"lives": [
|
||||
{
|
||||
"name": "直播ipv6",
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"spider": "https://androidcatvodspider.pages.dev/jar/custom_spider.jar;md5;6b32420ea8da1560ff69f609769fc883",
|
||||
"spider": "https://androidcatvodspider.pages.dev/jar/custom_spider.jar;md5;3414fbf0c21f59f02b3cf03a7473cabb",
|
||||
"lives": [
|
||||
{
|
||||
"name": "直播ipv6",
|
||||
|
|
|
|||
Loading…
Reference in New Issue