diff --git a/app/src/main/java/com/github/catvod/ali/API.java b/app/src/main/java/com/github/catvod/ali/API.java index 387e80ef..6bca8131 100644 --- a/app/src/main/java/com/github/catvod/ali/API.java +++ b/app/src/main/java/com/github/catvod/ali/API.java @@ -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) { diff --git a/app/src/main/java/com/github/catvod/bean/ali/User.java b/app/src/main/java/com/github/catvod/bean/ali/User.java index 3dfd9250..d274dd3c 100644 --- a/app/src/main/java/com/github/catvod/bean/ali/User.java +++ b/app/src/main/java/com/github/catvod/bean/ali/User.java @@ -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(); } diff --git a/app/src/main/java/com/github/catvod/spider/PanSearch.java b/app/src/main/java/com/github/catvod/spider/PanSearch.java new file mode 100644 index 00000000..b4a6a5f2 --- /dev/null +++ b/app/src/main/java/com/github/catvod/spider/PanSearch.java @@ -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 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) 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 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/app/src/main/java/com/github/catvod/utils/Utils.java b/app/src/main/java/com/github/catvod/utils/Utils.java index 157d3a34..852ea032 100644 --- a/app/src/main/java/com/github/catvod/utils/Utils.java +++ b/app/src/main/java/com/github/catvod/utils/Utils.java @@ -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"); } diff --git a/json/adult.json b/json/adult.json index 6fceb7cd..2f998f7d 100644 --- a/json/adult.json +++ b/json/adult.json @@ -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": [ { diff --git a/json/config.json b/json/config.json index 17ddafec..2b8e06d4 100644 --- a/json/config.json +++ b/json/config.json @@ -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雲搜",