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 e0c1f8891..8487753d5 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 @@ -108,20 +108,20 @@ public class JarLoader { } public Spider getSpider(String key, String api, String ext, String jar) { - try { - String jaKey = Util.md5(jar); - String spKey = jaKey + key; - 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; - } catch (Throwable e) { - e.printStackTrace(); - return new SpiderNull(); - } + String jaKey = Util.md5(jar); + String spKey = jaKey + key; + return spiders.computeIfAbsent(spKey, k -> { + try { + 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); + return spider; + } catch (Throwable e) { + e.printStackTrace(); + return new SpiderNull(); + } + }); } public JSONObject jsonExt(String key, LinkedHashMap jxs, String url) throws Throwable { @@ -137,9 +137,10 @@ public class JarLoader { } public Object[] proxy(Map params) throws Exception { - if (recent == null) return tryOthers(params); - Object[] result = proxyInvoke(methods.get(recent), params); - return result != null ? result : tryOthers(params); + Method method = recent != null ? methods.get(recent) : null; + Object[] result = proxyInvoke(method, params); + if (result != null) return result; + return tryOthers(params); } private Object[] tryOthers(Map p) { @@ -148,7 +149,7 @@ public class JarLoader { private Object[] proxyInvoke(Method method, Map params) { try { - return (Object[]) method.invoke(null, params); + return method == null ? null : (Object[]) method.invoke(null, params); } catch (Throwable e) { e.printStackTrace(); return null; 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 368d9fd82..bd56d75fb 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 @@ -29,20 +29,22 @@ 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(api, BaseLoader.get().dex(jar)); - spider.siteKey = key; - spider.init(App.get(), ext); - spiders.put(key, spider); - return spider; - } catch (Throwable e) { - e.printStackTrace(); - return new SpiderNull(); - } + return spiders.computeIfAbsent(key, k -> { + try { + Spider spider = loader.spider(api, BaseLoader.get().dex(jar)); + spider.siteKey = key; + spider.init(App.get(), ext); + return spider; + } catch (Throwable e) { + e.printStackTrace(); + return new SpiderNull(); + } + }); } public Object[] proxy(Map params) throws Exception { - return spiders.get(recent).proxy(params); + if (recent == null) return null; + Spider spider = spiders.get(recent); + return spider != null ? spider.proxy(params) : null; } } 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 dc766adb4..956836980 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 @@ -29,20 +29,22 @@ public class PyLoader { } public Spider getSpider(String key, String api, String ext) { - 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; - } catch (Throwable e) { - e.printStackTrace(); - return new SpiderNull(); - } + return spiders.computeIfAbsent(key, k -> { + try { + Spider spider = loader.spider(api); + spider.siteKey = key; + spider.init(App.get(), ext); + return spider; + } catch (Throwable e) { + e.printStackTrace(); + return new SpiderNull(); + } + }); } public Object[] proxy(Map params) throws Exception { - return spiders.get(recent).proxy(params); + if (recent == null) return null; + Spider spider = spiders.get(recent); + return spider != null ? spider.proxy(params) : null; } }