diff --git a/app/src/main/java/com/github/catvod/spider/AppYsV2.java b/app/src/main/java/com/github/catvod/spider/AppYsV2.java
index 95ccc337..1ccf12f4 100644
--- a/app/src/main/java/com/github/catvod/spider/AppYsV2.java
+++ b/app/src/main/java/com/github/catvod/spider/AppYsV2.java
@@ -2,10 +2,12 @@ package com.github.catvod.spider;
import android.content.Context;
import android.text.TextUtils;
+
import com.github.catvod.crawler.Spider;
import com.github.catvod.crawler.SpiderDebug;
import com.github.catvod.net.OkHttp;
import com.github.catvod.utils.Utils;
+
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
@@ -17,7 +19,6 @@ import java.util.regex.Pattern;
/**
* M浏览器中的App影视
- *
* Author: 群友 不负此生
*/
public class AppYsV2 extends Spider {
@@ -27,140 +28,208 @@ public class AppYsV2 extends Spider {
super.init(context, extend);
try {
extInfos = extend.split("###");
- } catch (Throwable th) {
+ } catch (Exception ignored) {
}
}
@Override
- public String homeContent(boolean filter) {
- try {
- String url = getCateUrl(getApiUrl());
- JSONArray jsonArray = null;
- if (!url.isEmpty()) {
- SpiderDebug.log(url);
- String json = desc(OkHttp.string(url, getHeaders(url)), (byte) 0);
- JSONObject obj = new JSONObject(json);
- if (obj.has("list") && obj.get("list") instanceof JSONArray) {
- jsonArray = obj.getJSONArray("list");
- } else if (obj.has("data") && obj.get("data") instanceof JSONObject && obj.getJSONObject("data").has("list") && obj.getJSONObject("data").get("list") instanceof JSONArray) {
- jsonArray = obj.getJSONObject("data").getJSONArray("list");
- } else if (obj.has("data") && obj.get("data") instanceof JSONArray) {
- jsonArray = obj.getJSONArray("data");
- }
- } else { // 通过filter列表读分类
- String filterStr = getFilterTypes(url, null);
- String[] classes = filterStr.split("\n")[0].split("\\+");
- jsonArray = new JSONArray();
- for (int i = 1; i < classes.length; i++) {
- String[] kv = classes[i].trim().split("=");
- if (kv.length < 2)
- continue;
- JSONObject newCls = new JSONObject();
- newCls.put("type_name", kv[0].trim());
- newCls.put("type_id", kv[1].trim());
- jsonArray.put(newCls);
- }
+ public String homeContent(boolean filter) throws Exception {
+ String url = getCateUrl(getApiUrl());
+ JSONArray jsonArray = null;
+ if (!url.isEmpty()) {
+ SpiderDebug.log(url);
+ String json = OkHttp.string(url, getHeaders(url));
+ JSONObject obj = new JSONObject(json);
+ if (obj.has("list") && obj.get("list") instanceof JSONArray) {
+ jsonArray = obj.getJSONArray("list");
+ } else if (obj.has("data") && obj.get("data") instanceof JSONObject && obj.getJSONObject("data").has("list") && obj.getJSONObject("data").get("list") instanceof JSONArray) {
+ jsonArray = obj.getJSONObject("data").getJSONArray("list");
+ } else if (obj.has("data") && obj.get("data") instanceof JSONArray) {
+ jsonArray = obj.getJSONArray("data");
}
- JSONObject result = new JSONObject();
- JSONArray classes = new JSONArray();
- if (jsonArray != null) {
- for (int i = 0; i < jsonArray.length(); i++) {
- JSONObject jObj = jsonArray.getJSONObject(i);
- String typeName = jObj.getString("type_name");
- if (isBan(typeName))
- continue;
- String typeId = jObj.getString("type_id");
- JSONObject newCls = new JSONObject();
- newCls.put("type_id", typeId);
- newCls.put("type_name", typeName);
- JSONObject typeExtend = jObj.optJSONObject("type_extend");
- if (filter) {
- String filterStr = getFilterTypes(url, typeExtend);
- String[] filters = filterStr.split("\n");
- JSONArray filterArr = new JSONArray();
- for (int k = url.isEmpty() ? 1 : 0; k < filters.length; k++) {
- String l = filters[k].trim();
- if (l.isEmpty())
- continue;
- String[] oneLine = l.split("\\+");
- String type = oneLine[0].trim();
- String typeN = type;
- if (type.contains("筛选")) {
- type = type.replace("筛选", "");
- switch (type) {
- case "class":
- typeN = "类型";
- break;
- case "area":
- typeN = "地区";
- break;
- case "lang":
- typeN = "语言";
- break;
- case "year":
- typeN = "年份";
- break;
- }
+ } else { // 通过filter列表读分类
+ String filterStr = getFilterTypes(url, null);
+ String[] classes = filterStr.split("\n")[0].split("\\+");
+ jsonArray = new JSONArray();
+ for (int i = 1; i < classes.length; i++) {
+ String[] kv = classes[i].trim().split("=");
+ if (kv.length < 2) continue;
+ JSONObject newCls = new JSONObject();
+ newCls.put("type_name", kv[0].trim());
+ newCls.put("type_id", kv[1].trim());
+ jsonArray.put(newCls);
+ }
+ }
+ JSONObject result = new JSONObject();
+ JSONArray classes = new JSONArray();
+ if (jsonArray != null) {
+ for (int i = 0; i < jsonArray.length(); i++) {
+ JSONObject jObj = jsonArray.getJSONObject(i);
+ String typeName = jObj.getString("type_name");
+ String typeId = jObj.getString("type_id");
+ JSONObject newCls = new JSONObject();
+ newCls.put("type_id", typeId);
+ newCls.put("type_name", typeName);
+ JSONObject typeExtend = jObj.optJSONObject("type_extend");
+ if (filter) {
+ String filterStr = getFilterTypes(url, typeExtend);
+ String[] filters = filterStr.split("\n");
+ JSONArray filterArr = new JSONArray();
+ for (int k = url.isEmpty() ? 1 : 0; k < filters.length; k++) {
+ String l = filters[k].trim();
+ if (l.isEmpty()) continue;
+ String[] oneLine = l.split("\\+");
+ String type = oneLine[0].trim();
+ String typeN = type;
+ if (type.contains("筛选")) {
+ type = type.replace("筛选", "");
+ switch (type) {
+ case "class":
+ typeN = "类型";
+ break;
+ case "area":
+ typeN = "地区";
+ break;
+ case "lang":
+ typeN = "语言";
+ break;
+ case "year":
+ typeN = "年份";
+ break;
}
- JSONObject jOne = new JSONObject();
- jOne.put("key", type);
- jOne.put("name", typeN);
- JSONArray valueArr = new JSONArray();
- for (int j = 1; j < oneLine.length; j++) {
- JSONObject kvo = new JSONObject();
- String kv = oneLine[j].trim();
- int sp = kv.indexOf("=");
- if (sp == -1) {
- if (isBan(kv))
- continue;
- kvo.put("n", kv);
- kvo.put("v", kv);
- } else {
- String n = kv.substring(0, sp);
- if (isBan(n))
- continue;
- kvo.put("n", n.trim());
- kvo.put("v", kv.substring(sp + 1).trim());
- }
- valueArr.put(kvo);
+ }
+ JSONObject jOne = new JSONObject();
+ jOne.put("key", type);
+ jOne.put("name", typeN);
+ JSONArray valueArr = new JSONArray();
+ for (int j = 1; j < oneLine.length; j++) {
+ JSONObject kvo = new JSONObject();
+ String kv = oneLine[j].trim();
+ int sp = kv.indexOf("=");
+ if (sp == -1) {
+ kvo.put("n", kv);
+ kvo.put("v", kv);
+ } else {
+ String n = kv.substring(0, sp);
+ kvo.put("n", n.trim());
+ kvo.put("v", kv.substring(sp + 1).trim());
}
- jOne.put("value", valueArr);
- filterArr.put(jOne);
+ valueArr.put(kvo);
}
- if (!result.has("filters")) {
- result.put("filters", new JSONObject());
- }
- result.getJSONObject("filters").put(typeId, filterArr);
+ jOne.put("value", valueArr);
+ filterArr.put(jOne);
}
- classes.put(newCls);
+ if (!result.has("filters")) {
+ result.put("filters", new JSONObject());
+ }
+ result.getJSONObject("filters").put(typeId, filterArr);
+ }
+ classes.put(newCls);
+ }
+ }
+ result.put("class", classes);
+ return result.toString();
+ }
+
+ @Override
+ public String homeVideoContent() throws Exception {
+ String apiUrl = getApiUrl();
+ String url = getRecommendUrl(apiUrl);
+ boolean isTV = false;
+ if (url.isEmpty()) {
+ url = getCateFilterUrlPrefix(apiUrl) + "movie&page=1&area=&type=&start=";
+ isTV = true;
+ }
+ SpiderDebug.log(url);
+ String json = OkHttp.string(url, getHeaders(url));
+ JSONObject obj = new JSONObject(json);
+ JSONArray videos = new JSONArray();
+ if (isTV) {
+ JSONArray jsonArray = obj.getJSONArray("data");
+ for (int i = 0; i < jsonArray.length(); i++) {
+ JSONObject vObj = jsonArray.getJSONObject(i);
+ JSONObject v = new JSONObject();
+ v.put("vod_id", vObj.getString("nextlink"));
+ v.put("vod_name", vObj.getString("title"));
+ v.put("vod_pic", vObj.getString("pic"));
+ v.put("vod_remarks", vObj.getString("state"));
+ videos.put(v);
+ }
+ } else {
+ ArrayList arrays = new ArrayList<>();
+ findJsonArray(obj, "vlist", arrays);
+ if (arrays.isEmpty()) {
+ findJsonArray(obj, "vod_list", arrays);
+ }
+ List ids = new ArrayList<>();
+ for (JSONArray jsonArray : arrays) {
+ for (int i = 0; i < jsonArray.length(); i++) {
+ JSONObject vObj = jsonArray.getJSONObject(i);
+ String vid = vObj.getString("vod_id");
+ if (ids.contains(vid)) continue;
+ ids.add(vid);
+ JSONObject v = new JSONObject();
+ v.put("vod_id", vid);
+ v.put("vod_name", vObj.getString("vod_name"));
+ v.put("vod_pic", vObj.getString("vod_pic"));
+ v.put("vod_remarks", vObj.getString("vod_remarks"));
+ videos.put(v);
}
}
- result.put("class", classes);
- return result.toString();
+ }
+ JSONObject result = new JSONObject();
+ result.put("list", videos);
+ return result.toString();
+ }
+
+ @Override
+ public String categoryContent(String tid, String pg, boolean filter, HashMap extend) throws Exception {
+ String apiUrl = getApiUrl();
+ String url = getCateFilterUrlPrefix(apiUrl) + tid + getCateFilterUrlSuffix(apiUrl);
+ url = url.replace("#PN#", pg);
+ url = url.replace("筛选class", (extend != null && extend.containsKey("class")) ? extend.get("class") : "");
+ url = url.replace("筛选area", (extend != null && extend.containsKey("area")) ? extend.get("area") : "");
+ url = url.replace("筛选lang", (extend != null && extend.containsKey("lang")) ? extend.get("lang") : "");
+ url = url.replace("筛选year", (extend != null && extend.containsKey("year")) ? extend.get("year") : "");
+ url = url.replace("排序", (extend != null && extend.containsKey("排序")) ? extend.get("排序") : "");
+ SpiderDebug.log(url);
+ String json = OkHttp.string(url, getHeaders(url));
+ JSONObject obj = new JSONObject(json);
+ int totalPg = Integer.MAX_VALUE;
+ try {
+ if (obj.has("totalpage") && obj.get("totalpage") instanceof Integer) {
+ totalPg = obj.getInt("totalpage");
+ } else if (obj.has("pagecount") && obj.get("pagecount") instanceof Integer) {
+ totalPg = obj.getInt("pagecount");
+ } else if (obj.has("data") && obj.get("data") instanceof JSONObject && (obj.getJSONObject("data").has("total") && obj.getJSONObject("data").get("total") instanceof Integer && obj.getJSONObject("data").has("limit") && obj.getJSONObject("data").get("limit") instanceof Integer)) {
+ int limit = obj.getJSONObject("data").getInt("limit");
+ int total = obj.getJSONObject("data").getInt("total");
+ totalPg = total % limit == 0 ? (total / limit) : (total / limit + 1);
+ }
} catch (Exception e) {
SpiderDebug.log(e);
}
- return "";
- }
- @Override
- public String homeVideoContent() {
- try {
- String apiUrl = getApiUrl();
- String url = getRecommendUrl(apiUrl);
- boolean isTV = false;
- if (url.isEmpty()) {
- url = getCateFilterUrlPrefix(apiUrl) + "movie&page=1&area=&type=&start=";
- isTV = true;
- }
- SpiderDebug.log(url);
- String json = desc(OkHttp.string(url, getHeaders(url)), (byte) 1);
- JSONObject obj = new JSONObject(json);
- JSONArray videos = new JSONArray();
- if (isTV) {
- JSONArray jsonArray = obj.getJSONArray("data");
- for (int i = 0; i < jsonArray.length(); i++) {
- JSONObject vObj = jsonArray.getJSONObject(i);
+ JSONArray jsonArray = null;
+ JSONArray videos = new JSONArray();
+ if (obj.has("list") && obj.get("list") instanceof JSONArray) {
+ jsonArray = obj.getJSONArray("list");
+ } else if (obj.has("data") && obj.get("data") instanceof JSONObject && obj.getJSONObject("data").has("list") && obj.getJSONObject("data").get("list") instanceof JSONArray) {
+ jsonArray = obj.getJSONObject("data").getJSONArray("list");
+ } else if (obj.has("data") && obj.get("data") instanceof JSONArray) {
+ jsonArray = obj.getJSONArray("data");
+ }
+ if (jsonArray != null) {
+ for (int i = 0; i < jsonArray.length(); i++) {
+ JSONObject vObj = jsonArray.getJSONObject(i);
+ if (vObj.has("vod_id")) {
+ JSONObject v = new JSONObject();
+ v.put("vod_id", vObj.getString("vod_id"));
+ v.put("vod_name", vObj.getString("vod_name"));
+ v.put("vod_pic", vObj.getString("vod_pic"));
+ v.put("vod_remarks", vObj.getString("vod_remarks"));
+ videos.put(v);
+ } else {
JSONObject v = new JSONObject();
v.put("vod_id", vObj.getString("nextlink"));
v.put("vod_name", vObj.getString("title"));
@@ -168,211 +237,101 @@ public class AppYsV2 extends Spider {
v.put("vod_remarks", vObj.getString("state"));
videos.put(v);
}
- } else {
- ArrayList arrays = new ArrayList<>();
- findJsonArray(obj, "vlist", arrays);
- if (arrays.isEmpty()) {
- findJsonArray(obj, "vod_list", arrays);
- }
- List ids = new ArrayList<>();
- for (JSONArray jsonArray : arrays) {
- for (int i = 0; i < jsonArray.length(); i++) {
- JSONObject vObj = jsonArray.getJSONObject(i);
- String vid = vObj.getString("vod_id");
- if (ids.contains(vid))
- continue;
- ids.add(vid);
- JSONObject v = new JSONObject();
- v.put("vod_id", vid);
- v.put("vod_name", vObj.getString("vod_name"));
- v.put("vod_pic", vObj.getString("vod_pic"));
- v.put("vod_remarks", vObj.getString("vod_remarks"));
- videos.put(v);
- }
- }
}
- JSONObject result = new JSONObject();
- result.put("list", videos);
- return result.toString();
- } catch (Exception e) {
- SpiderDebug.log(e);
}
- return "";
+ JSONObject result = new JSONObject();
+ result.put("page", pg);
+ result.put("pagecount", totalPg);
+ result.put("limit", 90);
+ result.put("total", Integer.MAX_VALUE);
+ result.put("list", videos);
+ return result.toString();
}
@Override
- public String categoryContent(String tid, String pg, boolean filter, HashMap extend) {
- try {
- String apiUrl = getApiUrl();
- String url = getCateFilterUrlPrefix(apiUrl) + tid + getCateFilterUrlSuffix(apiUrl);
- url = url.replace("#PN#", pg);
- url = url.replace("筛选class", (extend != null && extend.containsKey("class")) ? extend.get("class") : "");
- url = url.replace("筛选area", (extend != null && extend.containsKey("area")) ? extend.get("area") : "");
- url = url.replace("筛选lang", (extend != null && extend.containsKey("lang")) ? extend.get("lang") : "");
- url = url.replace("筛选year", (extend != null && extend.containsKey("year")) ? extend.get("year") : "");
- url = url.replace("排序", (extend != null && extend.containsKey("排序")) ? extend.get("排序") : "");
- SpiderDebug.log(url);
- String json = desc(OkHttp.string(url, getHeaders(url)), (byte) 2);
- JSONObject obj = new JSONObject(json);
- int totalPg = Integer.MAX_VALUE;
- try {
- if (obj.has("totalpage") && obj.get("totalpage") instanceof Integer) {
- totalPg = obj.getInt("totalpage");
- } else if (obj.has("pagecount") && obj.get("pagecount") instanceof Integer) {
- totalPg = obj.getInt("pagecount");
- } else if (obj.has("data") && obj.get("data") instanceof JSONObject &&
- (obj.getJSONObject("data").has("total") && obj.getJSONObject("data").get("total") instanceof Integer &&
- obj.getJSONObject("data").has("limit") && obj.getJSONObject("data").get("limit") instanceof Integer)) {
- int limit = obj.getJSONObject("data").getInt("limit");
- int total = obj.getJSONObject("data").getInt("total");
- totalPg = total % limit == 0 ? (total / limit) : (total / limit + 1);
- }
- } catch (Exception e) {
- SpiderDebug.log(e);
- }
-
- JSONArray jsonArray = null;
- JSONArray videos = new JSONArray();
- if (obj.has("list") && obj.get("list") instanceof JSONArray) {
- jsonArray = obj.getJSONArray("list");
- } else if (obj.has("data") && obj.get("data") instanceof JSONObject && obj.getJSONObject("data").has("list") && obj.getJSONObject("data").get("list") instanceof JSONArray) {
- jsonArray = obj.getJSONObject("data").getJSONArray("list");
- } else if (obj.has("data") && obj.get("data") instanceof JSONArray) {
- jsonArray = obj.getJSONArray("data");
- }
- if (jsonArray != null) {
- for (int i = 0; i < jsonArray.length(); i++) {
- JSONObject vObj = jsonArray.getJSONObject(i);
- if (vObj.has("vod_id")) {
- JSONObject v = new JSONObject();
- v.put("vod_id", vObj.getString("vod_id"));
- v.put("vod_name", vObj.getString("vod_name"));
- v.put("vod_pic", vObj.getString("vod_pic"));
- v.put("vod_remarks", vObj.getString("vod_remarks"));
- videos.put(v);
- } else {
- JSONObject v = new JSONObject();
- v.put("vod_id", vObj.getString("nextlink"));
- v.put("vod_name", vObj.getString("title"));
- v.put("vod_pic", vObj.getString("pic"));
- v.put("vod_remarks", vObj.getString("state"));
- videos.put(v);
- }
- }
- }
- JSONObject result = new JSONObject();
- result.put("page", pg);
- result.put("pagecount", totalPg);
- result.put("limit", 90);
- result.put("total", Integer.MAX_VALUE);
- result.put("list", videos);
- return result.toString();
- } catch (Exception e) {
- SpiderDebug.log(e);
- }
- return "";
+ public String detailContent(List ids) throws Exception {
+ String apiUrl = getApiUrl();
+ String url = getPlayUrlPrefix(apiUrl) + ids.get(0);
+ SpiderDebug.log(url);
+ String json = OkHttp.string(url, getHeaders(url));
+ JSONObject obj = new JSONObject(json);
+ JSONObject result = new JSONObject();
+ JSONObject vod = new JSONObject();
+ genPlayList(apiUrl, obj, json, vod, ids.get(0));
+ JSONArray list = new JSONArray();
+ list.put(vod);
+ result.put("list", list);
+ return result.toString();
}
@Override
- public String detailContent(List ids) {
- try {
- String apiUrl = getApiUrl();
- String url = getPlayUrlPrefix(apiUrl) + ids.get(0);
- SpiderDebug.log(url);
- String json = desc(OkHttp.string(url, getHeaders(url)), (byte) 3);
- JSONObject obj = new JSONObject(json);
- JSONObject result = new JSONObject();
- JSONObject vod = new JSONObject();
- genPlayList(apiUrl, obj, json, vod, ids.get(0));
- JSONArray list = new JSONArray();
- list.put(vod);
- result.put("list", list);
- return result.toString();
- } catch (Exception e) {
- SpiderDebug.log(e);
+ public String searchContent(String key, boolean quick) throws Exception {
+ String apiUrl = getApiUrl();
+ String url = getSearchUrl(apiUrl, URLEncoder.encode(key));
+ String json = OkHttp.string(url, getHeaders(url));
+ JSONObject obj = new JSONObject(json);
+ JSONArray jsonArray = null;
+ JSONArray videos = new JSONArray();
+ if (obj.has("list") && obj.get("list") instanceof JSONArray) {
+ jsonArray = obj.getJSONArray("list");
+ } else if (obj.has("data") && obj.get("data") instanceof JSONObject && obj.getJSONObject("data").has("list") && obj.getJSONObject("data").get("list") instanceof JSONArray) {
+ jsonArray = obj.getJSONObject("data").getJSONArray("list");
+ } else if (obj.has("data") && obj.get("data") instanceof JSONArray) {
+ jsonArray = obj.getJSONArray("data");
}
- return "";
+ if (jsonArray != null) {
+ for (int i = 0; i < jsonArray.length(); i++) {
+ JSONObject vObj = jsonArray.getJSONObject(i);
+ if (vObj.has("vod_id")) {
+ JSONObject v = new JSONObject();
+ v.put("vod_id", vObj.getString("vod_id"));
+ v.put("vod_name", vObj.getString("vod_name"));
+ v.put("vod_pic", vObj.getString("vod_pic"));
+ v.put("vod_remarks", vObj.getString("vod_remarks"));
+ videos.put(v);
+ } else {
+ JSONObject v = new JSONObject();
+ v.put("vod_id", vObj.getString("nextlink"));
+ v.put("vod_name", vObj.getString("title"));
+ v.put("vod_pic", vObj.getString("pic"));
+ v.put("vod_remarks", vObj.getString("state"));
+ videos.put(v);
+ }
+ }
+ }
+ JSONObject result = new JSONObject();
+ result.put("list", videos);
+ return result.toString();
}
@Override
- public String searchContent(String key, boolean quick) {
- try {
- String apiUrl = getApiUrl();
- String url = getSearchUrl(apiUrl, URLEncoder.encode(key));
- String json = desc(OkHttp.string(url, getHeaders(url)), (byte) 5);
- JSONObject obj = new JSONObject(json);
- JSONArray jsonArray = null;
- JSONArray videos = new JSONArray();
- if (obj.has("list") && obj.get("list") instanceof JSONArray) {
- jsonArray = obj.getJSONArray("list");
- } else if (obj.has("data") && obj.get("data") instanceof JSONObject && obj.getJSONObject("data").has("list") && obj.getJSONObject("data").get("list") instanceof JSONArray) {
- jsonArray = obj.getJSONObject("data").getJSONArray("list");
- } else if (obj.has("data") && obj.get("data") instanceof JSONArray) {
- jsonArray = obj.getJSONArray("data");
- }
- if (jsonArray != null) {
- for (int i = 0; i < jsonArray.length(); i++) {
- JSONObject vObj = jsonArray.getJSONObject(i);
- if (vObj.has("vod_id")) {
- JSONObject v = new JSONObject();
- v.put("vod_id", vObj.getString("vod_id"));
- v.put("vod_name", vObj.getString("vod_name"));
- v.put("vod_pic", vObj.getString("vod_pic"));
- v.put("vod_remarks", vObj.getString("vod_remarks"));
- videos.put(v);
- } else {
- JSONObject v = new JSONObject();
- v.put("vod_id", vObj.getString("nextlink"));
- v.put("vod_name", vObj.getString("title"));
- v.put("vod_pic", vObj.getString("pic"));
- v.put("vod_remarks", vObj.getString("state"));
- videos.put(v);
- }
- }
- }
+ public String playerContent(String flag, String id, List vipFlags) throws Exception {
+ if (flag.contains("fanqie") && Utils.isVideoFormat(id)) {
JSONObject result = new JSONObject();
- result.put("list", videos);
+ result.put("parse", 0);
+ result.put("playUrl", "");
+ result.put("url", id);
return result.toString();
- } catch (Exception e) {
- SpiderDebug.log(e);
}
- return "";
- }
- @Override
- public String playerContent(String flag, String id, List vipFlags) {
- try {
- if (flag.contains("fanqie") && Utils.isVideoFormat(id)) {
- JSONObject result = new JSONObject();
- result.put("parse", 0);
- result.put("playUrl", "");
- result.put("url", id);
- return result.toString();
- }
- ArrayList parseUrls = parseUrlMap.get(flag);
- if (parseUrls == null)
- parseUrls = new ArrayList<>();
- if (!parseUrls.isEmpty()) {
- JSONObject result = getFinalVideo(flag, parseUrls, id);
- if (result != null)
- return result.toString();
- }
- if (Utils.isVideoFormat(id)) {
- JSONObject result = new JSONObject();
- result.put("parse", 0);
- result.put("playUrl", "");
- result.put("url", id);
- return result.toString();
- } else {
- JSONObject result = new JSONObject();
- result.put("parse", 1);
- result.put("jx", "1");
- result.put("url", id);
- return result.toString();
- }
- } catch (Exception e) {
- SpiderDebug.log(e);
+ ArrayList parseUrls = parseUrlMap.get(flag);
+ if (parseUrls == null) parseUrls = new ArrayList<>();
+ if (!parseUrls.isEmpty()) {
+ JSONObject result = getFinalVideo(flag, parseUrls, id);
+ if (result != null) return result.toString();
+ }
+ if (Utils.isVideoFormat(id)) {
+ JSONObject result = new JSONObject();
+ result.put("parse", 0);
+ result.put("playUrl", "");
+ result.put("url", id);
+ return result.toString();
+ } else {
+ JSONObject result = new JSONObject();
+ result.put("parse", 1);
+ result.put("jx", "1");
+ result.put("url", id);
+ return result.toString();
}
- return "";
}
private void findJsonArray(JSONObject obj, String match, ArrayList result) {
@@ -381,8 +340,7 @@ public class AppYsV2 extends Spider {
String k = keys.next();
try {
Object o = obj.get(k);
- if (k.equals(match) && o instanceof JSONArray)
- result.add((JSONArray) o);
+ if (k.equals(match) && o instanceof JSONArray) result.add((JSONArray) o);
if (o instanceof JSONObject) {
findJsonArray((JSONObject) o, match, result);
} else if (o instanceof JSONArray) {
@@ -405,8 +363,8 @@ public class AppYsV2 extends Spider {
}
return TextUtils.join(",", strings);
} catch (JSONException e) {
+ return "";
}
- return "";
}
private HashMap getHeaders(String URL) {
@@ -415,12 +373,7 @@ public class AppYsV2 extends Spider {
return headers;
}
- private boolean isBan(String key) {
- return key.equals("伦理") || key.equals("情色") || key.equals("福利");
- }
-
// M 扩展方法
-
// ######重组搜索
private String getSearchUrl(String URL, String KEY) {
if (URL.contains(".vod")) {
@@ -432,32 +385,7 @@ public class AppYsV2 extends Spider {
} else if (URL.contains("api.php/app") || URL.contains("xgapp")) {
return URL + "search?text=" + KEY + "&pg=";
} else if (urlPattern1.matcher(URL).find()) {
- if (URL.contains("esellauto")
- || URL.contains("1.14.63.101")
- || URL.contains("zjys")
- || URL.contains("dcd")
- || URL.contains("lxue")
- || URL.contains("weetai.cn")
- || URL.contains("haokanju1")
- || URL.contains("fit:8")
- || URL.contains("zjj.life")
- || URL.contains("love9989")
- || URL.contains("8d8q")
- || URL.contains("lk.pxun")
- || URL.contains("hgyx")
- || URL.contains("521x5")
- || URL.contains("lxyyy")
- || URL.contains("0818tv")
- || URL.contains("diyoui")
- || URL.contains("diliktv")
- || URL.contains("ppzhu")
- || URL.contains("aitesucai")
- || URL.contains("zz.ci")
- || URL.contains("chxjon")
- || URL.contains("watchmi")
- || URL.contains("vipbp")
- || URL.contains("bhtv")
- || URL.contains("xfykl")) {
+ if (URL.contains("esellauto") || URL.contains("1.14.63.101") || URL.contains("zjys") || URL.contains("dcd") || URL.contains("lxue") || URL.contains("weetai.cn") || URL.contains("haokanju1") || URL.contains("fit:8") || URL.contains("zjj.life") || URL.contains("love9989") || URL.contains("8d8q") || URL.contains("lk.pxun") || URL.contains("hgyx") || URL.contains("521x5") || URL.contains("lxyyy") || URL.contains("0818tv") || URL.contains("diyoui") || URL.contains("diliktv") || URL.contains("ppzhu") || URL.contains("aitesucai") || URL.contains("zz.ci") || URL.contains("chxjon") || URL.contains("watchmi") || URL.contains("vipbp") || URL.contains("bhtv") || URL.contains("xfykl")) {
return URL + "?ac=list&" + "wd=" + KEY + "&page=";
} else {
return URL + "?ac=list&" + "zm=" + KEY + "&page=";
@@ -473,15 +401,7 @@ public class AppYsV2 extends Spider {
private static final Pattern parsePattern1 = Pattern.compile(".*(url|v|vid|php\\?id)=");
private static final Pattern parsePattern2 = Pattern.compile("https?://[^/]*");
- protected static final Pattern[] htmlVideoKeyMatch = new Pattern[]{
- Pattern.compile("player=new"),
- Pattern.compile("();
parseUrlMap.put(flag, parseUrls);
}
- if (!purl.isEmpty() && !parseUrls.contains(purl))
- parseUrls.add(purl);
+ if (!purl.isEmpty() && !parseUrls.contains(purl)) parseUrls.add(purl);
}
} else if (URL.contains("xgapp")) {
JSONObject data = object.getJSONObject("data").getJSONObject("vod_info");
@@ -655,8 +573,7 @@ public class AppYsV2 extends Spider {
for (int i = 0; i < vodUrlWithPlayer.length(); i++) {
JSONObject from = vodUrlWithPlayer.getJSONObject(i);
String flag = from.optString("code").trim();
- if (flag.isEmpty())
- flag = from.getString("name").trim();
+ if (flag.isEmpty()) flag = from.getString("name").trim();
playFlags.add(flag);
playUrls.add(from.getString("url"));
String purl = from.optString("parse_api").trim();
@@ -665,8 +582,7 @@ public class AppYsV2 extends Spider {
parseUrls = new ArrayList<>();
parseUrlMap.put(flag, parseUrls);
}
- if (!purl.isEmpty() && !parseUrls.contains(purl))
- parseUrls.add(purl);
+ if (!purl.isEmpty() && !parseUrls.contains(purl)) parseUrls.add(purl);
}
} else if (/*urlPattern2.matcher(URL).find()*/URL.contains(".vod")) {
JSONObject data = object.getJSONObject("data");
@@ -684,8 +600,7 @@ public class AppYsV2 extends Spider {
for (int i = 0; i < vodUrlWithPlayer.length(); i++) {
JSONObject from = vodUrlWithPlayer.getJSONObject(i);
String flag = from.getJSONObject("player_info").optString("from").trim();
- if (flag.isEmpty())
- flag = from.getJSONObject("player_info").optString("show").trim();
+ if (flag.isEmpty()) flag = from.getJSONObject("player_info").optString("show").trim();
playFlags.add(flag);
playUrls.add(from.getString("url"));
try {
@@ -720,8 +635,7 @@ public class AppYsV2 extends Spider {
}
}
purl = purl.replace("..", ".").trim();
- if (!purl.isEmpty() && !parseUrls.contains(purl))
- parseUrls.add(purl);
+ if (!purl.isEmpty() && !parseUrls.contains(purl)) parseUrls.add(purl);
}
} catch (Exception e) {
SpiderDebug.log(e);
@@ -756,8 +670,7 @@ public class AppYsV2 extends Spider {
if (url.contains("url=")) {
int spIdx = url.indexOf("url=") + 4;
String pUrl = url.substring(0, spIdx).trim();
- if (!pUrl.isEmpty() && !parseUrls.contains(pUrl))
- parseUrls.add(pUrl);
+ if (!pUrl.isEmpty() && !parseUrls.contains(pUrl)) parseUrls.add(pUrl);
urls.add(urlObj.getString("title") + "$" + url.substring(spIdx).trim());
} else {
urls.add(urlObj.getString("title") + "$" + url);
@@ -775,10 +688,9 @@ public class AppYsV2 extends Spider {
protected JSONObject getFinalVideo(String flag, ArrayList parseUrls, String url) throws JSONException {
String htmlPlayUrl = "";
for (String parseUrl : parseUrls) {
- if (parseUrl.isEmpty() || parseUrl.equals("null"))
- continue;
+ if (parseUrl.isEmpty() || parseUrl.equals("null")) continue;
String playUrl = parseUrl + url;
- String content = desc(OkHttp.string(playUrl, null), (byte) 4);
+ String content = OkHttp.string(playUrl);
JSONObject tryJson = null;
try {
tryJson = jsonParse(url, content);
@@ -823,20 +735,12 @@ public class AppYsV2 extends Spider {
}
private String getApiUrl() {
- if (extInfos == null || extInfos.length < 1)
- return "";
+ if (extInfos == null || extInfos.length < 1) return "";
return extInfos[0].trim();
}
private String[] extInfos = null;
- protected String desc(String src, byte type) {
- if (extInfos.length > 1) {
- String descFlag = extInfos[1];
- }
- return src;
- }
-
public static JSONObject jsonParse(String input, String json) throws JSONException {
//处理解析接口返回的报文,如果返回的报文中包含header信息,就加到返回值中
JSONObject jsonPlayData = new JSONObject(json);
@@ -861,21 +765,17 @@ public class AppYsV2 extends Spider {
JSONObject headers = new JSONObject();
if (jsonPlayData.has("header")) {
headers = jsonPlayData.optJSONObject("header");
- }
- else if (jsonPlayData.has("Header")) {
+ } else if (jsonPlayData.has("Header")) {
headers = jsonPlayData.optJSONObject("Header");
- }
- else if (jsonPlayData.has("headers")) {
+ } else if (jsonPlayData.has("headers")) {
headers = jsonPlayData.optJSONObject("headers");
- }
- else if (jsonPlayData.has("Headers")) {
+ } else if (jsonPlayData.has("Headers")) {
headers = jsonPlayData.optJSONObject("Headers");
}
String ua = "";
if (jsonPlayData.has("user-agent")) {
ua = jsonPlayData.optString("user-agent", "");
- }
- else if (jsonPlayData.has("User-Agent")) {
+ } else if (jsonPlayData.has("User-Agent")) {
ua = jsonPlayData.optString("User-Agent", "");
}
if (ua.trim().length() > 0) {
@@ -884,8 +784,7 @@ public class AppYsV2 extends Spider {
String referer = "";
if (jsonPlayData.has("referer")) {
referer = jsonPlayData.optString("referer", "");
- }
- else if (jsonPlayData.has("Referer")) {
+ } else if (jsonPlayData.has("Referer")) {
referer = jsonPlayData.optString("Referer", "");
}
if (referer.trim().length() > 0) {
@@ -901,8 +800,7 @@ public class AppYsV2 extends Spider {
}
public static JSONObject fixJsonVodHeader(JSONObject headers, String input, String url) throws JSONException {
- if (headers == null)
- headers = new JSONObject();
+ if (headers == null) headers = new JSONObject();
if (input.contains("www.mgtv.com")) {
headers.put("Referer", " ");
headers.put("User-Agent", " Mozilla/5.0");
diff --git a/app/src/main/java/com/github/catvod/spider/Proxy.java b/app/src/main/java/com/github/catvod/spider/Proxy.java
index 1c2ca8f7..59edd457 100644
--- a/app/src/main/java/com/github/catvod/spider/Proxy.java
+++ b/app/src/main/java/com/github/catvod/spider/Proxy.java
@@ -15,8 +15,6 @@ public class Proxy extends Spider {
switch (params.get("do")) {
case "ck":
return new Object[]{200, "text/plain; charset=utf-8", new ByteArrayInputStream("ok".getBytes("UTF-8"))};
- case "yingshi":
- return YingShi.vod(params);
case "ali":
return Ali.proxy(params);
case "bili":
diff --git a/app/src/main/java/com/github/catvod/spider/YingShi.java b/app/src/main/java/com/github/catvod/spider/YingShi.java
index 350899a8..617c4ac2 100644
--- a/app/src/main/java/com/github/catvod/spider/YingShi.java
+++ b/app/src/main/java/com/github/catvod/spider/YingShi.java
@@ -7,30 +7,26 @@ 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.webdav.Drive;
import com.github.catvod.crawler.Spider;
import com.github.catvod.net.OkHttp;
import com.github.catvod.utils.FileUtil;
import com.github.catvod.utils.Utils;
-import org.json.JSONArray;
-import org.json.JSONException;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
-import java.io.ByteArrayInputStream;
import java.io.File;
-import java.io.IOException;
-import java.math.BigDecimal;
import java.net.URLEncoder;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
public class YingShi extends Spider {
@@ -114,8 +110,7 @@ public class YingShi extends Spider {
@Override
public String playerContent(String flag, String id, List vipFlags) throws Exception {
- String proxyUrl = Proxy.getUrl() + "?do=yingshi&url=" + id;
- return Result.get().url(proxyUrl).string();
+ return Result.get().url(id).string();
}
@Override
@@ -169,30 +164,4 @@ public class YingShi extends Spider {
return new Filter(key, name, values);
}
}
-
- public static Object[] vod(Map params) throws Exception {
- String url = params.get("url");
- List AdBlock = Arrays.asList("10.0099", "8.1748"); // Advertisement ts
- String content = OkHttp.string(url);
- Matcher m = Pattern.compile("#EXT-X-DISCONTINUITY[\\s\\S]*?(?=#EXT-X-DISCONTINUITY|$)").matcher(content);
- while (m.find()) {
- BigDecimal k = BigDecimal.ZERO;
- Matcher digit = Pattern.compile("#EXTINF:(\\d+\\.\\d+)").matcher(m.group(0));
- while (digit.find()) {
- BigDecimal g = new BigDecimal(digit.group(1));
- k = k.add(g);
- }
- for (String ads : AdBlock) {
- if (k.toString().contains(ads)) {
- content = content.replaceAll(m.group(0), "");
- System.out.println("Found ads: " + ads);
- }
- }
- }
- Object[] result = new Object[3];
- result[0] = 200;
- result[1] = "application/octet-stream";
- result[2] = new ByteArrayInputStream(content.getBytes());
- return result;
- }
}
diff --git a/jar/custom_spider.jar b/jar/custom_spider.jar
index bf5c5d25..45c4cd89 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 a22fbbfc..32b61b1b 100644
--- a/jar/custom_spider.jar.md5
+++ b/jar/custom_spider.jar.md5
@@ -1 +1 @@
-e99f254a76be4612aaf4f8e6eef5dae1
+805e97263746889cf1405e74ec9d0824