xb6v 部分

This commit is contained in:
“lushunming” 2024-09-17 21:00:29 +08:00
parent b983a94bbc
commit b7870d5e0b
5 changed files with 107 additions and 60 deletions

View File

@ -1,5 +1,6 @@
package com.github.catvod.spider; package com.github.catvod.spider;
import android.content.Context;
import android.os.Build; import android.os.Build;
import android.util.Base64; import android.util.Base64;
@ -8,8 +9,10 @@ import com.github.catvod.bean.Result;
import com.github.catvod.bean.Vod; import com.github.catvod.bean.Vod;
import com.github.catvod.crawler.Spider; import com.github.catvod.crawler.Spider;
import com.github.catvod.net.OkHttp; import com.github.catvod.net.OkHttp;
import com.github.catvod.utils.Json;
import com.github.catvod.utils.Util; import com.github.catvod.utils.Util;
import org.apache.commons.lang3.StringUtils;
import org.jsoup.Jsoup; import org.jsoup.Jsoup;
import org.jsoup.nodes.Document; import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element; import org.jsoup.nodes.Element;
@ -21,16 +24,17 @@ import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
public class HkTv extends Spider { public class HkTv extends Spider {
private static final String siteUrl = "http://www.tvyb03.com"; private static String siteUrl = "http://www.tvyb03.com";
private static final String cateUrl = siteUrl + "/vod/type/id/"; private static String cateUrl = siteUrl + "/vod/type/id/";
private static final String detailUrl = siteUrl + "/vod/detail/id/"; private static String detailUrl = siteUrl + "/vod/detail/id/";
private static final String playUrl = siteUrl + "/vod/play/id/"; private static String playUrl = siteUrl + "/vod/play/id/";
private static final String searchUrl = siteUrl + "/vod/search.html?wd="; private static String searchUrl = siteUrl + "/vod/search.html?wd=";
private HashMap<String, String> getHeaders() { private HashMap<String, String> getHeaders() {
HashMap<String, String> headers = new HashMap<>(); HashMap<String, String> headers = new HashMap<>();
@ -38,6 +42,22 @@ public class HkTv extends Spider {
return headers; return headers;
} }
@Override
public void init(Context context, String extend) throws Exception {
super.init(context, extend);
Document doc = Jsoup.parse(OkHttp.string(extend));
if (StringUtils.isNoneBlank(doc.html())) {
String data = doc.select("ul > li > a").first().attr("href");
siteUrl = data;
}
cateUrl = siteUrl + "/vod/type/id/";
detailUrl = siteUrl + "/vod/detail/id/";
playUrl = siteUrl + "/vod/play/id/";
searchUrl = siteUrl + "/vod/search.html?wd=";
}
@Override @Override
public String homeContent(boolean filter) throws Exception { public String homeContent(boolean filter) throws Exception {
List<Vod> list = new ArrayList<>(); List<Vod> list = new ArrayList<>();
@ -69,7 +89,7 @@ public class HkTv extends Spider {
List<Vod> list = new ArrayList<>(); List<Vod> list = new ArrayList<>();
String target = cateUrl + tid + ".html"; String target = cateUrl + tid + ".html";
if (!"1".equals(pg)) { if (!"1".equals(pg)) {
target =cateUrl + pg + "/page/" + tid + ".html"; target = cateUrl + pg + "/page/" + tid + ".html";
} }
Document doc = Jsoup.parse(OkHttp.string(target, getHeaders())); Document doc = Jsoup.parse(OkHttp.string(target, getHeaders()));
for (Element element : doc.select("ul.myui-vodlist li a.myui-vodlist__thumb")) { for (Element element : doc.select("ul.myui-vodlist li a.myui-vodlist__thumb")) {

View File

@ -1,5 +1,6 @@
package com.github.catvod.spider; package com.github.catvod.spider;
import android.content.Context;
import android.text.TextUtils; import android.text.TextUtils;
import com.github.catvod.bean.Class; import com.github.catvod.bean.Class;
@ -16,6 +17,7 @@ import org.jsoup.nodes.Element;
import org.jsoup.select.Elements; import org.jsoup.select.Elements;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap; import java.util.HashMap;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
import java.util.List; import java.util.List;
@ -32,7 +34,7 @@ import okhttp3.Response;
* @author zhixc * @author zhixc
* 新版6V电影网 * 新版6V电影网
*/ */
public class Xb6v extends Spider { public class Xb6v extends Cloud {
private final String siteUrl = "https://www.xb6v.com"; private final String siteUrl = "https://www.xb6v.com";
private String nextSearchUrlPrefix; private String nextSearchUrlPrefix;
@ -51,6 +53,13 @@ public class Xb6v extends Spider {
return header; return header;
} }
@Override
public void init(Context context, String extend) throws Exception {
// JsonObject ext = Json.safeObject(extend);
super.init(context, extend);
}
@Override @Override
public String homeContent(boolean filter) throws Exception { public String homeContent(boolean filter) throws Exception {
List<Class> classes = new ArrayList<>(); List<Class> classes = new ArrayList<>();
@ -120,24 +129,58 @@ public class Xb6v extends Spider {
Document doc = Jsoup.parse(html); Document doc = Jsoup.parse(html);
Elements sourceList = doc.select("#post_content"); Elements sourceList = doc.select("#post_content");
String circuitName = "磁力线路"; Vod.VodPlayBuilder builder = new Vod.VodPlayBuilder();
Map<String, String> playMap = new LinkedHashMap<>();
int i = 0;
for (Element source : sourceList) { for (Element source : sourceList) {
//磁力
Elements aList = source.select("table a"); Elements aList = source.select("table a");
List<String> vodItems = new ArrayList<>(); String circuitName = "磁力线路";
List<Vod.VodPlayBuilder.PlayUrl> list = new ArrayList<>();
for (Element a : aList) { for (Element a : aList) {
String episodeUrl = a.attr("href"); String episodeUrl = a.attr("href");
String episodeName = a.text(); String episodeName = a.text();
Vod.VodPlayBuilder.PlayUrl playUrl = new Vod.VodPlayBuilder.PlayUrl();
playUrl.name = episodeName;
playUrl.url = episodeUrl;
list.add(playUrl);
if (!episodeUrl.toLowerCase().startsWith("magnet")) continue; if (!episodeUrl.toLowerCase().startsWith("magnet")) continue;
vodItems.add(episodeName + "$" + episodeUrl);
}
if (vodItems.size() > 0) {
i++;
playMap.put(circuitName + i, TextUtils.join("#", vodItems));
} }
builder.append(circuitName, list);
} }
List<String> shareLinks = new ArrayList<>();
Elements sourceList2 = doc.select("div.context > div.box");
for (Element element : sourceList2) {
String catName = element.select("h3").text();
List<Vod.VodPlayBuilder.PlayUrl> playUrls = new ArrayList<>();
for (Element a : element.select("a")) {
String url = a.attr("href");
String name = a.text();
if (url.matches(Util.patternQuark)) {
shareLinks.add(url);
} else {
Vod.VodPlayBuilder.PlayUrl playUrl = new Vod.VodPlayBuilder.PlayUrl();
playUrl.name = name;
playUrl.url = url;
playUrls.add(playUrl);
}
}
builder.append(catName, playUrls);
}
String quarkNames="";
String quarkUrls="";
if(shareLinks.size()>0){
quarkNames= super.detailContentVodPlayFrom(shareLinks);
quarkUrls= super.detailContentVodPlayUrl(shareLinks);
}
Vod.VodPlayBuilder.BuildResult result = builder.build();
String partHTML = doc.select(".context").html(); String partHTML = doc.select(".context").html();
String name = doc.select(".article_container > h1").text(); String name = doc.select(".article_container > h1").text();
String pic = doc.select("#post_content img").attr("src"); String pic = doc.select("#post_content img").attr("src");
@ -149,12 +192,16 @@ public class Xb6v extends Spider {
if (area.equals("")) area = getStrByRegex(Pattern.compile("地区:(.*?)<br>"), partHTML); if (area.equals("")) area = getStrByRegex(Pattern.compile("地区:(.*?)<br>"), partHTML);
String remark = getStrByRegex(Pattern.compile("◎上映日期 (.*?)<br>"), partHTML); String remark = getStrByRegex(Pattern.compile("◎上映日期 (.*?)<br>"), partHTML);
String actor = getActorOrDirector(Pattern.compile("◎演  员 (.*?)</p>"), partHTML); String actor = getActorOrDirector(Pattern.compile("◎演  员 (.*?)</p>"), partHTML);
if (actor.equals("")) actor = getActorOrDirector(Pattern.compile("◎主  演 (.*?)</p>"), partHTML); if (actor.equals(""))
if (actor.equals("")) actor = getActorOrDirector(Pattern.compile("主演:(.*?)<br>"), partHTML); actor = getActorOrDirector(Pattern.compile("◎主  演 (.*?)</p>"), partHTML);
if (actor.equals(""))
actor = getActorOrDirector(Pattern.compile("主演:(.*?)<br>"), partHTML);
String director = 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); 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); if (description.equals(""))
description = getDescription(Pattern.compile("简介(.*?)</p>", Pattern.CASE_INSENSITIVE | Pattern.DOTALL), partHTML);
Vod vod = new Vod(); Vod vod = new Vod();
vod.setVodId(ids.get(0)); vod.setVodId(ids.get(0));
@ -167,8 +214,8 @@ public class Xb6v extends Spider {
vod.setVodActor(actor); vod.setVodActor(actor);
vod.setVodDirector(director); vod.setVodDirector(director);
vod.setVodContent(description); vod.setVodContent(description);
vod.setVodPlayFrom(TextUtils.join("$$$", playMap.keySet())); vod.setVodPlayFrom(result.vodPlayFrom+"$$$"+quarkNames);
vod.setVodPlayUrl(TextUtils.join("$$$", playMap.values())); vod.setVodPlayUrl(result.vodPlayUrl+"$$$"+quarkUrls);
return Result.string(vod); return Result.string(vod);
} }
@ -180,25 +227,11 @@ public class Xb6v extends Spider {
} }
private String getActorOrDirector(Pattern pattern, String str) { private String getActorOrDirector(Pattern pattern, String str) {
return getStrByRegex(pattern, str) return getStrByRegex(pattern, str).replaceAll("<br>", "").replaceAll("&nbsp;", "").replaceAll("&amp;", "").replaceAll("middot;", "").replaceAll("     ", ",").replaceAll("      ", ",").replaceAll(" ", "");
.replaceAll("<br>", "")
.replaceAll("&nbsp;", "")
.replaceAll("&amp;", "")
.replaceAll("middot;", "")
.replaceAll("     ", ",")
.replaceAll("      ", ",")
.replaceAll(" ", "");
} }
private String getDescription(Pattern pattern, String str) { private String getDescription(Pattern pattern, String str) {
return getStrByRegex(pattern, str) return getStrByRegex(pattern, str).replaceAll("</?[^>]+>", "").replaceAll("\n", "").replaceAll("&amp;", "").replaceAll("middot;", "").replaceAll("ldquo;", "").replaceAll("rdquo;", "").replaceAll(" ", "");
.replaceAll("</?[^>]+>", "")
.replaceAll("\n", "")
.replaceAll("&amp;", "")
.replaceAll("middot;", "")
.replaceAll("ldquo;", "")
.replaceAll("rdquo;", "")
.replaceAll(" ", "");
} }
@Override @Override
@ -210,21 +243,8 @@ public class Xb6v extends Spider {
public String searchContent(String key, boolean quick, String pg) throws Exception { public String searchContent(String key, boolean quick, String pg) throws Exception {
String searchUrl = siteUrl + "/e/search/index.php"; String searchUrl = siteUrl + "/e/search/index.php";
if (pg.equals("1")) { if (pg.equals("1")) {
RequestBody formBody = new FormBody.Builder() RequestBody formBody = new FormBody.Builder().add("show", "title").add("tempid", "1").add("tbname", "article").add("mid", "1").add("dopost", "search").add("submit", "").addEncoded("keyboard", key).build();
.add("show", "title") Request request = new Request.Builder().url(searchUrl).addHeader("User-Agent", Util.CHROME).addHeader("Origin", siteUrl).addHeader("Referer", siteUrl + "/").post(formBody).build();
.add("tempid", "1")
.add("tbname", "article")
.add("mid", "1")
.add("dopost", "search")
.add("submit", "")
.addEncoded("keyboard", key)
.build();
Request request = new Request.Builder().url(searchUrl)
.addHeader("User-Agent", Util.CHROME)
.addHeader("Origin", siteUrl)
.addHeader("Referer", siteUrl + "/")
.post(formBody)
.build();
Response response = OkHttp.newCall(request); Response response = OkHttp.newCall(request);
String[] split = String.valueOf(response.request().url()).split("\\?searchid="); String[] split = String.valueOf(response.request().url()).split("\\?searchid=");
nextSearchUrlPrefix = split[0] + "index.php?page="; nextSearchUrlPrefix = split[0] + "index.php?page=";

View File

@ -28,7 +28,7 @@ public class HKTvTest {
mockContext = RuntimeEnvironment.application; mockContext = RuntimeEnvironment.application;
Init.init(mockContext); Init.init(mockContext);
spider = new HkTv(); spider = new HkTv();
spider.init(mockContext, ""); spider.init(mockContext, "http://www.hktvyb.vip/");
} }
@org.junit.Test @org.junit.Test

File diff suppressed because one or more lines are too long

View File

@ -120,7 +120,8 @@
"type": 3, "type": 3,
"api": "csp_HkTv", "api": "csp_HkTv",
"searchable": 0, "searchable": 0,
"filterable": 1 "filterable": 1,
"ext": "http://www.hktvyb.vip/"
}, },
{ {
"key": "NGkt", "key": "NGkt",