diff --git a/app/src/main/java/com/fongmi/android/tv/api/LiveParser.java b/app/src/main/java/com/fongmi/android/tv/api/LiveParser.java index 5f4293f13..63b304f44 100644 --- a/app/src/main/java/com/fongmi/android/tv/api/LiveParser.java +++ b/app/src/main/java/com/fongmi/android/tv/api/LiveParser.java @@ -82,7 +82,10 @@ public class LiveParser { channel = group.find(Channel.create(extract(line, NAME))); channel.setTvgName(extract(line, TVG_NAME)); channel.setLogo(extract(line, TVG_LOGO)); - channel.setCatchup(catchup); + Catchup unknown = Catchup.create(); + unknown.setType(extract(line, CATCHUP)); + unknown.setSource(extract(line, CATCHUP_SOURCE)); + channel.setCatchup(Catchup.decide(unknown, catchup)); } else if (!line.startsWith("#") && line.contains("://")) { String[] split = line.split("\\|"); if (split.length > 1) setting.headers(Arrays.copyOfRange(split, 1, split.length)); diff --git a/app/src/main/java/com/fongmi/android/tv/bean/Catchup.java b/app/src/main/java/com/fongmi/android/tv/bean/Catchup.java index eb73aea67..5414f8c08 100644 --- a/app/src/main/java/com/fongmi/android/tv/bean/Catchup.java +++ b/app/src/main/java/com/fongmi/android/tv/bean/Catchup.java @@ -32,6 +32,12 @@ public class Catchup { return new Catchup(); } + public static Catchup decide(Catchup major, Catchup minor) { + if (!major.isEmpty()) return major; + if (!minor.isEmpty()) return minor; + return null; + } + public String getType() { return TextUtils.isEmpty(type) ? "" : type; } @@ -72,12 +78,24 @@ public class Catchup { return getSource().isEmpty(); } + private boolean isAppend() { + return getType().equals("append"); + } + + private boolean isDefault() { + return getType().equals("default"); + } + + private String format(String url, String result) { + if (!TextUtils.isEmpty(Uri.parse(url).getQuery())) result = result.replace("?", "&"); + if (url.contains("/PLTV/")) url = url.replace("/PLTV/", "/TVOD/"); + return url + result; + } + public String format(String url, EpgData data) { String result = getSource(); Matcher matcher = Pattern.compile("(\\$\\{[^}]*\\})").matcher(result); while (matcher.find()) result = result.replace(matcher.group(1), data.format(matcher.group(1))); - if (!TextUtils.isEmpty(Uri.parse(url).getQuery())) result = result.replace("?", "&"); - if (url.contains("/PLTV/")) url = url.replace("/PLTV/", "/TVOD/"); - return url + result; + return isDefault() ? result : format(url, result); } }