From 6eff92e20bf559dd19e02b3c302b7cb65104a584 Mon Sep 17 00:00:00 2001 From: FongMi Date: Tue, 17 Dec 2024 18:14:59 +0800 Subject: [PATCH] Fix xml epg extract --- .../java/com/fongmi/android/tv/api/LiveParser.java | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) 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 29957ec1d..9f67d3f17 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 @@ -31,8 +31,8 @@ public class LiveParser { private static final Pattern CATCHUP = Pattern.compile(".*catchup=\"(.?|.+?)\".*"); private static final Pattern TVG_LOGO = Pattern.compile(".*tvg-logo=\"(.?|.+?)\".*"); private static final Pattern TVG_NAME = Pattern.compile(".*tvg-name=\"(.?|.+?)\".*"); - private static final Pattern TVG_URL = Pattern.compile(".*tvg-url=([^\\s]+)"); - private static final Pattern URL_TVG = Pattern.compile(".*url-tvg=([^\\s]+)"); + private static final Pattern TVG_URL = Pattern.compile(".*tvg-url=\"(.?|.+?)\".*"); + private static final Pattern URL_TVG = Pattern.compile(".*url-tvg=\"(.?|.+?)\".*"); private static final Pattern GROUP = Pattern.compile(".*group-title=\"(.?|.+?)\".*"); private static final Pattern NAME = Pattern.compile(".*,(.+?)$"); private static final Pattern M3U = Pattern.compile("#EXTM3U|#EXTINF"); @@ -43,6 +43,12 @@ public class LiveParser { return ""; } + private static String extract(String line, String... keywords) { + String[] splits = line.split(" "); + for (String split : splits) for (String keyword : keywords) if (split.contains(keyword)) return split.split("=")[1].replace("\"", ""); + return ""; + } + public static void start(Live live) throws Exception { if (!live.getGroups().isEmpty()) return; if (live.getType() == 0) text(live, getText(live)); @@ -92,6 +98,7 @@ public class LiveParser { catchup.setSource(extract(line, CATCHUP_SOURCE)); if (live.getEpg().isEmpty()) live.setEpg(extract(line, TVG_URL).replace("\"", "")); if (live.getEpg().isEmpty()) live.setEpg(extract(line, URL_TVG).replace("\"", "")); + if (live.getEpg().isEmpty()) live.setEpg(extract(line, "tvg-url=", "url-tvg=")); } else if (line.startsWith("#EXTINF:")) { Group group = live.find(Group.create(extract(line, GROUP), live.isPass())); channel = group.find(Channel.create(extract(line, NAME)));