From d05f3f042bcd367a1fa7f6eefe01ce9fd313d788 Mon Sep 17 00:00:00 2001 From: Corner Date: Sun, 15 Dec 2024 21:05:10 +0800 Subject: [PATCH] feat: xb6v --- jar/spider.jar | Bin 520453 -> 526906 bytes json/config.json | 11 +- json/configAll.json | 2 +- .../java/com/github/catvod/spider/Xb6v.java | 237 ++++++++++++++++++ src/test/java/Xb6vTest.kt | 36 +++ 5 files changed, 284 insertions(+), 2 deletions(-) create mode 100644 src/main/java/com/github/catvod/spider/Xb6v.java create mode 100644 src/test/java/Xb6vTest.kt diff --git a/jar/spider.jar b/jar/spider.jar index 6763ec8e88666195d7fa45ccc8d2c82b78c29028..370bf0a716f51c78160e25790b09788c49086e76 100644 GIT binary patch delta 22683 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 B!v_EW delta 16293 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 getHeader() { + Map header = new HashMap<>(); + header.put("User-Agent", Utils.CHROME); + header.put("Referer", siteUrl + "/"); + return header; + } + + private Map getDetailHeader() { + Map header = new HashMap<>(); + header.put("User-Agent", Utils.CHROME); + return header; + } + + @Override + public String homeContent(boolean filter) throws Exception { + List classes = new ArrayList<>(); + String html = OkHttp.string(siteUrl, getHeader()); + Document doc = Jsoup.parse(html); + Elements elements = doc.select("#menus > li > a"); + LinkedHashMap> filters = new LinkedHashMap<>(); + for (int i = 0; i < elements.size(); i++) { + if (i < 2 || i == elements.size() - 1) continue; + Element e = elements.get(i); + String typeId = e.attr("href"); + String typeName = e.text(); + if (typeName.equals("电视剧")) { + List values = new ArrayList<>(); + values.add(new Filter.Value("不限", "")); + for (Element a : e.nextElementSibling().select("a")) { + values.add(new Filter.Value(a.text(), a.attr("href").replaceAll(typeId, ""))); + } + List filterList = new ArrayList<>(); + filterList.add(new Filter("cateId", "类型", values)); + filters.put(typeId, filterList); + } + classes.add(new Class(typeId, typeName)); + } + return Result.string(classes, parseVodListFromDoc(doc), filters); + } + + private List parseVodListFromDoc(String html) { + return parseVodListFromDoc(Jsoup.parse(html)); + } + + private List parseVodListFromDoc(Document doc) { + Elements items = doc.select("#post_container .post_hover"); + List list = new ArrayList<>(); + for (Element item : items) { + Element element = item.select("[class=zoom]").get(0); + String vodId = element.attr("href"); + String name = element.attr("title").replaceAll("]+>", ""); + String pic = element.select("img").attr("src"); + String remark = item.select("[rel=category tag]").text(); + list.add(new Vod(vodId, name, pic, remark)); + } + return list; + } + + @Override + public String categoryContent(String tid, String pg, boolean filter, HashMap extend) throws Exception { + String cateId = extend.get("cateId") == null ? "" : extend.get("cateId"); + String cateUrl = siteUrl + tid + cateId; + if (!pg.equals("1")) cateUrl += "index_" + pg + ".html"; + String html = OkHttp.string(cateUrl, getHeader()); + Document doc = Jsoup.parse(html); + String href = doc.select(".pagination > a").last().attr("href"); + int page = Integer.parseInt(pg); + int count = Integer.parseInt(getStrByRegex(Pattern.compile("index_(.*?).html"), href)); + int limit = 18; + Elements items = doc.select("#post_container .post_hover"); + int total = page == count ? (page - 1) * limit + items.size() : count * limit; + return Result.get().vod(parseVodListFromDoc(doc)).page(page, count, limit, total).string(); + } + + @Override + public String detailContent(List ids) throws Exception { + String vodId = ids.get(0); + String detailUrl = siteUrl + vodId; + String html = OkHttp.string(detailUrl, getDetailHeader()); + Document doc = Jsoup.parse(html); + Elements sourceList = doc.select("#post_content"); + + String circuitName = "磁力线路"; + Map playMap = new LinkedHashMap<>(); + int i = 0; + for (Element source : sourceList) { + Elements aList = source.select("table a"); + List vodItems = new ArrayList<>(); + for (Element a : aList) { + String episodeUrl = a.attr("href"); + String episodeName = a.text(); + if (!episodeUrl.toLowerCase().startsWith("magnet")) continue; + vodItems.add(episodeName + "$" + episodeUrl); + } + if (vodItems.size() > 0) { + i++; + playMap.put(circuitName + i, StringUtils.join(vodItems, "#")); + } + } + + String partHTML = doc.select(".context").html(); + String name = doc.select(".article_container > h1").text(); + String pic = doc.select("#post_content img").attr("src"); + String typeName = getStrByRegex(Pattern.compile("◎类  别 (.*?)
"), partHTML); + if (typeName.equals("")) typeName = doc.select("[rel=category tag]").text(); + String year = getStrByRegex(Pattern.compile("◎年  代 (.*?)
"), partHTML); + if (year.equals("")) year = getStrByRegex(Pattern.compile("首播:(.*?)
"), partHTML); + String area = getStrByRegex(Pattern.compile("◎产  地 (.*?)
"), partHTML); + if (area.equals("")) area = getStrByRegex(Pattern.compile("地区:(.*?)
"), partHTML); + String remark = getStrByRegex(Pattern.compile("◎上映日期 (.*?)
"), partHTML); + String actor = getActorOrDirector(Pattern.compile("◎演  员 (.*?)

"), partHTML); + if (actor.equals("")) actor = getActorOrDirector(Pattern.compile("◎主  演 (.*?)

"), partHTML); + if (actor.equals("")) actor = getActorOrDirector(Pattern.compile("主演:(.*?)
"), partHTML); + String director = getActorOrDirector(Pattern.compile("◎导  演 (.*?)
"), partHTML); + if (director.equals("")) director = getActorOrDirector(Pattern.compile("导演:(.*?)
"), partHTML); + String description = getDescription(Pattern.compile("◎简  介(.*?)
", Pattern.CASE_INSENSITIVE | Pattern.DOTALL), partHTML); + if (description.equals("")) description = getDescription(Pattern.compile("简介(.*?)

", Pattern.CASE_INSENSITIVE | Pattern.DOTALL), partHTML); + + Vod vod = new Vod(); + vod.setVodId(ids.get(0)); + vod.setVodName(name); + vod.setVodPic(pic); + vod.setTypeName(typeName); + vod.setVodYear(year); + vod.setVodArea(area); + vod.setVodRemarks(remark); + vod.setVodActor(actor); + vod.setVodDirector(director); + vod.setVodContent(description); + vod.setVodPlayFrom(StringUtils.join(playMap.keySet(), "$$$")); + vod.setVodPlayUrl(StringUtils.join(playMap.values(), "$$$")); + + return Result.string(vod); + } + + private String getStrByRegex(Pattern pattern, String str) { + Matcher matcher = pattern.matcher(str); + if (matcher.find()) return matcher.group(1).trim(); + return ""; + } + + private String getActorOrDirector(Pattern pattern, String str) { + return getStrByRegex(pattern, str) + .replaceAll("
", "") + .replaceAll(" ", "") + .replaceAll("&", "") + .replaceAll("middot;", "・") + .replaceAll("     ", ",") + .replaceAll("      ", ",") + .replaceAll(" ", ""); + } + + private String getDescription(Pattern pattern, String str) { + return getStrByRegex(pattern, str) + .replaceAll("]+>", "") + .replaceAll("\n", "") + .replaceAll("&", "") + .replaceAll("middot;", "・") + .replaceAll("ldquo;", "【") + .replaceAll("rdquo;", "】") + .replaceAll(" ", ""); + } + + @Override + public String searchContent(String key, boolean quick) throws Exception { + return searchContent(key, quick, "1"); + } + + @Override + public String searchContent(String key, boolean quick, String pg) throws Exception { + String searchUrl = siteUrl + Utils.base64Decode("L2Uvc2VhcmNoLzFpbmRleC5waHA="); + if (pg.equals("1")) { + 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(); + Request request = new Request.Builder().url(searchUrl) + .addHeader("User-Agent", Utils.CHROME) + .addHeader("Origin", siteUrl) + .addHeader("Referer", siteUrl + "/") + .post(formBody) + .build(); + Response response = OkHttp.newCall(request); + String[] split = String.valueOf(response.request().url()).split("\\?searchid="); + nextSearchUrlPrefix = split[0] + "index.php?page="; + nextSearchUrlSuffix = "&searchid=" + split[1]; + return Result.string(parseVodListFromDoc(response.body().string())); + } else { + int page = Integer.parseInt(pg) - 1; + searchUrl = nextSearchUrlPrefix + page + nextSearchUrlSuffix; + return Result.string(parseVodListFromDoc(OkHttp.string(searchUrl, getHeader()))); + } + } + + @Override + public String playerContent(String flag, String id, List vipFlags) throws Exception { + return Result.get().url(id).string(); + } +} diff --git a/src/test/java/Xb6vTest.kt b/src/test/java/Xb6vTest.kt new file mode 100644 index 0000000..3f1fad3 --- /dev/null +++ b/src/test/java/Xb6vTest.kt @@ -0,0 +1,36 @@ +import com.github.catvod.spider.Xb6v +import common.TestInterface +import org.junit.jupiter.api.Test + +class Xb6vTest: TestInterface { + override var t: Xb6v + get() = Xb6v() + set(value) {} + + @Test + override fun homeTest() { + val homeContent = t.homeContent(false) + assert(homeContent) + } + + @Test + override fun cateTest() { + val categoryContent = t.categoryContent("/xijupian/", "1", false, hashMapOf()) + assert(categoryContent) + } + + @Test + override fun detailTest() { + val detailContent = t.detailContent(listOf("/xijupian/25112.html")) + assert(detailContent) + } + + override fun playTest() { + } + + @Test + override fun searchTest() { + val searchContent = t.searchContent("阿凡达", false) + assert(searchContent) + } +} \ No newline at end of file