From 0c8e12f5ae3d65bc8afff64ebdd07e9fdef98d18 Mon Sep 17 00:00:00 2001 From: jhengazuji Date: Tue, 25 Nov 2025 11:29:44 +0800 Subject: [PATCH] Add siteKey for spider --- .../fongmi/android/tv/api/loader/BaseLoader.java | 14 +++++--------- .../fongmi/android/tv/api/loader/JarLoader.java | 1 + .../com/fongmi/android/tv/api/loader/JsLoader.java | 13 ++++--------- .../com/fongmi/android/tv/api/loader/PyLoader.java | 11 +++-------- .../java/com/github/catvod/crawler/Spider.java | 2 ++ .../java/com/fongmi/quickjs/crawler/Loader.java | 4 ++-- .../java/com/fongmi/quickjs/crawler/Spider.java | 6 ++---- 7 files changed, 19 insertions(+), 32 deletions(-) diff --git a/app/src/main/java/com/fongmi/android/tv/api/loader/BaseLoader.java b/app/src/main/java/com/fongmi/android/tv/api/loader/BaseLoader.java index 837564322..72cb12ddf 100644 --- a/app/src/main/java/com/fongmi/android/tv/api/loader/BaseLoader.java +++ b/app/src/main/java/com/fongmi/android/tv/api/loader/BaseLoader.java @@ -58,7 +58,6 @@ public class BaseLoader { } public Spider getSpider(Map params) { - if (!params.containsKey("siteKey")) return new SpiderNull(); Live live = LiveConfig.get().getLive(params.get("siteKey")); Site site = VodConfig.get().getSite(params.get("siteKey")); if (!site.isEmpty()) return site.spider(); @@ -75,14 +74,11 @@ public class BaseLoader { else if (csp) jarLoader.setRecent(Util.md5(jar)); } - public Object[] proxyLocal(Map params) { - if ("js".equals(params.get("do"))) { - return jsLoader.proxyInvoke(params); - } else if ("py".equals(params.get("do"))) { - return pyLoader.proxyInvoke(params); - } else { - return jarLoader.proxyInvoke(params); - } + public Object[] proxyLocal(Map params) throws Exception { + if (params.containsKey("siteKey")) return BaseLoader.get().getSpider(params).proxyLocal(params); + if ("js".equals(params.get("do"))) return jsLoader.proxyInvoke(params); + if ("py".equals(params.get("do"))) return pyLoader.proxyInvoke(params); + return jarLoader.proxyInvoke(params); } public void parseJar(String jar, boolean recent) { diff --git a/app/src/main/java/com/fongmi/android/tv/api/loader/JarLoader.java b/app/src/main/java/com/fongmi/android/tv/api/loader/JarLoader.java index ed97e858b..1dc92d38f 100644 --- a/app/src/main/java/com/fongmi/android/tv/api/loader/JarLoader.java +++ b/app/src/main/java/com/fongmi/android/tv/api/loader/JarLoader.java @@ -114,6 +114,7 @@ public class JarLoader { if (spiders.containsKey(spKey)) return spiders.get(spKey); if (!loaders.containsKey(jaKey)) parseJar(jaKey, jar); Spider spider = (Spider) loaders.get(jaKey).loadClass("com.github.catvod.spider." + api.split("csp_")[1]).newInstance(); + spider.siteKey = key; spider.init(App.get(), ext); spiders.put(spKey, spider); return spider; diff --git a/app/src/main/java/com/fongmi/android/tv/api/loader/JsLoader.java b/app/src/main/java/com/fongmi/android/tv/api/loader/JsLoader.java index 4bc955179..2ebb88dc6 100644 --- a/app/src/main/java/com/fongmi/android/tv/api/loader/JsLoader.java +++ b/app/src/main/java/com/fongmi/android/tv/api/loader/JsLoader.java @@ -31,7 +31,8 @@ public class JsLoader { public Spider getSpider(String key, String api, String ext, String jar) { try { if (spiders.containsKey(key)) return spiders.get(key); - Spider spider = loader.spider(key, api, BaseLoader.get().dex(jar)); + Spider spider = loader.spider(api, BaseLoader.get().dex(jar)); + spider.siteKey = key; spider.init(App.get(), ext); spiders.put(key, spider); return spider; @@ -41,13 +42,7 @@ public class JsLoader { } } - public Object[] proxyInvoke(Map params) { - try { - if (!params.containsKey("siteKey")) return spiders.get(recent).proxyLocal(params); - return BaseLoader.get().getSpider(params).proxyLocal(params); - } catch (Throwable e) { - e.printStackTrace(); - return null; - } + public Object[] proxyInvoke(Map params) throws Exception { + return spiders.get(recent).proxyLocal(params); } } diff --git a/app/src/main/java/com/fongmi/android/tv/api/loader/PyLoader.java b/app/src/main/java/com/fongmi/android/tv/api/loader/PyLoader.java index e96a327b2..3774bb06d 100644 --- a/app/src/main/java/com/fongmi/android/tv/api/loader/PyLoader.java +++ b/app/src/main/java/com/fongmi/android/tv/api/loader/PyLoader.java @@ -32,6 +32,7 @@ public class PyLoader { try { if (spiders.containsKey(key)) return spiders.get(key); Spider spider = loader.spider(api); + spider.siteKey = key; spider.init(App.get(), ext); spiders.put(key, spider); return spider; @@ -41,13 +42,7 @@ public class PyLoader { } } - public Object[] proxyInvoke(Map params) { - try { - if (!params.containsKey("siteKey")) return spiders.get(recent).proxyLocal(params); - return BaseLoader.get().getSpider(params).proxyLocal(params); - } catch (Throwable e) { - e.printStackTrace(); - return null; - } + public Object[] proxyInvoke(Map params) throws Exception { + return spiders.get(recent).proxyLocal(params); } } diff --git a/catvod/src/main/java/com/github/catvod/crawler/Spider.java b/catvod/src/main/java/com/github/catvod/crawler/Spider.java index 8b8e39fe4..dfccc62d9 100644 --- a/catvod/src/main/java/com/github/catvod/crawler/Spider.java +++ b/catvod/src/main/java/com/github/catvod/crawler/Spider.java @@ -13,6 +13,8 @@ import okhttp3.OkHttpClient; public abstract class Spider { + public String siteKey; + public void init(Context context) throws Exception { } diff --git a/quickjs/src/main/java/com/fongmi/quickjs/crawler/Loader.java b/quickjs/src/main/java/com/fongmi/quickjs/crawler/Loader.java index 78f15cbe0..e02d166b1 100644 --- a/quickjs/src/main/java/com/fongmi/quickjs/crawler/Loader.java +++ b/quickjs/src/main/java/com/fongmi/quickjs/crawler/Loader.java @@ -10,7 +10,7 @@ public class Loader { QuickJSLoader.init(); } - public Spider spider(String key, String api, DexClassLoader dex) { - return new Spider(key, api, dex); + public Spider spider(String api, DexClassLoader dex) { + return new Spider(api, dex); } } diff --git a/quickjs/src/main/java/com/fongmi/quickjs/crawler/Spider.java b/quickjs/src/main/java/com/fongmi/quickjs/crawler/Spider.java index c07784825..4e089f395 100644 --- a/quickjs/src/main/java/com/fongmi/quickjs/crawler/Spider.java +++ b/quickjs/src/main/java/com/fongmi/quickjs/crawler/Spider.java @@ -38,13 +38,11 @@ public class Spider extends com.github.catvod.crawler.Spider { private final DexClassLoader dex; private QuickJSContext ctx; private JSObject jsObject; - private final String key; private final String api; private boolean cat; - public Spider(String key, String api, DexClassLoader dex) { + public Spider(String api, DexClassLoader dex) { this.executor = Executors.newSingleThreadExecutor(); - this.key = key; this.api = api; this.dex = dex; } @@ -201,7 +199,7 @@ public class Spider extends com.github.catvod.crawler.Spider { private JSObject cfg(String ext) { JSObject cfg = ctx.createNewJSObject(); cfg.setProperty("stype", 3); - cfg.setProperty("skey", key); + cfg.setProperty("skey", siteKey); if (!Json.isObj(ext)) cfg.setProperty("ext", ext); else cfg.setProperty("ext", (JSObject) ctx.parse(ext)); return cfg;