package com.github.catvod.spider; 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.net.OkHttp; import com.github.catvod.utils.Util; import com.orhanobut.logger.Logger; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import java.net.URLEncoder; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Locale; public class QxiTv extends Spider { private static final String siteUrl = "https://7xi.tv"; private static final String cateUrl = siteUrl + "/vodtype/"; private static final String detailUrl = siteUrl + "/videos/"; private static final String searchUrl = siteUrl + "/search/"; private HashMap getHeaders() { HashMap headers = new HashMap<>(); headers.put("User-Agent", Util.CHROME); return headers; } @Override public String homeContent(boolean filter) throws Exception { List list = new ArrayList<>(); List classes = new ArrayList<>(); Document doc = Jsoup.parse(OkHttp.string(cateUrl.concat("1.html"), getHeaders())); // for (Element element : doc.select(".header_nav1 div.this-wap > a")) { // String typeId = element.attr("href"); // String typeName = element.text(); // classes.add(new Class(typeId, typeName)); // } doc = Jsoup.parse(OkHttp.string(siteUrl, getHeaders())); for (Element element : doc.select("div.public-list-div")) { try { String pic = element.select("img").attr("data-src"); String url = element.select("a").attr("href"); String name = element.select("a.title").text(); if (pic.endsWith(".gif") || name.isEmpty()) continue; String id = url.split("/")[2]; list.add(new Vod(id, name, pic)); }catch (Exception e){ } } return Result.string(classes, list); } @Override public String categoryContent(String tid, String pg, boolean filter, HashMap extend) throws Exception { List list = new ArrayList<>(); String target = cateUrl + tid + "/?mode=async&function=get_block&block_id=list_videos_common_videos_list&sort_by=post_date&from=" + String.format(Locale.getDefault(), "%02d", Integer.parseInt(pg)) + "&_=" + System.currentTimeMillis(); Document doc = Jsoup.parse(OkHttp.string(target, getHeaders())); for (Element element : doc.select("div.video-img-box")) { String pic = element.select("img").attr("data-src"); String url = element.select("a").attr("href"); String name = element.select("div.detail > h6").text(); String id = url.split("/")[4]; list.add(new Vod(id, name, pic)); } return Result.string(list); } @Override public String detailContent(List ids) throws Exception { Document doc = Jsoup.parse(OkHttp.string(detailUrl.concat(ids.get(0)).concat("/"), getHeaders())); String name = doc.select("meta[property=og:title]").attr("content"); String pic = doc.select("meta[property=og:image]").attr("content"); String year = doc.select("span.inactive-color").get(0).text(); Vod vod = new Vod(); vod.setVodId(ids.get(0)); vod.setVodPic(pic); vod.setVodYear(year.replace("上市於 ", "")); vod.setVodName(name); vod.setVodPlayFrom("Jable"); vod.setVodPlayUrl("播放$" + Util.getVar(doc.html(), "hlsUrl")); return Result.string(vod); } @Override public String searchContent(String key, boolean quick) throws Exception { List list = new ArrayList<>(); Document doc = Jsoup.parse(OkHttp.string(searchUrl.concat(URLEncoder.encode(key)).concat("/"), getHeaders())); for (Element element : doc.select("div.video-img-box")) { String pic = element.select("img").attr("data-src"); String url = element.select("a").attr("href"); String name = element.select("div.detail > h6").text(); String id = url.split("/")[4]; list.add(new Vod(id, name, pic)); } return Result.string(list); } @Override public String playerContent(String flag, String id, List vipFlags) throws Exception { return Result.get().url(id).header(getHeaders()).string(); } }