diff --git a/app/src/main/java/com/fongmi/android/tv/api/JarLoader.java b/app/src/main/java/com/fongmi/android/tv/api/JarLoader.java index 8ba131443..6ea6c17ba 100644 --- a/app/src/main/java/com/fongmi/android/tv/api/JarLoader.java +++ b/app/src/main/java/com/fongmi/android/tv/api/JarLoader.java @@ -71,13 +71,12 @@ public class JarLoader { public Spider getSpider(String key, String api, String ext, String jar) { try { - current = jar.isEmpty() ? baseJar : jar; - if (spiders.containsKey(current + key)) return spiders.get(current + key); + String spKey = (current = jar.isEmpty() ? baseJar : jar) + key; + if (spiders.containsKey(spKey)) return spiders.get(spKey); if (!loaders.containsKey(current)) parseJar(current); - api = api.replace("csp_", ""); - Spider spider = (Spider) loaders.get(current).loadClass("com.github.catvod.spider." + api).newInstance(); + Spider spider = (Spider) loaders.get(current).loadClass("com.github.catvod.spider." + api.replace("csp_", "")).newInstance(); spider.init(App.get(), ext); - spiders.put(current + key, spider); + spiders.put(spKey, spider); return spider; } catch (Exception e) { e.printStackTrace(); @@ -113,7 +112,7 @@ public class JarLoader { public Object[] proxyInvoke(Map params) { try { - Method proxyFun = methods.get(current); + Method proxyFun = methods.get(current = current.isEmpty() ? baseJar : current); if (proxyFun != null) return (Object[]) proxyFun.invoke(null, params); else return null; } catch (Exception e) { diff --git a/app/src/main/java/com/fongmi/android/tv/player/ParseTask.java b/app/src/main/java/com/fongmi/android/tv/player/ParseTask.java index 231d28d85..999470870 100644 --- a/app/src/main/java/com/fongmi/android/tv/player/ParseTask.java +++ b/app/src/main/java/com/fongmi/android/tv/player/ParseTask.java @@ -8,6 +8,7 @@ import com.fongmi.android.tv.api.ApiConfig; import com.fongmi.android.tv.bean.Parse; import com.fongmi.android.tv.bean.Result; import com.fongmi.android.tv.net.OKHttp; +import com.fongmi.android.tv.server.Server; import com.fongmi.android.tv.ui.custom.CustomWebView; import com.fongmi.android.tv.utils.Json; import com.google.gson.JsonObject; @@ -104,7 +105,7 @@ public class ParseTask { if (result.getUrl().isEmpty()) { onParseError(); } else if (result.getParse(0) == 1) { - handler.post(() -> webView.start(result.getUrl(), callback)); + handler.post(() -> webView.start(Server.proxy(result.getUrl()), callback)); } else { onParseSuccess(result.getHeaders(), result.getUrl(), result.getJxFrom()); } diff --git a/app/src/main/java/com/fongmi/android/tv/server/Server.java b/app/src/main/java/com/fongmi/android/tv/server/Server.java index 6a5faaff9..d3747733a 100644 --- a/app/src/main/java/com/fongmi/android/tv/server/Server.java +++ b/app/src/main/java/com/fongmi/android/tv/server/Server.java @@ -34,6 +34,11 @@ public class Server implements Nano.Listener { return "http://" + (local ? "127.0.0.1" : getIP()) + ":" + port; } + public static String proxy(String url) { + if (url.startsWith("proxy://")) return url.replace("proxy://", get().getAddress(true) + "/proxy?"); + return url; + } + public void start() { if (nano != null) return; do {