Build
This commit is contained in:
parent
5bce711fa7
commit
59fe1d09da
|
|
@ -1,89 +1,67 @@
|
||||||
package com.github.catvod.spider;
|
package com.github.catvod.spider;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import com.github.catvod.crawler.Spider;
|
|
||||||
import okhttp3.OkHttpClient;
|
import com.github.catvod.bean.Result;
|
||||||
import okhttp3.Request;
|
import com.github.catvod.bean.Vod;
|
||||||
import okhttp3.Response;
|
import com.github.catvod.net.OkHttp;
|
||||||
|
import com.github.catvod.utils.Utils;
|
||||||
|
|
||||||
import org.json.JSONArray;
|
import org.json.JSONArray;
|
||||||
import org.json.JSONObject;
|
import org.json.JSONObject;
|
||||||
import org.jsoup.Jsoup;
|
import org.jsoup.Jsoup;
|
||||||
import org.jsoup.nodes.Document;
|
|
||||||
|
|
||||||
import java.net.URLEncoder;
|
import java.net.URLEncoder;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author zhixc
|
* @author zhixc
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
public class PanSearch extends Ali {
|
public class PanSearch extends Ali {
|
||||||
|
|
||||||
|
private final String URL = "https://www.pansearch.me/";
|
||||||
|
|
||||||
|
private Map<String, String> getHeader() {
|
||||||
|
Map<String, String> header = new HashMap<>();
|
||||||
|
header.put("User-Agent", Utils.CHROME);
|
||||||
|
return header;
|
||||||
|
}
|
||||||
|
|
||||||
|
private Map<String, String> getSearchHeader() {
|
||||||
|
Map<String, String> header = getHeader();
|
||||||
|
header.put("x-nextjs-data", "1");
|
||||||
|
header.put("referer", URL);
|
||||||
|
return header;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void init(Context context, String extend) {
|
public void init(Context context, String extend) {
|
||||||
super.init(context, extend);
|
super.init(context, extend);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String searchContent(String key, boolean quick) {
|
public String searchContent(String key, boolean quick) throws Exception {
|
||||||
try {
|
String html = OkHttp.string(URL, getHeader());
|
||||||
JSONArray videoArray = new JSONArray();
|
String data = Jsoup.parse(html).select("script[id=__NEXT_DATA__]").get(0).data();
|
||||||
|
String buildId = new JSONObject(data).getString("buildId");
|
||||||
Request request = new Request.Builder()
|
String url = URL + "_next/data/" + buildId + "/search.json?keyword=" + URLEncoder.encode(key) + "&pan=aliyundrive";
|
||||||
.get()
|
String result = OkHttp.string(url, getSearchHeader());
|
||||||
.url("https://www.pansearch.me")
|
JSONArray array = new JSONObject(result).getJSONObject("pageProps").getJSONObject("data").getJSONArray("data");
|
||||||
.addHeader("User-Agent", "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36")
|
List<Vod> list = new ArrayList<>();
|
||||||
.build();
|
for (int i = 0; i < array.length(); i++) {
|
||||||
OkHttpClient okHttpClient = new OkHttpClient();
|
JSONObject item = array.getJSONObject(i);
|
||||||
Response response = okHttpClient.newCall(request).execute();
|
String content = item.optString("content");
|
||||||
String homePageStr = response.body().string();
|
String[] split = content.split("\\n");
|
||||||
response.close();
|
if (split.length == 0) continue;
|
||||||
Document document = Jsoup.parse(homePageStr);
|
String vodId = Jsoup.parse(content).select("a").attr("href");
|
||||||
String html = document.select("script[type=application/json]").html();
|
String name = split[0].replaceAll("</?[^>]+>", "");
|
||||||
String html2 = document.select("script").get(0).html();
|
String remark = item.optString("time");
|
||||||
String html3 = document.select("script").get(0).data();
|
String pic = item.optString("image");
|
||||||
String html4 = document.select("script[id=__NEXT_DATA__]").get(0).data();
|
list.add(new Vod(vodId, name, pic, remark));
|
||||||
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();
|
|
||||||
}
|
}
|
||||||
return "";
|
return Result.string(list);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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<String> types;
|
|
||||||
|
|
||||||
private HashMap<String, String> getHeaders() {
|
|
||||||
HashMap<String, String> 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<String, List<Filter>> filters = new LinkedHashMap<>();
|
|
||||||
List<Class> classes = new ArrayList<>();
|
|
||||||
for (Element tr : trs) {
|
|
||||||
List<Filter.Value> 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<Vod> list = new ArrayList<>();
|
|
||||||
JSONObject homeData = new JSONObject(OkHttp.string(url + "home.json", getHeaders()));
|
|
||||||
List<Data> 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<String, String> extend) {
|
|
||||||
String type = extend.containsKey("type") ? extend.get("type") : tid;
|
|
||||||
List<Vod> list = new ArrayList<>();
|
|
||||||
Map<String, String> 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<Vod> list = new ArrayList<>();
|
|
||||||
Map<String, String> 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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Binary file not shown.
|
|
@ -1 +1 @@
|
||||||
a50f5026c571ca789721f21e88056bcf
|
dadcea0e365a64c6cd3c48b7dd948772
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue