diff --git a/app/src/main/java/com/github/catvod/crawler/JarLoader.java b/app/src/main/java/com/github/catvod/crawler/JarLoader.java index 0ddc68da..1caa45c2 100644 --- a/app/src/main/java/com/github/catvod/crawler/JarLoader.java +++ b/app/src/main/java/com/github/catvod/crawler/JarLoader.java @@ -120,7 +120,7 @@ public class JarLoader { } public Spider getSpider(String key, String cls, String ext, String jar) { - if (cls.toLowerCase().endsWith(".js")) { + if (cls.toLowerCase().endsWith(".js") || cls.toLowerCase().contains(".js?")) { if (spiders.containsKey(key)) return spiders.get(key); try { diff --git a/app/src/main/java/com/github/tvbox/osc/util/js/JSEngine.java b/app/src/main/java/com/github/tvbox/osc/util/js/JSEngine.java index 772fd48e..af7afb05 100644 --- a/app/src/main/java/com/github/tvbox/osc/util/js/JSEngine.java +++ b/app/src/main/java/com/github/tvbox/osc/util/js/JSEngine.java @@ -129,19 +129,28 @@ public class JSEngine { } void initLocalStorage() { - SharedPreferences sharedPreferences = App.getInstance().getSharedPreferences("js_engine", Context.MODE_PRIVATE); jsContext.evaluate("var local = {};"); JSObject console = (JSObject) jsContext.getGlobalObject().getProperty("local"); console.setProperty("get", new JSCallFunction() { @Override public Object call(Object... args) { - return sharedPreferences.getString(args[0].toString() + "_" + args[1].toString(), ""); + SharedPreferences sharedPreferences = App.getInstance().getSharedPreferences("js_engine_" + args[0].toString(), Context.MODE_PRIVATE); + return sharedPreferences.getString(args[1].toString(), ""); } }); console.setProperty("set", new JSCallFunction() { @Override public Object call(Object... args) { - sharedPreferences.edit().putString(args[0].toString() + "_" + args[1].toString(), args[2].toString()).commit(); + SharedPreferences sharedPreferences = App.getInstance().getSharedPreferences("js_engine_" + args[0].toString(), Context.MODE_PRIVATE); + sharedPreferences.edit().putString(args[1].toString(), args[2].toString()).commit(); + return null; + } + }); + console.setProperty("delete", new JSCallFunction() { + @Override + public Object call(Object... args) { + SharedPreferences sharedPreferences = App.getInstance().getSharedPreferences("js_engine_" + args[0].toString(), Context.MODE_PRIVATE); + sharedPreferences.edit().remove(args[1].toString()).commit(); return null; } }); diff --git a/app/src/main/java/com/github/tvbox/osc/util/js/SpiderJS.java b/app/src/main/java/com/github/tvbox/osc/util/js/SpiderJS.java index e203f481..88cc9e40 100644 --- a/app/src/main/java/com/github/tvbox/osc/util/js/SpiderJS.java +++ b/app/src/main/java/com/github/tvbox/osc/util/js/SpiderJS.java @@ -4,8 +4,10 @@ import android.content.Context; import com.github.catvod.crawler.Spider; import com.github.tvbox.quickjs.JSArray; +import com.github.tvbox.quickjs.JSModule; import com.github.tvbox.quickjs.JSObject; +import java.net.URISyntaxException; import java.util.HashMap; import java.util.List; import java.util.UUID; @@ -31,6 +33,22 @@ public class SpiderJS extends Spider { public void run() { String moduleKey = "__" + UUID.randomUUID().toString().replace("-", "") + "__"; String jsContent = JSEngine.getInstance().loadModule(js); + try { + if (js.contains(".js?")) { + int spIdx = js.indexOf(".js?"); + String[] query = js.substring(spIdx + 4).split("&|="); + js = js.substring(0, spIdx); + for (int i = 0; i < query.length; i += 2) { + String key = query[i]; + String val = query[i + 1]; + String sub = JSModule.convertModuleName(js, val); + String content = JSEngine.getInstance().loadModule(sub); + jsContent = jsContent.replace("__" + key.toUpperCase() + "__", content); + } + } + } catch (Exception e) { + e.printStackTrace(); + } jsContent = jsContent.replace("__JS_SPIDER__", "globalThis." + moduleKey); JSEngine.getInstance().getJsContext().evaluateModule(jsContent, js); jsObject = (JSObject) JSEngine.getInstance().getJsContext().getProperty(JSEngine.getInstance().getGlobalObj(), moduleKey); diff --git a/quickjs/src/main/java/com/github/tvbox/quickjs/JSModule.java b/quickjs/src/main/java/com/github/tvbox/quickjs/JSModule.java index 72a2e0b5..9f487cf2 100644 --- a/quickjs/src/main/java/com/github/tvbox/quickjs/JSModule.java +++ b/quickjs/src/main/java/com/github/tvbox/quickjs/JSModule.java @@ -27,7 +27,7 @@ public final class JSModule { return name.startsWith("http://") || name.startsWith("https://") || name.startsWith("assets://"); } - static String convertModuleName(String moduleBaseName, String moduleName) { + public static String convertModuleName(String moduleBaseName, String moduleName) { if (moduleName == null || moduleName.length() == 0) { return moduleName; }