pull/605/head
jhengazuji 5 months ago
parent d61be8aa56
commit 825f3d11c0
  1. 4
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/VideoActivity.java
  2. 46
      app/src/leanback/java/com/fongmi/android/tv/utils/PartUtil.java
  3. 2
      app/src/main/java/com/fongmi/android/tv/player/ParseJob.java
  4. 22
      app/src/main/java/com/fongmi/android/tv/utils/Util.java

@ -76,10 +76,10 @@ import com.fongmi.android.tv.utils.FileChooser;
import com.fongmi.android.tv.utils.ImgUtil;
import com.fongmi.android.tv.utils.KeyUtil;
import com.fongmi.android.tv.utils.Notify;
import com.fongmi.android.tv.utils.PartUtil;
import com.fongmi.android.tv.utils.ResUtil;
import com.fongmi.android.tv.utils.Sniffer;
import com.fongmi.android.tv.utils.Traffic;
import com.fongmi.android.tv.utils.Util;
import com.github.bassaer.library.MDColor;
import com.github.catvod.utils.Trans;
@ -922,7 +922,7 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List
}
private void setPartAdapter() {
mPartAdapter.setItems(Util.getPart(mHistory.getVodName()), null);
mPartAdapter.setItems(PartUtil.split(mHistory.getVodName()), null);
mBinding.part.setVisibility(View.VISIBLE);
setR2Callback();
}

@ -0,0 +1,46 @@
package com.fongmi.android.tv.utils;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class PartUtil {
private static final Pattern PATTERN_SEASON = Pattern.compile("^(.*?)第");
private static final Pattern PATTERN_YEAR = Pattern.compile("^(.*)(19|20)\\d{2}$");
public static List<String> split(String text) {
Set<String> items = new LinkedHashSet<>();
String[] rawSplits;
if (text.contains(":")) rawSplits = text.split(":");
else if (text.contains("第") && text.contains("季")) rawSplits = extractSeason(text);
else if (text.contains("(")) rawSplits = new String[]{text.split(Pattern.quote("("))[0]};
else if (text.contains(" ")) rawSplits = text.split(" ");
else rawSplits = extractYear(text);
items.add(text);
Arrays.stream(rawSplits).map(String::trim).map(s -> s.contains(" ") ? s.split(" ")[0].trim() : s).filter(s -> !s.isEmpty()).forEach(items::add);
return new ArrayList<>(items);
}
private static String[] extractSeason(String text) {
Matcher matcher = PATTERN_SEASON.matcher(text);
if (matcher.find()) {
String s = matcher.group(1).trim();
if (!s.isEmpty()) return new String[]{s};
}
return Arrays.stream(text.split("第")).filter(s -> !s.isEmpty() && !s.contains("季")).toArray(String[]::new);
}
private static String[] extractYear(String text) {
Matcher matcher = PATTERN_YEAR.matcher(text);
if (matcher.find()) {
String s = matcher.group(1).trim();
if (!s.isEmpty()) return new String[]{s};
}
return new String[0];
}
}

@ -187,8 +187,8 @@ public class ParseJob implements ParseCallback {
private void startWeb(String key, String from, Map<String, String> headers, String url, String click) {
if (WebViewUtil.support()) {
App.post(() -> webViews.add(CustomWebView.create(App.get()).start(key, from, headers, url, click, this, !url.contains("player/?url="))));
App.get().setSniff(true);
App.post(() -> webViews.add(CustomWebView.create(App.get()).start(key, from, headers, url, click, this, !url.contains("player/?url="))));
} else {
onParseError();
}

@ -30,7 +30,6 @@ import com.github.catvod.utils.Shell;
import java.net.NetworkInterface;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.Formatter;
import java.util.List;
@ -111,27 +110,6 @@ public class Util {
}
}
public static List<String> getPart(String text) {
List<String> items = new ArrayList<>();
String[] splits = new String[0];
items.add(text);
if (text.contains(":")) {
splits = text.split(":");
} else if (text.contains("第") && text.contains("季")) {
splits = Arrays.stream(text.split("第")).filter(s -> !s.isEmpty() && !s.contains("季")).toArray(String[]::new);
} else if (text.contains("(")) {
splits = new String[]{text.split("\\(")[0]};
} else if (text.contains(" ")) {
splits = text.split(" ");
}
for (String s : splits) {
s = s.trim();
if (s.contains(" ")) s = s.split(" ")[0].trim();
if (!s.isEmpty()) items.add(s);
}
return items;
}
public static String clean(String text) {
StringBuilder sb = new StringBuilder();
text = Html.fromHtml(text, Html.FROM_HTML_MODE_LEGACY).toString().replace("\u00A0", "").replace("\u3000", "");

Loading…
Cancel
Save