diff --git a/app/src/main/java/com/github/catvod/spider/PanSearch.java b/app/src/main/java/com/github/catvod/spider/PanSearch.java index 413358d6..b4a6a5f2 100644 --- a/app/src/main/java/com/github/catvod/spider/PanSearch.java +++ b/app/src/main/java/com/github/catvod/spider/PanSearch.java @@ -1,89 +1,67 @@ package com.github.catvod.spider; import android.content.Context; -import com.github.catvod.crawler.Spider; -import okhttp3.OkHttpClient; -import okhttp3.Request; -import okhttp3.Response; + +import com.github.catvod.bean.Result; +import com.github.catvod.bean.Vod; +import com.github.catvod.net.OkHttp; +import com.github.catvod.utils.Utils; + import org.json.JSONArray; import org.json.JSONObject; import org.jsoup.Jsoup; -import org.jsoup.nodes.Document; import java.net.URLEncoder; - +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; /** * @author zhixc - * */ public class PanSearch extends Ali { + + private final String URL = "https://www.pansearch.me/"; + + private Map getHeader() { + Map header = new HashMap<>(); + header.put("User-Agent", Utils.CHROME); + return header; + } + + private Map getSearchHeader() { + Map header = getHeader(); + header.put("x-nextjs-data", "1"); + header.put("referer", URL); + return header; + } + @Override public void init(Context context, String extend) { super.init(context, extend); } @Override - public String searchContent(String key, boolean quick) { - try { - JSONArray videoArray = new JSONArray(); - - Request request = new Request.Builder() - .get() - .url("https://www.pansearch.me") - .addHeader("User-Agent", "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36") - .build(); - OkHttpClient okHttpClient = new OkHttpClient(); - Response response = okHttpClient.newCall(request).execute(); - String homePageStr = response.body().string(); - response.close(); - Document document = Jsoup.parse(homePageStr); - String html = document.select("script[type=application/json]").html(); - String html2 = document.select("script").get(0).html(); - String html3 = document.select("script").get(0).data(); - String html4 = document.select("script[id=__NEXT_DATA__]").get(0).data(); - String html5 = document.select("script[id=__NEXT_DATA__]").html(); - System.out.println(html2); - JSONObject nextData = new JSONObject(html4); - String buildId = nextData.getString("buildId"); - - String searchUrl = "https://www.pansearch.me/_next/data/" + buildId + "/search.json?keyword=" + URLEncoder.encode(key) + "&pan=aliyundrive"; - Request request2 = new Request.Builder() - .get() - .url(searchUrl) - .addHeader("User-Agent", "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36") - .addHeader("referer", "https://www.pansearch.me/") - .addHeader("x-nextjs-data", "1") - .build(); - Response response2 = okHttpClient.newCall(request2).execute(); - String searchResult = response2.body().string(); - response2.close(); - JSONArray dataArray = new JSONObject(searchResult) - .getJSONObject("pageProps") - .getJSONObject("data") - .getJSONArray("data"); - for (int i = 0; i < dataArray.length(); i++) { - JSONObject item = dataArray.getJSONObject(i); - String content = item.get("content") + ""; - String image = item.get("image") + ""; - String[] split = content.split("\\n"); - String title = split.length > 0 ? split[0].replaceAll("]+>", "") : "无题,李商隐"; - String url = Jsoup.parse(content).select("a").attr("href"); - String time = item.get("time") + ""; - JSONObject v = new JSONObject(); - v.put("vod_id", url); - v.put("vod_name", title); - v.put("vod_pic", image); - v.put("vod_remarks", time); - videoArray.put(v); - } - - JSONObject result = new JSONObject(); - result.put("list", videoArray); - return result.toString(); - } catch (Exception e) { - e.printStackTrace(); + public String searchContent(String key, boolean quick) throws Exception { + String html = OkHttp.string(URL, getHeader()); + String data = Jsoup.parse(html).select("script[id=__NEXT_DATA__]").get(0).data(); + String buildId = new JSONObject(data).getString("buildId"); + String url = URL + "_next/data/" + buildId + "/search.json?keyword=" + URLEncoder.encode(key) + "&pan=aliyundrive"; + String result = OkHttp.string(url, getSearchHeader()); + JSONArray array = new JSONObject(result).getJSONObject("pageProps").getJSONObject("data").getJSONArray("data"); + List list = new ArrayList<>(); + for (int i = 0; i < array.length(); i++) { + JSONObject item = array.getJSONObject(i); + String content = item.optString("content"); + String[] split = content.split("\\n"); + if (split.length == 0) continue; + String vodId = Jsoup.parse(content).select("a").attr("href"); + String name = split[0].replaceAll("]+>", ""); + String remark = item.optString("time"); + String pic = item.optString("image"); + list.add(new Vod(vodId, name, pic, remark)); } - return ""; + return Result.string(list); } } diff --git a/app/src/main/java/com/github/catvod/spider/Paper.java b/app/src/main/java/com/github/catvod/spider/Paper.java deleted file mode 100644 index 95523dfd..00000000 --- a/app/src/main/java/com/github/catvod/spider/Paper.java +++ /dev/null @@ -1,102 +0,0 @@ -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.net.OkHttp; -import com.github.catvod.utils.Utils; - -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 Ali { - - 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", Utils.CHROME); - return headers; - } - - @Override - public void init(Context context, String extend) { - super.init(context, extend); - types = Arrays.asList("hyds", "rhds", "omds", "qtds", "hydy", "rhdy", "omdy", "qtdy", "hydm", "rhdm", "omdm", "jlp", "zyp", "jypx", "qtsp"); - } - - @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 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); - } -} diff --git a/jar/custom_spider.jar b/jar/custom_spider.jar index 6aedbebf..d85f3610 100644 Binary files a/jar/custom_spider.jar and b/jar/custom_spider.jar differ diff --git a/jar/custom_spider.jar.md5 b/jar/custom_spider.jar.md5 index e1f0e56a..e452bb05 100644 --- a/jar/custom_spider.jar.md5 +++ b/jar/custom_spider.jar.md5 @@ -1 +1 @@ -a50f5026c571ca789721f21e88056bcf +dadcea0e365a64c6cd3c48b7dd948772