From 70ad020b2576603fd494ab5d1ba015ebb0de43cf Mon Sep 17 00:00:00 2001 From: FongMi Date: Sun, 11 Dec 2022 00:47:03 +0800 Subject: [PATCH] Support drpy - part 4 --- drpy/build.gradle | 5 ++-- drpy/src/main/java/com/hiker/drpy/Loader.java | 20 +++++++++----- drpy/src/main/java/com/hiker/drpy/Spider.java | 27 ++++++++++++++----- .../java/com/hiker/drpy/method/Console.java | 6 ++--- .../java/com/hiker/drpy/method/Global.java | 8 +++--- .../java/com/hiker/drpy/method/Local.java | 2 +- 6 files changed, 46 insertions(+), 22 deletions(-) diff --git a/drpy/build.gradle b/drpy/build.gradle index b0e7cf855..342baa446 100644 --- a/drpy/build.gradle +++ b/drpy/build.gradle @@ -8,12 +8,13 @@ android { defaultConfig { minSdk 21 targetSdk 33 - ndk { abiFilters "armeabi-v7a" } } } dependencies { implementation project(':catvod') - implementation 'wang.harlon.quickjs:wrapper-android:0.6.0' + implementation 'wang.harlon.quickjs:wrapper-android:0.11.0' implementation 'com.squareup.okhttp3:okhttp:5.0.0-alpha.10' + implementation 'com.google.code.gson:gson:2.10' + implementation 'org.jsoup:jsoup:1.15.3' } \ No newline at end of file diff --git a/drpy/src/main/java/com/hiker/drpy/Loader.java b/drpy/src/main/java/com/hiker/drpy/Loader.java index 4b0ab60b0..4ec95e044 100644 --- a/drpy/src/main/java/com/hiker/drpy/Loader.java +++ b/drpy/src/main/java/com/hiker/drpy/Loader.java @@ -1,23 +1,31 @@ package com.hiker.drpy; -import com.github.tvbox.quickjs.JSModule; -import com.github.tvbox.quickjs.QuickJSContext; import com.hiker.drpy.method.Console; import com.hiker.drpy.method.Global; import com.hiker.drpy.method.Local; +import com.whl.quickjs.android.QuickJSLoader; +import com.whl.quickjs.wrapper.JSModule; +import com.whl.quickjs.wrapper.QuickJSContext; public class Loader { private QuickJSContext ctx; static { - System.loadLibrary("quickjs"); + QuickJSLoader.init(); } public Loader() { - Worker.submit(() -> { - JSModule.setModuleLoader(name -> Module.get().load(name)); - initCtx(); + setModuleLoader(); + Worker.submit(this::initCtx); + } + + private void setModuleLoader() { + JSModule.setModuleLoader(new JSModule.ModuleLoader() { + @Override + public String getModuleScript(String moduleName) { + return Module.get().load(moduleName); + } }); } diff --git a/drpy/src/main/java/com/hiker/drpy/Spider.java b/drpy/src/main/java/com/hiker/drpy/Spider.java index 6bd17feb2..86962ca6f 100644 --- a/drpy/src/main/java/com/hiker/drpy/Spider.java +++ b/drpy/src/main/java/com/hiker/drpy/Spider.java @@ -2,8 +2,9 @@ package com.hiker.drpy; import android.content.Context; -import com.github.tvbox.quickjs.JSObject; -import com.github.tvbox.quickjs.QuickJSContext; +import com.whl.quickjs.wrapper.JSArray; +import com.whl.quickjs.wrapper.JSObject; +import com.whl.quickjs.wrapper.QuickJSContext; import java.util.HashMap; import java.util.List; @@ -58,8 +59,8 @@ public class Spider extends com.github.catvod.crawler.Spider { @Override public String categoryContent(String tid, String pg, boolean filter, HashMap extend) throws Exception { - //TODO extend - return post("category", tid, pg, filter, null); + JSObject obj = Worker.submit(() -> convert(extend)).get(); + return post("category", tid, pg, filter, obj); } @Override @@ -74,7 +75,21 @@ public class Spider extends com.github.catvod.crawler.Spider { @Override public String playerContent(String flag, String id, List vipFlags) throws Exception { - //TODO vipFlags - return post("play", flag, id, null); + JSArray array = Worker.submit(() -> convert(vipFlags)).get(); + return post("play", flag, id, array); + } + + 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; } } diff --git a/drpy/src/main/java/com/hiker/drpy/method/Console.java b/drpy/src/main/java/com/hiker/drpy/method/Console.java index 9e3c905cc..4ad69eba2 100644 --- a/drpy/src/main/java/com/hiker/drpy/method/Console.java +++ b/drpy/src/main/java/com/hiker/drpy/method/Console.java @@ -2,14 +2,14 @@ package com.hiker.drpy.method; import android.util.Log; -import com.github.tvbox.quickjs.JSMethod; +import com.whl.quickjs.wrapper.JSMethod; public class Console { private final String TAG = Console.class.getSimpleName(); @JSMethod - public void log(String msg) { - Log.d(TAG, msg); + public void log(Object msg) { + Log.d(TAG, String.valueOf(msg)); } } diff --git a/drpy/src/main/java/com/hiker/drpy/method/Global.java b/drpy/src/main/java/com/hiker/drpy/method/Global.java index 65b88243a..03fd37894 100644 --- a/drpy/src/main/java/com/hiker/drpy/method/Global.java +++ b/drpy/src/main/java/com/hiker/drpy/method/Global.java @@ -3,13 +3,13 @@ package com.hiker.drpy.method; import android.text.TextUtils; import android.util.Base64; -import com.github.tvbox.quickjs.JSArray; -import com.github.tvbox.quickjs.JSMethod; -import com.github.tvbox.quickjs.JSObject; -import com.github.tvbox.quickjs.QuickJSContext; import com.google.gson.Gson; import com.hiker.drpy.Parser; import com.hiker.drpy.net.OkHttp; +import com.whl.quickjs.wrapper.JSArray; +import com.whl.quickjs.wrapper.JSMethod; +import com.whl.quickjs.wrapper.JSObject; +import com.whl.quickjs.wrapper.QuickJSContext; import org.json.JSONObject; diff --git a/drpy/src/main/java/com/hiker/drpy/method/Local.java b/drpy/src/main/java/com/hiker/drpy/method/Local.java index 42f1b4c38..a8ee975f1 100644 --- a/drpy/src/main/java/com/hiker/drpy/method/Local.java +++ b/drpy/src/main/java/com/hiker/drpy/method/Local.java @@ -1,6 +1,6 @@ package com.hiker.drpy.method; -import com.github.tvbox.quickjs.JSMethod; +import com.whl.quickjs.wrapper.JSMethod; import java.util.HashMap; import java.util.Map;