From 0d5c25aa1726a681c144280a8a0d1741c2f043b9 Mon Sep 17 00:00:00 2001 From: jun <215613905@qq.com> Date: Sat, 19 Apr 2025 00:18:16 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/github/tvbox/osc/api/ApiConfig.java | 6 +++-- .../com/github/tvbox/osc/bean/VodInfo.java | 5 ++-- .../github/tvbox/osc/server/RemoteServer.java | 4 ++- .../osc/ui/activity/LivePlayActivity.java | 6 +++-- .../com/github/tvbox/osc/util/FileUtils.java | 8 +++--- .../java/com/github/tvbox/osc/util/M3u8.java | 11 ++------ .../com/github/tvbox/osc/util/RegexUtils.java | 27 +++++++++++++++++++ .../tvbox/osc/util/VideoParseRuler.java | 6 +++-- gradle.properties | 2 +- 9 files changed, 51 insertions(+), 24 deletions(-) create mode 100644 app/src/main/java/com/github/tvbox/osc/util/RegexUtils.java 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 561566cc..80813e10 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 @@ -1,5 +1,7 @@ package com.github.tvbox.osc.api; +import static com.github.tvbox.osc.util.RegexUtils.getPattern; + import android.app.Activity; import android.net.Uri; import android.text.TextUtils; @@ -112,7 +114,7 @@ public class ApiConfig { String content = json; try { if (AES.isJson(content)) return content; - Pattern pattern = Pattern.compile("[A-Za-z0]{8}\\*\\*"); + Pattern pattern = getPattern("[A-Za-z0]{8}\\*\\*"); Matcher matcher = pattern.matcher(content); if(matcher.find()){ content=content.substring(content.indexOf(matcher.group()) + 10); @@ -137,7 +139,7 @@ public class ApiConfig { } private static byte[] getImgJar(String body){ - Pattern pattern = Pattern.compile("[A-Za-z0]{8}\\*\\*"); + Pattern pattern = getPattern("[A-Za-z0]{8}\\*\\*"); Matcher matcher = pattern.matcher(body); if(matcher.find()){ body = body.substring(body.indexOf(matcher.group()) + 10); diff --git a/app/src/main/java/com/github/tvbox/osc/bean/VodInfo.java b/app/src/main/java/com/github/tvbox/osc/bean/VodInfo.java index 3d5ec4ae..a5fe3e87 100644 --- a/app/src/main/java/com/github/tvbox/osc/bean/VodInfo.java +++ b/app/src/main/java/com/github/tvbox/osc/bean/VodInfo.java @@ -1,11 +1,10 @@ package com.github.tvbox.osc.bean; -import com.github.tvbox.osc.api.ApiConfig; +import static com.github.tvbox.osc.util.RegexUtils.getPattern; import java.io.Serializable; import java.util.ArrayList; import java.util.Collections; -import java.util.Comparator; import java.util.LinkedHashMap; import java.util.List; import java.util.Set; @@ -95,7 +94,7 @@ public class VodInfo implements Serializable { } private int extractNumber(String name) { - java.util.regex.Matcher matcher = java.util.regex.Pattern.compile("\\d+").matcher(name); + java.util.regex.Matcher matcher = getPattern("\\d+").matcher(name); if (matcher.find()) { return Integer.parseInt(matcher.group()); } diff --git a/app/src/main/java/com/github/tvbox/osc/server/RemoteServer.java b/app/src/main/java/com/github/tvbox/osc/server/RemoteServer.java index 487cf6eb..c29e936c 100644 --- a/app/src/main/java/com/github/tvbox/osc/server/RemoteServer.java +++ b/app/src/main/java/com/github/tvbox/osc/server/RemoteServer.java @@ -1,5 +1,7 @@ package com.github.tvbox.osc.server; +import static com.github.tvbox.osc.util.RegexUtils.getPattern; + import android.annotation.SuppressLint; import android.content.Context; import android.net.wifi.WifiManager; @@ -214,7 +216,7 @@ public class RemoteServer extends NanoHTTPD { if (hd != null) { // cuke: 修正中文乱码问题 if (hd.toLowerCase().contains("multipart/form-data") && !hd.toLowerCase().contains("charset=")) { - Matcher matcher = Pattern.compile("[ |\t]*(boundary[ |\t]*=[ |\t]*['|\"]?[^\"^'^;^,]*['|\"]?)", Pattern.CASE_INSENSITIVE).matcher(hd); + Matcher matcher = getPattern("[ |\t]*(boundary[ |\t]*=[ |\t]*['|\"]?[^\"^'^;^,]*['|\"]?)", Pattern.CASE_INSENSITIVE).matcher(hd); String boundary = matcher.find() ? matcher.group(1) : null; if (boundary != null) { session.getHeaders().put("content-type", "multipart/form-data; charset=utf-8; " + boundary); diff --git a/app/src/main/java/com/github/tvbox/osc/ui/activity/LivePlayActivity.java b/app/src/main/java/com/github/tvbox/osc/ui/activity/LivePlayActivity.java index 2b8da654..13e4b0e1 100644 --- a/app/src/main/java/com/github/tvbox/osc/ui/activity/LivePlayActivity.java +++ b/app/src/main/java/com/github/tvbox/osc/ui/activity/LivePlayActivity.java @@ -1,5 +1,7 @@ package com.github.tvbox.osc.ui.activity; +import static com.github.tvbox.osc.util.RegexUtils.getPattern; + import android.Manifest; import android.animation.Animator; import android.animation.AnimatorListenerAdapter; @@ -1177,7 +1179,7 @@ public class LivePlayActivity extends BaseActivity { String startHHmm = selectedData.originStart.replace(":", ""); String endHHmm = selectedData.originEnd.replace(":", ""); // 正则表达式:匹配 ${(b)...} 或 ${(e)...} - Pattern pattern = Pattern.compile("\\$\\{\\((b|e)\\)(.*?)\\}"); + Pattern pattern = getPattern("\\$\\{\\((b|e)\\)(.*?)\\}"); Matcher matcher = pattern.matcher(source); Map valueMap = new HashMap<>(); valueMap.put("b", targetDate + "T" + startHHmm); @@ -1288,7 +1290,7 @@ public class LivePlayActivity extends BaseActivity { String startHHmm = selectedData.originStart.replace(":", ""); String endHHmm = selectedData.originEnd.replace(":", ""); // 正则表达式:匹配 ${(b)...} 或 ${(e)...} - Pattern pattern = Pattern.compile("\\$\\{\\((b|e)\\)(.*?)\\}"); + Pattern pattern = getPattern("\\$\\{\\((b|e)\\)(.*?)\\}"); Matcher matcher = pattern.matcher(source); Map valueMap = new HashMap<>(); valueMap.put("b", targetDate + "T" + startHHmm); diff --git a/app/src/main/java/com/github/tvbox/osc/util/FileUtils.java b/app/src/main/java/com/github/tvbox/osc/util/FileUtils.java index fe8ebbe7..eafcf4db 100644 --- a/app/src/main/java/com/github/tvbox/osc/util/FileUtils.java +++ b/app/src/main/java/com/github/tvbox/osc/util/FileUtils.java @@ -267,6 +267,7 @@ public class FileUtils { } else if (name.contains("cat.js")) { name = "cat.js"; } + LOG.i("echo-loadModule "+name); Matcher m = URL_JOIN.matcher(name); if (m.find()) { if (!Hawk.get(HawkConfig.DEBUG_OPEN, false)) { @@ -347,11 +348,10 @@ public class FileUtils { return ""; } JsonObject asJsonObject = (new Gson().fromJson(code, JsonObject.class)).getAsJsonObject(); - if (((long) asJsonObject.get("expires").getAsInt()) > System.currentTimeMillis() / 1000) { - return asJsonObject.get("data").getAsString(); + if (((long) asJsonObject.get("expires").getAsInt()) <= System.currentTimeMillis() / 1000) { + recursiveDelete(open(name)); } - recursiveDelete(open(name)); - return ""; + return asJsonObject.get("data").getAsString(); } catch (Exception e4) { return ""; } diff --git a/app/src/main/java/com/github/tvbox/osc/util/M3u8.java b/app/src/main/java/com/github/tvbox/osc/util/M3u8.java index 1e77de48..4fae06f9 100644 --- a/app/src/main/java/com/github/tvbox/osc/util/M3u8.java +++ b/app/src/main/java/com/github/tvbox/osc/util/M3u8.java @@ -1,5 +1,7 @@ package com.github.tvbox.osc.util; +import static com.github.tvbox.osc.util.RegexUtils.getPattern; + import com.google.android.exoplayer2.util.UriUtil; import java.math.BigDecimal; @@ -238,15 +240,6 @@ public class M3u8 { return scan ? scan(line, ads) : line; } - private static final Map patternCache = new HashMap<>(); - private static Pattern getPattern(String regex) { - Pattern pattern = patternCache.get(regex); - if (pattern == null) { - pattern = Pattern.compile(regex); - patternCache.put(regex, pattern); - } - return pattern; - } private static String scanAd(String line,String TAG_AD) { Matcher m1 = getPattern(TAG_AD).matcher(line); List needRemoveAd = new ArrayList<>(); diff --git a/app/src/main/java/com/github/tvbox/osc/util/RegexUtils.java b/app/src/main/java/com/github/tvbox/osc/util/RegexUtils.java new file mode 100644 index 00000000..9c2542fc --- /dev/null +++ b/app/src/main/java/com/github/tvbox/osc/util/RegexUtils.java @@ -0,0 +1,27 @@ +package com.github.tvbox.osc.util; + +import java.util.HashMap; +import java.util.Map; +import java.util.regex.Pattern; + +public class RegexUtils { + + private static final Map patternCache = new HashMap<>(); + public static Pattern getPattern(String regex) { + Pattern pattern = patternCache.get(regex); + if (pattern == null) { + pattern = Pattern.compile(regex); + patternCache.put(regex, pattern); + } + return pattern; + } + + public static Pattern getPattern(String regex,int flag) { + Pattern pattern = patternCache.get(regex); + if (pattern == null) { + pattern = Pattern.compile(regex,flag); + patternCache.put(regex, pattern); + } + return pattern; + } +} diff --git a/app/src/main/java/com/github/tvbox/osc/util/VideoParseRuler.java b/app/src/main/java/com/github/tvbox/osc/util/VideoParseRuler.java index 1d8da538..ffe279d8 100644 --- a/app/src/main/java/com/github/tvbox/osc/util/VideoParseRuler.java +++ b/app/src/main/java/com/github/tvbox/osc/util/VideoParseRuler.java @@ -1,5 +1,7 @@ package com.github.tvbox.osc.util; +import static com.github.tvbox.osc.util.RegexUtils.getPattern; + import android.net.Uri; import java.util.ArrayList; import java.util.HashMap; @@ -88,7 +90,7 @@ public class VideoParseRuler { boolean checkIsVideo = true; if (hostRules.get(i) != null && hostRules.get(i).size() > 0) { for(int j=0; j 0) { for(int j=0; j