Merge branch 'main' of github.com:nbwzlyd/CatVodSpider
This commit is contained in:
commit
543ed2d73c
|
|
@ -31,7 +31,13 @@ import org.json.JSONArray;
|
|||
import org.json.JSONObject;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.util.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.Executors;
|
||||
import java.util.concurrent.ScheduledExecutorService;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
|
@ -140,6 +146,8 @@ public class API {
|
|||
private boolean isManyRequest(String result) {
|
||||
if (!result.contains("Too Many Requests")) return false;
|
||||
Init.show("洗洗睡吧,Too Many Requests。");
|
||||
oauth.clean().save();
|
||||
user.clean().save();
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
@ -350,7 +358,6 @@ public class API {
|
|||
SpiderDebug.log(json);
|
||||
return new JSONObject(json).getString("url");
|
||||
} catch (Exception e) {
|
||||
Init.execute(this::deleteAll);
|
||||
e.printStackTrace();
|
||||
return "";
|
||||
} finally {
|
||||
|
|
@ -372,7 +379,6 @@ public class API {
|
|||
JSONArray taskList = new JSONObject(json).getJSONObject("video_preview_play_info").getJSONArray("live_transcoding_task_list");
|
||||
return getPreviewQuality(taskList, flag);
|
||||
} catch (Exception e) {
|
||||
Init.execute(this::deleteAll);
|
||||
e.printStackTrace();
|
||||
return "";
|
||||
} finally {
|
||||
|
|
@ -429,8 +435,13 @@ public class API {
|
|||
}
|
||||
|
||||
private void getQRCode() {
|
||||
Data data = Data.objectFrom(OkHttp.string("https://passport.aliyundrive.com/newlogin/qrcode/generate.do?appName=aliyun_drive&fromSite=52&appName=aliyun_drive&appEntrance=web&isMobile=false&lang=zh_CN&returnUrl=&bizParams=&_bx-v=2.2.3")).getContent().getData();
|
||||
Init.run(() -> showQRCode(data));
|
||||
if (Utils.isMobile()) {
|
||||
user.setRefreshToken(refreshToken);
|
||||
refreshAccessToken();
|
||||
} else {
|
||||
Data data = Data.objectFrom(OkHttp.string("https://passport.aliyundrive.com/newlogin/qrcode/generate.do?appName=aliyun_drive&fromSite=52&appName=aliyun_drive&appEntrance=web&isMobile=false&lang=zh_CN&returnUrl=&bizParams=&_bx-v=2.2.3")).getContent().getData();
|
||||
Init.run(() -> showQRCode(data));
|
||||
}
|
||||
}
|
||||
|
||||
private void showQRCode(Data data) {
|
||||
|
|
|
|||
|
|
@ -44,6 +44,10 @@ public class User {
|
|||
return TextUtils.isEmpty(refreshToken) ? "" : refreshToken;
|
||||
}
|
||||
|
||||
public void setRefreshToken(String refreshToken) {
|
||||
this.refreshToken = refreshToken;
|
||||
}
|
||||
|
||||
public String getAuthorization() {
|
||||
return getTokenType() + " " + getAccessToken();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,67 @@
|
|||
package com.github.catvod.spider;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
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 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<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
|
||||
public void init(Context context, String extend) {
|
||||
super.init(context, extend);
|
||||
}
|
||||
|
||||
@Override
|
||||
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<Vod> 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 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);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,5 +1,6 @@
|
|||
package com.github.catvod.utils;
|
||||
|
||||
import android.content.pm.PackageManager;
|
||||
import android.net.Uri;
|
||||
import android.os.Build;
|
||||
import android.util.DisplayMetrics;
|
||||
|
|
@ -33,6 +34,10 @@ public class Utils {
|
|||
return Sniffer.RULE.matcher(url).find();
|
||||
}
|
||||
|
||||
public static boolean isMobile() {
|
||||
return Init.context().getPackageManager().hasSystemFeature(PackageManager.FEATURE_TELEPHONY);
|
||||
}
|
||||
|
||||
public static boolean isSub(String ext) {
|
||||
return ext.equals("srt") || ext.equals("ass") || ext.equals("ssa");
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"spider": "https://raw.githubusercontent.com/FongMi/CatVodSpider/main/jar/custom_spider.jar;md5;9eb909e7a180e28b617c5fd15bda5b22",
|
||||
"spider": "https://raw.githubusercontent.com/FongMi/CatVodSpider/main/jar/custom_spider.jar;md5;dadcea0e365a64c6cd3c48b7dd948772",
|
||||
"wallpaper": "https://gao.chuqiuyu.tk",
|
||||
"sites": [
|
||||
{
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"spider": "https://raw.githubusercontent.com/FongMi/CatVodSpider/main/jar/custom_spider.jar;md5;9eb909e7a180e28b617c5fd15bda5b22",
|
||||
"spider": "https://raw.githubusercontent.com/FongMi/CatVodSpider/main/jar/custom_spider.jar;md5;dadcea0e365a64c6cd3c48b7dd948772",
|
||||
"wallpaper": "http://饭太硬.ga/深色壁纸/api.php",
|
||||
"sites": [
|
||||
{
|
||||
|
|
@ -78,15 +78,6 @@
|
|||
"filterable": 1,
|
||||
"changeable": 1
|
||||
},
|
||||
{
|
||||
"key": "紙條",
|
||||
"name": "紙條",
|
||||
"type": 3,
|
||||
"api": "csp_Paper",
|
||||
"searchable": 1,
|
||||
"filterable": 1,
|
||||
"changeable": 0
|
||||
},
|
||||
{
|
||||
"key": "七夜",
|
||||
"name": "七夜",
|
||||
|
|
@ -114,6 +105,15 @@
|
|||
"filterable": 0,
|
||||
"changeable": 0
|
||||
},
|
||||
{
|
||||
"key": "盤搜索",
|
||||
"name": "盤搜索",
|
||||
"type": 3,
|
||||
"api": "csp_PanSearch",
|
||||
"searchable": 1,
|
||||
"filterable": 0,
|
||||
"changeable": 0
|
||||
},
|
||||
{
|
||||
"key": "UP雲搜",
|
||||
"name": "UP雲搜",
|
||||
|
|
|
|||
Loading…
Reference in New Issue