package com.github.catvod.spider; import android.content.Context; import com.github.catvod.bean.Class; import com.github.catvod.bean.Filter; import com.github.catvod.bean.Result; import com.github.catvod.bean.Vod; import com.github.catvod.bean.paper.Data; import com.github.catvod.crawler.Spider; import com.github.catvod.net.OkHttp; import com.github.catvod.utils.Misc; import org.json.JSONObject; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; /** * @author ColaMint & FongMi */ public class Paper extends Spider { private final String url = "https://gitcafe.net/alipaper/"; private final String api = "https://gitcafe.net/tool/alipaper/"; private List types; private HashMap getHeaders() { HashMap headers = new HashMap<>(); headers.put("User-Agent", Misc.CHROME); return headers; } @Override public void init(Context context, String extend) { types = Arrays.asList("hyds", "rhds", "omds", "qtds", "hydy", "rhdy", "omdy", "qtdy", "hydm", "rhdm", "omdm", "jlp", "zyp", "jypx", "qtsp"); Ali.get().init(extend); } @Override public String homeContent(boolean filter) { Document doc = Jsoup.parse(OkHttp.string(url, getHeaders())); Elements trs = doc.select("table.tableizer-table > tbody > tr"); LinkedHashMap> filters = new LinkedHashMap<>(); List classes = new ArrayList<>(); for (Element tr : trs) { List values = new ArrayList<>(); for (Element td : tr.select("td")) { if (td.hasClass("tableizer-title")) { String typeId = td.select("a").attr("href").replace("#", ""); if (!types.contains(typeId)) continue; classes.add(new Class(typeId, td.text())); filters.put(typeId, Arrays.asList(new Filter("type", "類型", values))); } else { String value = td.select("a").attr("onclick").split("'")[1]; values.add(new Filter.Value(td.text(), value)); } } } return Result.string(classes, filters); } @Override public String homeVideoContent() throws Exception { List list = new ArrayList<>(); JSONObject homeData = new JSONObject(OkHttp.string(url + "home.json", getHeaders())); List items = Data.arrayFrom(homeData.getJSONObject("info").getJSONArray("new").toString()); for (Data item : items) if (types.contains(item.getCat())) list.add(item.getVod()); return Result.string(list); } @Override public String categoryContent(String tid, String pg, boolean filter, HashMap extend) { String type = extend.containsKey("type") ? extend.get("type") : tid; List list = new ArrayList<>(); Map params = new HashMap<>(); params.put("action", "viewcat"); params.put("cat", type); params.put("num", pg); String result = OkHttp.post(api, params, getHeaders()); for (Data item : Data.arrayFrom(result)) list.add(item.getVod()); return Result.string(list); } @Override public String detailContent(List ids) throws Exception { return Ali.get().detailContent(ids); } @Override public String searchContent(String key, boolean quick) { List list = new ArrayList<>(); Map params = new HashMap<>(); params.put("action", "search"); params.put("keyword", key); String result = OkHttp.post(api, params, getHeaders()); for (Data item : Data.arrayFrom(result)) if (types.contains(item.getCat()) && item.getTitle().contains(key)) list.add(item.getVod()); return Result.string(list); } @Override public String playerContent(String flag, String id, List vipFlags) throws Exception { return Ali.get().playerContent(flag, id); } }