add dr support step 0.1

pull/58/head
ShadowDemon 3 years ago
parent 7fc45ff6c0
commit 8fa716f1af
  1. 2
      app/src/main/java/com/github/catvod/crawler/JarLoader.java
  2. 17
      app/src/main/java/com/github/tvbox/osc/util/js/SpiderJS.java
  3. 2
      quickjs/src/main/java/com/github/tvbox/quickjs/JSModule.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 {

@ -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);

@ -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;
}

Loading…
Cancel
Save