add - static

This commit is contained in:
yangqiang3504
2022-09-05 09:50:38 +08:00
parent 88d1cda67b
commit 90eb458ede
4 changed files with 12 additions and 384 deletions
@@ -1,377 +0,0 @@
package com.github.catvod.spider;
import android.os.Build;
import android.text.TextUtils;
import com.github.catvod.crawler.Spider;
import com.github.catvod.crawler.SpiderDebug;
import com.github.catvod.utils.Misc;
import com.github.catvod.utils.okhttp.OkHttpUtil;
import org.json.JSONArray;
import org.json.JSONObject;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Set;
/**
* Author: @SDL
*/
public class Kunyu77 extends Spider {
private static final String siteUrl = "http://api.kunyu77.com";
private String uAgent = "Dalvik/2.1.0 (Linux; U; Android " + Build.VERSION.RELEASE + "; " + Build.MODEL + " Build/" + Build.ID + ")";
private HashMap<String, String> getHeaders(String url) {
HashMap<String, String> headers = new HashMap<>();
headers.put("user-agent", uAgent);
String t = String.valueOf(System.currentTimeMillis()/ 1000) ;
String zuhe=url+t+"XSpeUFjJ";
String TK=Misc.MD5(zuhe, Misc.CharsetUTF8);
headers.put("TK",TK);
headers.put("t",t);
return headers;
}
@Override
public String homeContent(boolean filter) {
try {
String url = siteUrl + "/api.php/provide/filter";
String content = OkHttpUtil.string(url, getHeaders(url));
JSONObject jsonObject = new JSONObject(decryptResponse(content)).getJSONObject("data");
Iterator<String> keys = jsonObject.keys();
JSONArray classes = new JSONArray();
JSONObject filterConfig = new JSONObject();
JSONArray extendsAll = null;
while (keys.hasNext()) {
String typeId = keys.next();
String typeName = jsonObject.getJSONArray(typeId).getJSONObject(0).getString("cat");
JSONObject newCls = new JSONObject();
newCls.put("type_id", typeId);
newCls.put("type_name", typeName);
classes.put(newCls);
try {
if (extendsAll == null) {
String filterUrl = siteUrl + "/api.php/provide/searchFilter?type_id=0&pagenum=1&pagesize=1";
String filterContent = OkHttpUtil.string(filterUrl, getHeaders(filterUrl));
JSONObject filterObj = new JSONObject(filterContent).getJSONObject("data").getJSONObject("conditions");
extendsAll = new JSONArray();
// 年份
JSONObject newTypeExtend = new JSONObject();
newTypeExtend.put("key", "year");
newTypeExtend.put("name", "年份");
JSONArray newTypeExtendKV = new JSONArray();
JSONObject kv = new JSONObject();
kv.put("n", "全部");
kv.put("v", "");
newTypeExtendKV.put(kv);
kv = new JSONObject();
kv.put("n", "2022");
kv.put("v", "2022");
newTypeExtendKV.put(kv);
kv = new JSONObject();
kv.put("n", "2021");
kv.put("v", "2021");
newTypeExtendKV.put(kv);
JSONArray years = filterObj.getJSONArray("y");
for (int j = 0; j < years.length(); j++) {
JSONObject child = years.getJSONObject(j);
kv = new JSONObject();
kv.put("n", child.getString("name"));
kv.put("v", child.getString("value"));
newTypeExtendKV.put(kv);
}
newTypeExtend.put("value", newTypeExtendKV);
extendsAll.put(newTypeExtend);
// 地区
newTypeExtend = new JSONObject();
newTypeExtend.put("key", "area");
newTypeExtend.put("name", "地区");
newTypeExtendKV = new JSONArray();
kv = new JSONObject();
kv.put("n", "全部");
kv.put("v", "");
newTypeExtendKV.put(kv);
JSONArray areas = filterObj.getJSONArray("a");
for (int j = 0; j < areas.length(); j++) {
JSONObject child = areas.getJSONObject(j);
kv = new JSONObject();
kv.put("n", child.getString("name"));
kv.put("v", child.getString("value"));
newTypeExtendKV.put(kv);
}
newTypeExtend.put("value", newTypeExtendKV);
extendsAll.put(newTypeExtend);
// 类型
newTypeExtend = new JSONObject();
newTypeExtend.put("key", "category");
newTypeExtend.put("name", "类型");
newTypeExtendKV = new JSONArray();
kv = new JSONObject();
kv.put("n", "全部");
kv.put("v", "");
newTypeExtendKV.put(kv);
JSONArray scat = filterObj.getJSONArray("scat");
for (int j = 0; j < scat.length(); j++) {
JSONObject child = scat.getJSONObject(j);
kv = new JSONObject();
kv.put("n", child.getString("name"));
kv.put("v", child.getString("value"));
newTypeExtendKV.put(kv);
}
newTypeExtend.put("value", newTypeExtendKV);
extendsAll.put(newTypeExtend);
}
if (extendsAll != null && extendsAll.length() > 0) {
filterConfig.put(typeId, extendsAll);
}
} catch (Exception e) {
SpiderDebug.log(e);
}
}
JSONObject result = new JSONObject();
result.put("class", classes);
if (filter) {
result.put("filters", filterConfig);
}
return result.toString();
} catch (Throwable th) {
}
return "";
}
@Override
public String homeVideoContent() {
try {
JSONArray videos = new JSONArray();
try {
String url = siteUrl + "/api.php/provide/homeBlock?type_id=0";
String content = OkHttpUtil.string(url, getHeaders(url));
JSONObject jsonObject = new JSONObject(decryptResponse(content));
JSONArray jsonArray = jsonObject.getJSONObject("data").getJSONArray("blocks");
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject blockObj = jsonArray.getJSONObject(i);
String blockName = blockObj.getString("block_name");
if (!blockName.startsWith("热播")) {
continue;
}
JSONArray contents = blockObj.getJSONArray("contents");
for (int j = 0; j < contents.length() && j < 3; j++) {
JSONObject vObj = contents.getJSONObject(j);
JSONObject v = new JSONObject();
v.put("vod_id", vObj.getString("id"));
v.put("vod_name", vObj.getString("title"));
v.put("vod_pic", vObj.getString("videoCover"));
v.put("vod_remarks", vObj.getString("msg"));
videos.put(v);
}
}
} catch (Exception e) {
}
JSONObject result = new JSONObject();
result.put("list", videos);
return result.toString();
} catch (Throwable th) {
}
return "";
}
@Override
public String categoryContent(String tid, String pg, boolean filter, HashMap<String, String> extend) {
try {
String url = siteUrl + "/api.php/provide/searchFilter?type_id=" + tid + "&pagenum=" + pg + "&pagesize=24";
Set<String> keys = extend.keySet();
for (String key : keys) {
String val = extend.get(key).trim();
if (val.length() == 0)
continue;
url += "&" + key + "=" + URLEncoder.encode(val);
}
String content = OkHttpUtil.string(url, getHeaders(url));
JSONObject dataObject = new JSONObject(decryptResponse(content)).getJSONObject("data");
JSONArray jsonArray = dataObject.getJSONArray("result");
JSONArray videos = new JSONArray();
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject vObj = jsonArray.getJSONObject(i);
JSONObject v = new JSONObject();
v.put("vod_id", vObj.getString("id"));
v.put("vod_name", vObj.getString("title"));
v.put("vod_pic", vObj.getString("videoCover"));
v.put("vod_remarks", vObj.getString("msg"));
videos.put(v);
}
JSONObject result = new JSONObject();
int limit = 24;
int page = Integer.parseInt(dataObject.getString("page"));
int total = dataObject.getInt("total");
int pageCount = dataObject.getInt("pagesize");
result.put("page", page);
result.put("pagecount", pageCount);
result.put("limit", limit);
result.put("total", total);
result.put("list", videos);
return result.toString();
} catch (Throwable th) {
}
return "";
}
@Override
public String detailContent(List<String> ids) {
try {
String url = siteUrl + "/api.php/provide/videoDetail?ids=" + ids.get(0) + "&version=2.0.4&sj=1661957675";
String urlx="/api.php/provide/videoDetail" + ids.get(0);
String content = OkHttpUtil.string(url, getHeaders(urlx));
JSONObject dataObject = new JSONObject(decryptResponse(content));
JSONObject vObj = dataObject.getJSONObject("data");
JSONObject result = new JSONObject();
JSONArray list = new JSONArray();
JSONObject vodAtom = new JSONObject();
String title = vObj.getString("videoName");
vodAtom.put("vod_id", vObj.getString("id"));
vodAtom.put("vod_name", title);
vodAtom.put("vod_pic", vObj.getString("videoCover"));
vodAtom.put("type_name", vObj.getString("subCategory"));
vodAtom.put("vod_year", vObj.getString("year"));
vodAtom.put("vod_area", vObj.getString("area"));
vodAtom.put("vod_remarks", vObj.getString("msg"));
vodAtom.put("vod_actor", vObj.getString("actor"));
vodAtom.put("vod_director", vObj.getString("director"));
vodAtom.put("vod_content", vObj.getString("brief").trim());
url = siteUrl + "/api.php/provide/videoPlaylist?ids=" + ids.get(0) + "&version=2.0.4&sj=1661957675";
content = OkHttpUtil.string(url, getHeaders(url));
JSONArray episodes = new JSONObject(content).getJSONObject("data").getJSONArray("episodes");
LinkedHashMap<String, ArrayList<String>> playlist = new LinkedHashMap<>();
for (int i = 0; i < episodes.length(); i++) {
JSONArray playurls = episodes.getJSONObject(i).getJSONArray("playurls");
for (int j = 0; j < playurls.length(); j++) {
JSONObject purl = playurls.getJSONObject(j);
String from = purl.getString("playfrom");
ArrayList<String> urls = playlist.get(from);
if (urls == null) {
urls = new ArrayList<>();
playlist.put(from, urls);
}
String name = purl.getString("title").replace(title, "").trim();
if (name.isEmpty()) {
name = (i + 1) + "";
}
String pid = purl.getString("playurl");
urls.add(name + "$" + pid);
}
}
String vod_play_from = TextUtils.join("$$$", playlist.keySet());
StringBuilder sb = new StringBuilder();
Iterator<ArrayList<String>> iter = playlist.values().iterator();
short fromSize = (short) playlist.size();
while (iter.hasNext()) {
fromSize--;
ArrayList<String> urls = iter.next();
sb.append(TextUtils.join("#", urls));
if (fromSize > 0)
sb.append("$$$");
}
vodAtom.put("vod_play_from", vod_play_from);
vodAtom.put("vod_play_url", sb.toString());
list.put(vodAtom);
result.put("list", list);
return result.toString();
} catch (Throwable th) {
}
return "";
}
@Override
public String playerContent(String flag, String id, List<String> vipFlags) {
try {
String videoUrl = id;
try {
String url = siteUrl + "/api.php/provide/parserUrl?url=" + id;
String content = OkHttpUtil.string(url, getHeaders(url));
JSONObject dataObj = new JSONObject(decryptResponse(content)).getJSONObject("data");
JSONObject playHeader = dataObj.optJSONObject("playHeader");
String jxUrl = dataObj.getString("url");
content = OkHttpUtil.string(jxUrl, getHeaders(jxUrl));
JSONObject result = Misc.jsonParse(jxUrl, content);
if (result != null) {
result.put("parse", 0);
result.put("playUrl", "");
if (playHeader != null) {
JSONObject header = result.getJSONObject("header");
Iterator<String> iter = playHeader.keys();
while (iter.hasNext()) {
String key = iter.next();
header.put(key, " " + playHeader.getString(key));
}
result.put("header", header.toString());
}
return result.toString();
}
} catch (Throwable th) {
}
if (Misc.isVip(videoUrl)) {
JSONObject result = new JSONObject();
result.put("parse", 1);
result.put("jx", "1");
result.put("url", videoUrl);
return result.toString();
}
JSONObject result = new JSONObject();
result.put("parse", 0);
result.put("playUrl", "");
result.put("url", id);
return result.toString();
} catch (Throwable th) {
}
return "";
}
@Override
public String searchContent(String key, boolean quick) {
try {
String url = siteUrl + "/api.php/provide/searchVideo?searchName=" + URLEncoder.encode(key);
String content = OkHttpUtil.string(url, getHeaders(url));
JSONObject dataObject = new JSONObject(decryptResponse(content));
JSONArray jsonArray = dataObject.getJSONArray("data");
JSONArray videos = new JSONArray();
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject vObj = jsonArray.getJSONObject(i);
JSONObject v = new JSONObject();
String title = vObj.getString("videoName");
if (!title.contains(key))
continue;
v.put("vod_id", vObj.getString("id"));
v.put("vod_name", title);
v.put("vod_pic", vObj.getString("videoCover"));
v.put("vod_remarks", vObj.getString("msg"));
videos.put(v);
}
JSONObject result = new JSONObject();
result.put("list", videos);
return result.toString();
} catch (Throwable th) {
}
return "";
}
protected String decryptResponse(String src) {
return src;
}
}
@@ -49,13 +49,13 @@ public class PushAgent extends Spider {
fetchRule(false,0);
}
public void getToken(String token){
public static void getToken(String token){
if (token.startsWith("http")) {
Token = OkHttpUtil.string(token, null);
}else Token = token;
}
public JSONObject fetchRule(boolean flag,int t) {
public static JSONObject fetchRule(boolean flag,int t) {
try {
if (flag || siteRule == null) {
String json = OkHttpUtil.string(jsonUrl+"?t="+Time(), null);
@@ -80,7 +80,7 @@ public class PushAgent extends Spider {
return siteRule;
}
public String getRuleVal(JSONObject o,String key, String defaultVal) {
public static String getRuleVal(JSONObject o,String key, String defaultVal) {
String v = o.optString(key);
if (v.isEmpty() || v.equals(""))
return defaultVal;
@@ -322,7 +322,7 @@ public class PushAgent extends Spider {
}
}
public void listFiles(Map<String, String> map, String str, String str2, String str3) {
public static void listFiles(Map<String, String> map, String str, String str2, String str3) {
String str4;
try {
String str5 = "https://api.aliyundrive.com/adrive/v3/file/list";
@@ -379,7 +379,7 @@ public class PushAgent extends Spider {
}
}
public String getAliContent(List<String> list,JSONObject jSONObject6) {
public static String getAliContent(List<String> list,JSONObject jSONObject6) {
String str;
try {
String url = list.get(0).trim();
@@ -482,6 +482,10 @@ public class PushAgent extends Spider {
@Override
public String detailContent(List<String> list) {
return getDetail(list);
}
public static String getDetail(List<String> list) {
try {
String url = list.get(0).trim();
String[] idInfo = url.split("\\$\\$\\$");
@@ -22,15 +22,16 @@ public class PushAgentQQ extends Spider {
public void init(Context context, String extend) {
super.init(context, extend);
pushAgent = new PushAgent();
pushAgent.init(context, extend);
if (extend != null) {
if (!extend.startsWith("http")) {
String[] arr = extend.split(";");
this.ext = arr[1];
pushAgent.jsonUrl = arr[1];
}else {
this.ext = extend;
}
}
pushAgent.init(context, extend);
}
@Override
@@ -23,7 +23,7 @@ import okhttp3.Call;
import org.jsoup.Jsoup;
public class XBiubiu extends Spider {
private PushAgent pushAgent= null;
private static PushAgent pushAgent= null;
@Override
public void init(Context context) {
super.init(context);