libvio add 夸克
This commit is contained in:
parent
9fe5ea1240
commit
7a88c3c473
|
|
@ -8,8 +8,10 @@ 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.Util;
|
||||
|
||||
import com.google.gson.JsonElement;
|
||||
import org.json.JSONObject;
|
||||
import org.jsoup.Jsoup;
|
||||
import org.jsoup.nodes.Document;
|
||||
|
|
@ -25,9 +27,9 @@ import java.util.List;
|
|||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
public class Libvio extends Spider {
|
||||
public class Libvio extends Cloud {
|
||||
|
||||
private static String siteUrl = "";
|
||||
private static String siteUrl = "https://www.libvio.link/";
|
||||
|
||||
|
||||
private static final String MOBILE_UA = "Mozilla/5.0 (Linux; Android 11; M2007J3SC Build/RKQ1.200826.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045714 Mobile Safari/537.36";
|
||||
|
|
@ -49,10 +51,16 @@ public class Libvio extends Spider {
|
|||
|
||||
@Override
|
||||
public void init(Context context, String extend) throws Exception {
|
||||
JsonElement json = Json.parse(extend);
|
||||
super.init(context, extend);
|
||||
String html = OkHttp.string(extend);
|
||||
String html = OkHttp.string(json.getAsJsonObject().get("site").getAsString());
|
||||
Document doc = Jsoup.parse(html);
|
||||
siteUrl = doc.select("#all > div > div > div > div > ul > li > a:nth-child(2)").attr("href");
|
||||
for (Element element : doc.select(" a")) {
|
||||
if (element.text().contains("可用")) {
|
||||
siteUrl = element.attr("href");
|
||||
break;
|
||||
}
|
||||
}
|
||||
SpiderDebug.log("libvio跳转地址 =====>" + siteUrl); // js_debug.log
|
||||
}
|
||||
|
||||
|
|
@ -140,40 +148,55 @@ public class Libvio extends Spider {
|
|||
// 播放源
|
||||
Elements tabs = doc.select("div.stui-vodlist__head > div > h3");
|
||||
Elements list = doc.select("div.stui-vodlist__head > ul.stui-content__playlist ");
|
||||
String PlayFrom = "";
|
||||
String PlayUrl = "";
|
||||
|
||||
Vod.VodPlayBuilder builder = new Vod.VodPlayBuilder();
|
||||
List<String> quarkList = new ArrayList<>();
|
||||
for (int i = 0; i < tabs.size(); i++) {
|
||||
List<Vod.VodPlayBuilder.PlayUrl> playUrls = new ArrayList<>();
|
||||
|
||||
String tabName = tabs.get(i).text();
|
||||
if (tabName.contains("夸克")) {
|
||||
continue;
|
||||
}
|
||||
if (!"".equals(PlayFrom)) {
|
||||
PlayFrom = PlayFrom + "$$$" + tabName;
|
||||
} else {
|
||||
PlayFrom = PlayFrom + tabName;
|
||||
}
|
||||
|
||||
Elements li = list.get(i).select("a");
|
||||
String liUrl = "";
|
||||
for (int i1 = 0; i1 < li.size(); i1++) {
|
||||
if (!"".equals(liUrl)) {
|
||||
liUrl = liUrl + "#" + li.get(i1).text() + "$" + li.get(i1).attr("href").replace("/play/", "");
|
||||
for (Element element : li) {
|
||||
if (tabName.contains("夸克")) {
|
||||
quarkList.add(element.attr("href"));
|
||||
} else {
|
||||
liUrl = liUrl + li.get(i1).text() + "$" + li.get(i1).attr("href").replace("/play/", "");
|
||||
Vod.VodPlayBuilder.PlayUrl playUrl = new Vod.VodPlayBuilder.PlayUrl();
|
||||
playUrl.name = element.text();
|
||||
playUrl.url = element.attr("href").replace("/play/", "");
|
||||
playUrls.add(playUrl);
|
||||
}
|
||||
|
||||
}
|
||||
if (!tabName.contains("夸克")) {
|
||||
builder.append(tabName, playUrls);
|
||||
}
|
||||
}
|
||||
if (!"".equals(PlayUrl)) {
|
||||
PlayUrl = PlayUrl + "$$$" + liUrl;
|
||||
} else {
|
||||
PlayUrl = PlayUrl + liUrl;
|
||||
List<String> shareLinks = new ArrayList<>();
|
||||
String quarkNames = "";
|
||||
String quarkUrls = "";
|
||||
|
||||
if (!quarkList.isEmpty()) {
|
||||
for (String s : quarkList) {
|
||||
Document detailPageDoc = Jsoup.parse(OkHttp.string(siteUrl.concat(s), getHeaders()));
|
||||
Matcher matcher = Pattern.compile("player_aaaa=(.*?)</script>").matcher(detailPageDoc.html());
|
||||
String json = matcher.find() ? matcher.group(1) : "";
|
||||
org.json.JSONObject player = new JSONObject(json);
|
||||
String url = player.getString("url");
|
||||
shareLinks.add(url);
|
||||
}
|
||||
quarkUrls = super.detailContentVodPlayUrl(shareLinks);
|
||||
quarkNames = super.detailContentVodPlayFrom(shareLinks);
|
||||
}
|
||||
|
||||
Vod.VodPlayBuilder.BuildResult result = builder.build();
|
||||
|
||||
Vod vod = new Vod();
|
||||
vod.setVodId(ids.get(0));
|
||||
vod.setVodPic(siteUrl + pic);
|
||||
vod.setVodName(name);
|
||||
vod.setVodPlayFrom(PlayFrom);
|
||||
vod.setVodPlayUrl(PlayUrl);
|
||||
vod.setVodPlayFrom(result.vodPlayFrom + "$$$" + quarkNames);
|
||||
vod.setVodPlayUrl(result.vodPlayUrl + "$$$" + quarkUrls);
|
||||
return Result.string(vod);
|
||||
}
|
||||
|
||||
|
|
@ -198,6 +221,9 @@ public class Libvio extends Spider {
|
|||
|
||||
@Override
|
||||
public String playerContent(String flag, String id, List<String> vipFlags) throws Exception {
|
||||
if (flag.contains("quark")) {
|
||||
return super.playerContent(flag, id, vipFlags);
|
||||
}
|
||||
String target = siteUrl.concat("/play/").concat(id);
|
||||
Document doc = Jsoup.parse(OkHttp.string(target));
|
||||
Matcher matcher = Pattern.compile("player_aaaa=(.*?)</script>").matcher(doc.html());
|
||||
|
|
@ -217,7 +243,7 @@ public class Libvio extends Spider {
|
|||
}
|
||||
String playUrl = OkHttp.string(purl, getHeaders(target.replace("www.", "")));
|
||||
|
||||
String realUrl = Util.getVar(playUrl, "urls");
|
||||
String realUrl = Util.getVar(playUrl, "vid");
|
||||
|
||||
return Result.get().url(realUrl).header(getHeaders()).string();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -28,7 +28,10 @@ public class LibvioTest {
|
|||
mockContext = RuntimeEnvironment.application;
|
||||
Init.init(mockContext);
|
||||
spider = new Libvio();
|
||||
spider.init(mockContext, "https://libvio.app");
|
||||
spider.init(mockContext, "{\"site\": \"https://www.libvio.app\" ,\"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\"}");
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@org.junit.Test
|
||||
|
|
@ -65,7 +68,9 @@ public class LibvioTest {
|
|||
@org.junit.Test
|
||||
public void detailContent() throws Exception {
|
||||
|
||||
String content = spider.detailContent(Arrays.asList("714891769.html"));
|
||||
String content = spider.detailContent(Arrays.asList("714891892.html"));
|
||||
System.out.println("detailContent--" + content);
|
||||
|
||||
JsonObject map = Json.safeObject(content);
|
||||
Gson gson = new GsonBuilder().setPrettyPrinting().create();
|
||||
System.out.println("detailContent--" + gson.toJson(map));
|
||||
|
|
@ -74,8 +79,8 @@ public class LibvioTest {
|
|||
|
||||
@org.junit.Test
|
||||
public void playerContent() throws Exception {
|
||||
String froms = "BD播放";
|
||||
String urls = "第01集$714891769-1-1.html#第02集$714891769-1-2.html#第03集$714891769-1-3.html#第04集$714891769-1-4.html";
|
||||
String froms = "HD播放$$$quark4K#01$$$quark超清#01$$$quark高清#01$$$quark普画#01";
|
||||
String urls = "第01集$714891892-2-1.html#第02集$714891892-2-2.html$$$女巫阿加莎S01E01.mp4 873.45MB$1392fbcf2dd440f39ab91613c8a11bbf++fd658a5a021be6b9f2a5a701cb19467a++4190fba22ff8++AssrQOfAvLi5VRwpv6zsXKP+AV2nAaThcsYmZYTr85g=#女巫阿加莎S01E02.mp4 908.26MB$0554004cf0d94840a7cd567a34d5a400++9ea8ab7fa561f537e0573ae04d32b74c++4190fba22ff8++AssrQOfAvLi5VRwpv6zsXKP+AV2nAaThcsYmZYTr85g=#女巫阿加莎S01E01.mkv 1.68GB$a938f4ca7ede4afbb35844edc97ef338++2c17995abfd9e4d4d239652179518480++4190fba22ff8++AssrQOfAvLi5VRwpv6zsXKP+AV2nAaThcsYmZYTr85g=#女巫阿加莎S01E02.mkv 1.59GB$1b69a4c0ef2b46a281dbf616f0d1bea6++217e94c28c7fa60ae556d1a1fbcc48f9++4190fba22ff8++AssrQOfAvLi5VRwpv6zsXKP+AV2nAaThcsYmZYTr85g=$$$女巫阿加莎S01E01.mp4 873.45MB$1392fbcf2dd440f39ab91613c8a11bbf++fd658a5a021be6b9f2a5a701cb19467a++4190fba22ff8++AssrQOfAvLi5VRwpv6zsXKP+AV2nAaThcsYmZYTr85g=#女巫阿加莎S01E02.mp4 908.26MB$0554004cf0d94840a7cd567a34d5a400++9ea8ab7fa561f537e0573ae04d32b74c++4190fba22ff8++AssrQOfAvLi5VRwpv6zsXKP+AV2nAaThcsYmZYTr85g=#女巫阿加莎S01E01.mkv 1.68GB$a938f4ca7ede4afbb35844edc97ef338++2c17995abfd9e4d4d239652179518480++4190fba22ff8++AssrQOfAvLi5VRwpv6zsXKP+AV2nAaThcsYmZYTr85g=#女巫阿加莎S01E02.mkv 1.59GB$1b69a4c0ef2b46a281dbf616f0d1bea6++217e94c28c7fa60ae556d1a1fbcc48f9++4190fba22ff8++AssrQOfAvLi5VRwpv6zsXKP+AV2nAaThcsYmZYTr85g=$$$女巫阿加莎S01E01.mp4 873.45MB$1392fbcf2dd440f39ab91613c8a11bbf++fd658a5a021be6b9f2a5a701cb19467a++4190fba22ff8++AssrQOfAvLi5VRwpv6zsXKP+AV2nAaThcsYmZYTr85g=#女巫阿加莎S01E02.mp4 908.26MB$0554004cf0d94840a7cd567a34d5a400++9ea8ab7fa561f537e0573ae04d32b74c++4190fba22ff8++AssrQOfAvLi5VRwpv6zsXKP+AV2nAaThcsYmZYTr85g=#女巫阿加莎S01E01.mkv 1.68GB$a938f4ca7ede4afbb35844edc97ef338++2c17995abfd9e4d4d239652179518480++4190fba22ff8++AssrQOfAvLi5VRwpv6zsXKP+AV2nAaThcsYmZYTr85g=#女巫阿加莎S01E02.mkv 1.59GB$1b69a4c0ef2b46a281dbf616f0d1bea6++217e94c28c7fa60ae556d1a1fbcc48f9++4190fba22ff8++AssrQOfAvLi5VRwpv6zsXKP+AV2nAaThcsYmZYTr85g=$$$女巫阿加莎S01E01.mp4 873.45MB$1392fbcf2dd440f39ab91613c8a11bbf++fd658a5a021be6b9f2a5a701cb19467a++4190fba22ff8++AssrQOfAvLi5VRwpv6zsXKP+AV2nAaThcsYmZYTr85g=#女巫阿加莎S01E02.mp4 908.26MB$0554004cf0d94840a7cd567a34d5a400++9ea8ab7fa561f537e0573ae04d32b74c++4190fba22ff8++AssrQOfAvLi5VRwpv6zsXKP+AV2nAaThcsYmZYTr85g=#女巫阿加莎S01E01.mkv 1.68GB$a938f4ca7ede4afbb35844edc97ef338++2c17995abfd9e4d4d239652179518480++4190fba22ff8++AssrQOfAvLi5VRwpv6zsXKP+AV2nAaThcsYmZYTr85g=#女巫阿加莎S01E02.mkv 1.59GB$1b69a4c0ef2b46a281dbf616f0d1bea6++217e94c28c7fa60ae556d1a1fbcc48f9++4190fba22ff8++AssrQOfAvLi5VRwpv6zsXKP+AV2nAaThcsYmZYTr85g=";
|
||||
for (int i = 0; i < urls.split("\\$\\$\\$").length; i++) {
|
||||
String content = spider.playerContent(froms.split("\\$\\$\\$")[i], urls.split("\\$\\$\\$")[i].split("#")[0].split("\\$")[1], new ArrayList<>());
|
||||
JsonObject map = Json.safeObject(content);
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -1 +1 @@
|
|||
c1b5e483406c4bbba9c10acc26e946d8
|
||||
6b1386a9e267e6d0199f349fccd05122
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"spider": "https://androidcatvodspider.pages.dev/jar/custom_spider.jar;md5;2e49412e2661e5328d9407c41b84893b",
|
||||
"spider": "https://androidcatvodspider.pages.dev/jar/custom_spider.jar;md5;6b1386a9e267e6d0199f349fccd05122",
|
||||
"lives": [
|
||||
{
|
||||
"name": "直播ipv6",
|
||||
|
|
@ -164,7 +164,7 @@
|
|||
"api": "csp_Libvio",
|
||||
"searchable": 1,
|
||||
"filterable": 0,
|
||||
"ext": "https://www.libvio.app"
|
||||
"ext": "{ \"site\": \"https://www.libvio.app\" }"
|
||||
},
|
||||
{
|
||||
"key": "Ddrk",
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"spider": "https://androidcatvodspider.pages.dev/jar/custom_spider.jar;md5;2e49412e2661e5328d9407c41b84893b",
|
||||
"spider": "https://androidcatvodspider.pages.dev/jar/custom_spider.jar;md5;6b1386a9e267e6d0199f349fccd05122",
|
||||
"lives": [
|
||||
{
|
||||
"name": "直播ipv6",
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"spider": "https://androidcatvodspider.pages.dev/jar/custom_spider.jar;md5;2e49412e2661e5328d9407c41b84893b",
|
||||
"spider": "https://androidcatvodspider.pages.dev/jar/custom_spider.jar;md5;6b1386a9e267e6d0199f349fccd05122",
|
||||
"lives": [
|
||||
{
|
||||
"name": "直播ipv6",
|
||||
|
|
@ -162,7 +162,7 @@
|
|||
"api": "csp_Libvio",
|
||||
"searchable": 1,
|
||||
"filterable": 0,
|
||||
"ext": "https://www.libvio.app"
|
||||
"ext": "{ \"site\": \"https://www.libvio.app\" }"
|
||||
},
|
||||
{
|
||||
"key": "Ddrk",
|
||||
|
|
|
|||
Loading…
Reference in New Issue