diff --git a/app/src/main/java/com/fongmi/android/tv/api/ApiConfig.java b/app/src/main/java/com/fongmi/android/tv/api/ApiConfig.java index 844d00530..2c9b052c6 100644 --- a/app/src/main/java/com/fongmi/android/tv/api/ApiConfig.java +++ b/app/src/main/java/com/fongmi/android/tv/api/ApiConfig.java @@ -246,7 +246,7 @@ public class ApiConfig { else if (csp) jarLoader.setRecent(site.getJar()); } - public Object[] proxyLocal(Map params) { + public Object[] proxyLocal(Map params) { if (params.containsKey("do") && params.get("do").equals("js")) { return jsLoader.proxyInvoke(params); } else if (params.containsKey("do") && params.get("do").equals("py")) { diff --git a/app/src/main/java/com/fongmi/android/tv/api/JarLoader.java b/app/src/main/java/com/fongmi/android/tv/api/JarLoader.java index 94aeccc7b..b2dc72837 100644 --- a/app/src/main/java/com/fongmi/android/tv/api/JarLoader.java +++ b/app/src/main/java/com/fongmi/android/tv/api/JarLoader.java @@ -128,7 +128,7 @@ public class JarLoader { return (JSONObject) method.invoke(null, jxs, name, flag, url); } - public Object[] proxyInvoke(Map params) { + public Object[] proxyInvoke(Map params) { try { Method method = methods.get(Utils.getMd5(recent)); if (method == null) return null; diff --git a/app/src/main/java/com/fongmi/android/tv/api/JsLoader.java b/app/src/main/java/com/fongmi/android/tv/api/JsLoader.java index bc69b1b51..429491e9a 100644 --- a/app/src/main/java/com/fongmi/android/tv/api/JsLoader.java +++ b/app/src/main/java/com/fongmi/android/tv/api/JsLoader.java @@ -51,7 +51,7 @@ public class JsLoader { } } - public Object[] proxyInvoke(Map params) { + public Object[] proxyInvoke(Map params) { try { Spider spider = spiders.get(recent); if (spider == null) return null; diff --git a/app/src/main/java/com/fongmi/android/tv/api/PyLoader.java b/app/src/main/java/com/fongmi/android/tv/api/PyLoader.java index a8761259d..f95036969 100644 --- a/app/src/main/java/com/fongmi/android/tv/api/PyLoader.java +++ b/app/src/main/java/com/fongmi/android/tv/api/PyLoader.java @@ -51,7 +51,7 @@ public class PyLoader { } } - public Object[] proxyInvoke(Map params) { + public Object[] proxyInvoke(Map params) { try { Spider spider = spiders.get(recent); if (spider == null) return null; diff --git a/catvod/src/main/java/com/github/catvod/crawler/Spider.java b/catvod/src/main/java/com/github/catvod/crawler/Spider.java index e4ff41bd7..96c5cb654 100644 --- a/catvod/src/main/java/com/github/catvod/crawler/Spider.java +++ b/catvod/src/main/java/com/github/catvod/crawler/Spider.java @@ -55,7 +55,7 @@ public abstract class Spider { return false; } - public Object[] proxyLocal(Map params) throws Exception { + public Object[] proxyLocal(Map params) throws Exception { return null; } diff --git a/pyramid/src/main/java/com/undcover/freedom/pyramid/Spider.java b/pyramid/src/main/java/com/undcover/freedom/pyramid/Spider.java index ade23e2ce..8633cee6f 100644 --- a/pyramid/src/main/java/com/undcover/freedom/pyramid/Spider.java +++ b/pyramid/src/main/java/com/undcover/freedom/pyramid/Spider.java @@ -82,7 +82,7 @@ public class Spider extends com.github.catvod.crawler.Spider { } @Override - public Object[] proxyLocal(Map params) throws Exception { + public Object[] proxyLocal(Map params) throws Exception { List list = app.callAttr("localProxy", obj, gson.toJson(params)).asList(); int code = list.get(0).toInt(); String type = list.get(1).toString(); diff --git a/quickjs/src/main/java/com/fongmi/quickjs/crawler/Spider.java b/quickjs/src/main/java/com/fongmi/quickjs/crawler/Spider.java index f8407fc24..630eaa09b 100644 --- a/quickjs/src/main/java/com/fongmi/quickjs/crawler/Spider.java +++ b/quickjs/src/main/java/com/fongmi/quickjs/crawler/Spider.java @@ -7,6 +7,7 @@ import com.fongmi.quickjs.bean.Res; import com.fongmi.quickjs.method.Function; import com.fongmi.quickjs.method.Global; import com.fongmi.quickjs.method.Local; +import com.fongmi.quickjs.utils.JSUtil; import com.fongmi.quickjs.utils.Module; import com.github.catvod.utils.Json; import com.whl.quickjs.android.QuickJSLoader; @@ -77,7 +78,7 @@ public class Spider extends com.github.catvod.crawler.Spider { @Override public String categoryContent(String tid, String pg, boolean filter, HashMap extend) throws Exception { - JSObject obj = submit(() -> convert(extend)).get(); + JSObject obj = submit(() -> JSUtil.toObj(ctx, extend)).get(); return (String) call("category", tid, pg, filter, obj)[0]; } @@ -93,7 +94,7 @@ public class Spider extends com.github.catvod.crawler.Spider { @Override public String playerContent(String flag, String id, List vipFlags) throws Exception { - JSArray array = submit(() -> convert(vipFlags)).get(); + JSArray array = submit(() -> JSUtil.toArray(ctx, vipFlags)).get(); return (String) call("play", flag, id, array)[0]; } @@ -108,7 +109,7 @@ public class Spider extends com.github.catvod.crawler.Spider { } @Override - public Object[] proxyLocal(Map params) throws Exception { + public Object[] proxyLocal(Map params) throws Exception { if ("catvod".equals(params.get("from"))) return proxy2(params); else return submit(() -> proxy1(params)).get(); } @@ -193,24 +194,9 @@ public class Spider extends com.github.catvod.crawler.Spider { } } - private JSObject convert(HashMap map) { - JSObject obj = ctx.createNewJSObject(); - if (map == null || map.isEmpty()) return obj; - for (String s : map.keySet()) obj.setProperty(s, map.get(s)); - return obj; - } - - private JSArray convert(List items) { - JSArray array = ctx.createNewJSArray(); - if (items == null || items.isEmpty()) return array; - for (int i = 0; i < items.size(); i++) array.set(items.get(i), i); - return array; - } - - private Object[] proxy1(Map params) throws Exception { - JSObject obj = ctx.createNewJSObject(); - for (Object key : params.keySet()) obj.setProperty((String) key, (String) params.get(key)); - JSONArray array = new JSONArray(((JSArray) jsObject.getJSFunction("proxy").call(obj)).stringify()); + private Object[] proxy1(Map params) throws Exception { + JSObject object = JSUtil.toObj(ctx, params); + JSONArray array = new JSONArray(((JSArray) jsObject.getJSFunction("proxy").call(object)).stringify()); Object[] result = new Object[3]; result[0] = array.opt(0); result[1] = array.opt(1); @@ -218,10 +204,10 @@ public class Spider extends com.github.catvod.crawler.Spider { return result; } - private Object[] proxy2(Map params) throws Exception { - String url = (String) params.get("url"); - String header = (String) params.get("header"); - JSArray array = submit(() -> convert(Arrays.asList(url.split("/")))).get(); + private Object[] proxy2(Map params) throws Exception { + String url = params.get("url"); + String header = params.get("header"); + JSArray array = submit(() -> JSUtil.toArray(ctx, Arrays.asList(url.split("/")))).get(); Object object = submit(() -> ctx.parse(header)).get(); String json = (String) call("proxy", array, object)[0]; Res res = Res.objectFrom(json); diff --git a/quickjs/src/main/java/com/fongmi/quickjs/utils/JSUtil.java b/quickjs/src/main/java/com/fongmi/quickjs/utils/JSUtil.java new file mode 100644 index 000000000..545174aa7 --- /dev/null +++ b/quickjs/src/main/java/com/fongmi/quickjs/utils/JSUtil.java @@ -0,0 +1,25 @@ +package com.fongmi.quickjs.utils; + +import com.whl.quickjs.wrapper.JSArray; +import com.whl.quickjs.wrapper.JSObject; +import com.whl.quickjs.wrapper.QuickJSContext; + +import java.util.List; +import java.util.Map; + +public class JSUtil { + + public static JSArray toArray(QuickJSContext ctx, List items) { + JSArray array = ctx.createNewJSArray(); + if (items == null || items.isEmpty()) return array; + for (int i = 0; i < items.size(); i++) array.set(items.get(i), i); + return array; + } + + public static JSObject toObj(QuickJSContext ctx, Map map) { + JSObject obj = ctx.createNewJSObject(); + if (map == null || map.isEmpty()) return obj; + for (String s : map.keySet()) obj.setProperty(s, map.get(s)); + return obj; + } +}