From b033ec4539437f6527b286ac658c242a9aff27b3 Mon Sep 17 00:00:00 2001 From: jun <215613905@qq.com> Date: Mon, 24 Mar 2025 20:58:51 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E5=96=84python=E7=BC=93=E5=AD=98;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/github/catvod/crawler/PyLoader.java | 20 +++++---- .../com/github/tvbox/osc/api/ApiConfig.java | 41 +++++++------------ .../tvbox/osc/ui/activity/HomeActivity.java | 1 + 3 files changed, 29 insertions(+), 33 deletions(-) diff --git a/app/src/main/java/com/github/catvod/crawler/PyLoader.java b/app/src/main/java/com/github/catvod/crawler/PyLoader.java index ad395cfb..137d9444 100644 --- a/app/src/main/java/com/github/catvod/crawler/PyLoader.java +++ b/app/src/main/java/com/github/catvod/crawler/PyLoader.java @@ -1,29 +1,35 @@ package com.github.catvod.crawler; +import android.util.Log; + import com.github.tvbox.osc.base.App; import com.undcover.freedom.pyramid.PythonLoader; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; public class PyLoader { private final PythonLoader pythonLoader = PythonLoader.getInstance().setApplication(App.getInstance()); - private static ConcurrentHashMap spiders = new ConcurrentHashMap<>(); + private static final ConcurrentHashMap spiders = new ConcurrentHashMap<>(); private String lastConfig = null; // 记录上次的配置 - + public void clear() { + spiders.clear(); + } public void setConfig(String jsonStr) { if (jsonStr != null && !jsonStr.equals(lastConfig)) { + Log.i("PyLoader","echo-setConfig 初始化json "); pythonLoader.setConfig(jsonStr); lastConfig = jsonStr; } } public Spider getSpider(String key, String cls, String ext) { - if (spiders.containsKey(key)) -// Log.i("PyLoader", "echo-getSpider spider缓存: " + key); -// LOG.i(""); + if (spiders.containsKey(key)){ + Log.i("PyLoader","echo-getSpider spider缓存: " + key); return spiders.get(key); + } try { Spider sp = pythonLoader.getSpider(key, getPyUrl(cls,ext)); spiders.put(key, sp); + Log.i("PyLoader","echo-getSpider 加载spider: " + key); return sp; } catch (Throwable th) { th.printStackTrace(); @@ -31,12 +37,12 @@ public class PyLoader { return new SpiderNull(); } - public Object[] proxyInvoke(String key,String url,Map params) { + public Object[] proxyInvoke(Map params,String key,String api,String ext) { try { String doStr = params.get("do"); assert doStr != null; if (doStr.equals("ck") || doStr.equals("live"))return pythonLoader.proxyLocal("", "", params); - return (Object[]) pythonLoader.proxyLocal(key, url, params); + return (Object[]) pythonLoader.proxyLocal(key, getPyUrl(api,ext), params); } catch (Throwable th) { th.printStackTrace(); } diff --git a/app/src/main/java/com/github/tvbox/osc/api/ApiConfig.java b/app/src/main/java/com/github/tvbox/osc/api/ApiConfig.java index 4bb4ab94..2f370f17 100644 --- a/app/src/main/java/com/github/tvbox/osc/api/ApiConfig.java +++ b/app/src/main/java/com/github/tvbox/osc/api/ApiConfig.java @@ -37,8 +37,6 @@ import com.lzy.okgo.callback.AbsCallback; import com.lzy.okgo.model.Response; import com.orhanobut.hawk.Hawk; -import com.github.catvod.crawler.SpiderNull; - import org.json.JSONObject; import java.io.BufferedReader; @@ -64,11 +62,11 @@ import java.util.regex.Pattern; */ public class ApiConfig { private static ApiConfig instance; - private LinkedHashMap sourceBeanList; + private final LinkedHashMap sourceBeanList; private SourceBean mHomeSource; private ParseBean mDefaultParse; - private List liveChannelGroupList; - private List parseBeanList; + private final List liveChannelGroupList; + private final List parseBeanList; private List vipParseFlags; private Map myHosts; private List ijkCodes; @@ -88,7 +86,7 @@ public class ApiConfig { private String defaultLiveObjString="{\"lives\":[{\"name\":\"txt_m3u\",\"type\":0,\"url\":\"txt_m3u_url\"}]}"; private ApiConfig() { - jarLoader.clear(); + clearLoader(); sourceBeanList = new LinkedHashMap<>(); liveChannelGroupList = new ArrayList<>(); parseBeanList = new ArrayList<>(); @@ -877,22 +875,19 @@ public class ApiConfig { } public Spider getCSP(SourceBean sourceBean) { - boolean js = sourceBean.getApi().endsWith(".js") || sourceBean.getApi().contains(".js?"); - if (js) return jsLoader.getSpider(sourceBean.getKey(), sourceBean.getApi(), sourceBean.getExt(), sourceBean.getJar()); - if (sourceBean.getKey().startsWith("py_") || sourceBean.getApi().endsWith(".py")) { - try { - return pyLoader.getSpider(sourceBean.getKey(), sourceBean.getApi(), sourceBean.getExt()); - } catch (Exception e) { - return new SpiderNull(); - } + if (sourceBean.getApi().endsWith(".js") || sourceBean.getApi().contains(".js?")){ + return jsLoader.getSpider(sourceBean.getKey(), sourceBean.getApi(), sourceBean.getExt(), sourceBean.getJar()); } - return jarLoader.getSpider(sourceBean.getKey(), sourceBean.getApi(), sourceBean.getExt(), sourceBean.getJar()); + else if (sourceBean.getKey().startsWith("py_")) { + return pyLoader.getSpider(sourceBean.getKey(), sourceBean.getApi(), sourceBean.getExt()); + } + else return jarLoader.getSpider(sourceBean.getKey(), sourceBean.getApi(), sourceBean.getExt(), sourceBean.getJar()); } public Object[] proxyLocal(Map param) { SourceBean sourceBean = ApiConfig.get().getHomeSourceBean(); - if (sourceBean.getKey().startsWith("py_") || sourceBean.getApi().endsWith(".py")) { - return pyLoader.proxyInvoke(sourceBean.getKey(), getPyUrl(sourceBean), param); + if (sourceBean.getKey().startsWith("py_")) { + return pyLoader.proxyInvoke(param,sourceBean.getKey(),sourceBean.getApi(),sourceBean.getExt()); }else { return jarLoader.proxyInvoke(param); } @@ -1047,14 +1042,8 @@ public class ApiConfig { parseBeanList.add(0, superPb); } - private String getPyUrl(SourceBean sb) - { - String api = sb.getApi(); - String ext = sb.getExt(); - StringBuilder urlBuilder = new StringBuilder(api); - if (!ext.isEmpty()) { - urlBuilder.append(api.contains("?") ? "&" : "?").append("extend=").append(ext); - } - return urlBuilder.toString(); + public void clearLoader(){ + jarLoader.clear(); + pyLoader.clear(); } } diff --git a/app/src/main/java/com/github/tvbox/osc/ui/activity/HomeActivity.java b/app/src/main/java/com/github/tvbox/osc/ui/activity/HomeActivity.java index c0dbc520..90e49f92 100644 --- a/app/src/main/java/com/github/tvbox/osc/ui/activity/HomeActivity.java +++ b/app/src/main/java/com/github/tvbox/osc/ui/activity/HomeActivity.java @@ -239,6 +239,7 @@ public class HomeActivity extends BaseActivity { File cspCacheDir = new File(cspCachePath + MD5.string2MD5(jarUrl)+".jar"); Toast.makeText(mContext, "jar缓存已清除", Toast.LENGTH_LONG).show(); if (!cspCacheDir.exists()){ + refreshHome(); return; } new Thread(() -> {