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/SpiderJS.java b/app/src/main/java/com/github/tvbox/osc/util/js/SpiderJS.java index e203f481..87101b37 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,21 @@ 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("&|="); + for (int i = 0; i < query.length; i += 2) { + String key = query[i]; + String val = query[i + 1]; + String sub = JSModule.convertModuleName(js.substring(0, spIdx), 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; }