Support drpy - part 1

pull/123/head
FongMi 3 years ago
parent 914542e648
commit 19bbdb85a1
  1. 31
      app/src/main/java/com/fongmi/android/tv/api/ApiConfig.java
  2. 24
      app/src/main/java/com/fongmi/android/tv/api/JsLoader.java
  3. 3
      drpy/build.gradle
  4. 10
      drpy/src/main/java/com/hiker/drpy/Loader.java
  5. 6
      drpy/src/main/java/com/hiker/drpy/Spider.java

@ -33,9 +33,9 @@ public class ApiConfig {
private List<String> flags;
private List<Parse> parses;
private List<Site> sites;
private JarLoader jLoader;
private PyLoader pLoader;
private JsLoader sLoader;
private JarLoader jarLoader;
private PyLoader pyLoader;
private JsLoader jsLoader;
private Config config;
private String wall;
private Parse parse;
@ -73,9 +73,9 @@ public class ApiConfig {
this.sites = new ArrayList<>();
this.flags = new ArrayList<>();
this.parses = new ArrayList<>();
this.jLoader = new JarLoader();
this.pLoader = new PyLoader();
this.sLoader = new JsLoader();
this.jarLoader = new JarLoader();
this.pyLoader = new PyLoader();
this.jsLoader = new JsLoader();
return this;
}
@ -91,8 +91,9 @@ public class ApiConfig {
this.sites.clear();
this.flags.clear();
this.parses.clear();
this.jLoader.clear();
this.pLoader.clear();
this.jarLoader.clear();
this.pyLoader.clear();
this.jsLoader.clear();
return this;
}
@ -127,7 +128,7 @@ public class ApiConfig {
try {
parseJson(object);
parseLive(object);
jLoader.parseJar("", Json.safeString(object, "spider"));
jarLoader.parseJar("", Json.safeString(object, "spider"));
config.json(object.toString()).update();
App.post(callback::success);
} catch (Exception e) {
@ -173,23 +174,25 @@ public class ApiConfig {
}
public Spider getCSP(Site site) {
boolean js = site.getApi().contains(".js");
boolean py = site.getApi().startsWith("py_");
boolean csp = site.getApi().startsWith("csp_");
if (py) return pLoader.getSpider(site.getKey(), site.getApi(), site.getExt());
else if (csp) return jLoader.getSpider(site.getKey(), site.getApi(), site.getExt(), site.getJar());
if (js) return jsLoader.getSpider(site.getKey(), site.getApi(), site.getExt());
if (py) return pyLoader.getSpider(site.getKey(), site.getApi(), site.getExt());
if (csp) return jarLoader.getSpider(site.getKey(), site.getApi(), site.getExt(), site.getJar());
else return new SpiderNull();
}
public Object[] proxyLocal(Map<?, ?> param) {
return jLoader.proxyInvoke(param);
return jarLoader.proxyInvoke(param);
}
public JSONObject jsonExt(String key, LinkedHashMap<String, String> jxs, String url) {
return jLoader.jsonExt(key, jxs, url);
return jarLoader.jsonExt(key, jxs, url);
}
public JSONObject jsonExtMix(String flag, String key, String name, LinkedHashMap<String, HashMap<String, String>> jxs, String url) {
return jLoader.jsonExtMix(flag, key, name, jxs, url);
return jarLoader.jsonExtMix(flag, key, name, jxs, url);
}
public Site getSite(String key) {

@ -1,12 +1,18 @@
package com.fongmi.android.tv.api;
import android.content.Context;
import com.fongmi.android.tv.App;
import com.github.catvod.crawler.Spider;
import com.github.catvod.crawler.SpiderNull;
import java.lang.reflect.Method;
import java.util.concurrent.ConcurrentHashMap;
public class JsLoader {
private final ConcurrentHashMap<String, Spider> spiders;
private Object loader;
public JsLoader() {
spiders = new ConcurrentHashMap<>();
@ -18,6 +24,24 @@ public class JsLoader {
}
private void init() {
try {
loader = Class.forName("com.hiker.drpy.Loader").newInstance();
} catch (Exception e) {
e.printStackTrace();
}
}
public Spider getSpider(String key, String api, String ext) {
try {
if (spiders.containsKey(key)) return spiders.get(key);
Method method = loader.getClass().getMethod("spider", Context.class, String.class, String.class);
Spider spider = (Spider) method.invoke(loader, App.get(), api, ext);
spider.init(App.get(), ext);
spiders.put(key, spider);
return spider;
} catch (Exception e) {
e.printStackTrace();
return new SpiderNull();
}
}
}

@ -13,5 +13,6 @@ android {
}
dependencies {
implementation project(':catvod')
implementation 'wang.harlon.quickjs:wrapper-android:0.6.0'
}

@ -0,0 +1,10 @@
package com.hiker.drpy;
import android.content.Context;
public class Loader {
public Spider spider(Context context, String name, String ext) {
return new Spider();
}
}

@ -0,0 +1,6 @@
package com.hiker.drpy;
public class Spider extends com.github.catvod.crawler.Spider {
}
Loading…
Cancel
Save