main
jun 12 months ago
parent 32df47aa3e
commit 0d5c25aa17
  1. 6
      app/src/main/java/com/github/tvbox/osc/api/ApiConfig.java
  2. 5
      app/src/main/java/com/github/tvbox/osc/bean/VodInfo.java
  3. 4
      app/src/main/java/com/github/tvbox/osc/server/RemoteServer.java
  4. 6
      app/src/main/java/com/github/tvbox/osc/ui/activity/LivePlayActivity.java
  5. 8
      app/src/main/java/com/github/tvbox/osc/util/FileUtils.java
  6. 11
      app/src/main/java/com/github/tvbox/osc/util/M3u8.java
  7. 27
      app/src/main/java/com/github/tvbox/osc/util/RegexUtils.java
  8. 6
      app/src/main/java/com/github/tvbox/osc/util/VideoParseRuler.java
  9. 2
      gradle.properties

@ -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);

@ -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());
}

@ -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);

@ -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<String, String> 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<String, String> valueMap = new HashMap<>();
valueMap.put("b", targetDate + "T" + startHHmm);

@ -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 "";
}

@ -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<String, Pattern> 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<String> needRemoveAd = new ArrayList<>();

@ -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<String, Pattern> 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;
}
}

@ -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<hostRules.get(i).size(); j++) {
Pattern onePattern = Pattern.compile("" + hostRules.get(i).get(j));
Pattern onePattern = getPattern("" + hostRules.get(i).get(j));
if (!onePattern.matcher(url).find()) {
checkIsVideo = false;
break;
@ -135,7 +137,7 @@ public class VideoParseRuler {
boolean checkIsFilter = true;
if (hostFilters.get(i) != null && hostFilters.get(i).size() > 0) {
for(int j=0; j<hostFilters.get(i).size(); j++) {
Pattern onePattern = Pattern.compile("" + hostFilters.get(i).get(j));
Pattern onePattern = getPattern("" + hostFilters.get(i).get(j));
if (!onePattern.matcher(url).find()) {
checkIsFilter = false;
break;

@ -18,4 +18,4 @@ android.useAndroidX=true
android.enableJetifier=true
IsDebug=true
#build on off
org.gradle.jvmargs=-Xmx2048m --add-opens java.base/java.io=ALL-UNNAMED
#org.gradle.jvmargs=-Xmx2048m --add-opens java.base/java.io=ALL-UNNAMED
Loading…
Cancel
Save