From 13b023dab82168c002cb80e00a2789e431ac4040 Mon Sep 17 00:00:00 2001 From: jhengazuji Date: Fri, 21 Nov 2025 00:07:47 +0800 Subject: [PATCH] Fix epg bug --- .../com/fongmi/android/tv/api/EpgParser.java | 19 +++++++++---------- .../android/tv/model/LiveViewModel.java | 3 ++- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/com/fongmi/android/tv/api/EpgParser.java b/app/src/main/java/com/fongmi/android/tv/api/EpgParser.java index 0dc4cada4..9d54018e3 100644 --- a/app/src/main/java/com/fongmi/android/tv/api/EpgParser.java +++ b/app/src/main/java/com/fongmi/android/tv/api/EpgParser.java @@ -11,7 +11,6 @@ import com.fongmi.android.tv.utils.Download; import com.fongmi.android.tv.utils.FileUtil; import com.fongmi.android.tv.utils.Util; import com.github.catvod.utils.Path; -import com.github.catvod.utils.Trans; import org.simpleframework.xml.core.Persister; @@ -21,6 +20,7 @@ import java.util.AbstractMap; import java.util.Calendar; import java.util.Date; import java.util.HashMap; +import java.util.List; import java.util.Locale; import java.util.Map; import java.util.Optional; @@ -81,7 +81,7 @@ public class EpgParser { private static XmlData parseXmlData(File file) throws Exception { Tv tv = new Persister().read(Tv.class, file, false); - Map map = tv.getChannel().stream().collect(Collectors.toMap(Tv.Channel::getId, channel -> channel)); + Map> map = tv.getChannel().stream().collect(Collectors.groupingBy(Tv.Channel::getId)); return new XmlData(tv, map); } @@ -97,17 +97,15 @@ public class EpgParser { String liveTvgId = targetChannel.getTvgId(); Date endDate = Util.parse(formatFull, programme.getStop()); epgMap.computeIfAbsent(liveTvgId, key -> Epg.create(key, today)).getList().add(getEpgData(startDate, endDate, programme)); - Optional.ofNullable(data.map.get(xmlChannelId)).filter(Tv.Channel::hasSrc).ifPresent(ch -> srcMap.putIfAbsent(liveTvgId, ch.getSrc())); + Optional.ofNullable(data.map.get(xmlChannelId)).flatMap(list -> list.stream().filter(Tv.Channel::hasSrc).findFirst()).ifPresent(ch -> srcMap.putIfAbsent(liveTvgId, ch.getSrc())); } return new ProgrammeResult(epgMap, srcMap); } - private static Channel findTargetChannel(String xmlChannelId, Map liveChannelMap, Map xmlChannelIdMap) { + private static Channel findTargetChannel(String xmlChannelId, Map liveChannelMap, Map> xmlChannelIdMap) { Channel targetChannel = liveChannelMap.get(xmlChannelId); if (targetChannel != null) return targetChannel; - return Optional.ofNullable(xmlChannelIdMap.get(xmlChannelId)).flatMap(xmlChannel -> xmlChannel.getDisplayName().stream() - .map(Tv.DisplayName::getText).filter(name -> !name.isEmpty()).filter(liveChannelMap::containsKey) - .findFirst().map(liveChannelMap::get)).orElse(null); + return Optional.ofNullable(xmlChannelIdMap.get(xmlChannelId)).flatMap(list -> list.stream().findFirst()).flatMap(xmlChannel -> xmlChannel.getDisplayName().stream().map(Tv.DisplayName::getText).filter(name -> !name.isEmpty()).filter(liveChannelMap::containsKey).findFirst().map(liveChannelMap::get)).orElse(null); } private static void bindResultsToLive(Live live, ProgrammeResult result) { @@ -129,11 +127,12 @@ public class EpgParser { private static EpgData getEpgData(Date startDate, Date endDate, Tv.Programme programme) { try { EpgData epgData = new EpgData(); - epgData.setTitle(Trans.s2t(programme.getTitle())); + epgData.setTitle(programme.getTitle()); epgData.setStart(formatTime.format(startDate)); epgData.setEnd(formatTime.format(endDate)); epgData.setStartTime(startDate.getTime()); epgData.setEndTime(endDate.getTime()); + epgData.trans(); return epgData; } catch (Exception e) { return new EpgData(); @@ -143,9 +142,9 @@ public class EpgParser { private static class XmlData { Tv tv; - Map map; + Map> map; - public XmlData(Tv tv, Map map) { + public XmlData(Tv tv, Map> map) { this.tv = tv; this.map = map; } diff --git a/app/src/main/java/com/fongmi/android/tv/model/LiveViewModel.java b/app/src/main/java/com/fongmi/android/tv/model/LiveViewModel.java index 731c2f65a..b78966b1b 100644 --- a/app/src/main/java/com/fongmi/android/tv/model/LiveViewModel.java +++ b/app/src/main/java/com/fongmi/android/tv/model/LiveViewModel.java @@ -93,7 +93,8 @@ public class LiveViewModel extends ViewModel { private boolean parseXml(Live item, String url) { try { return EpgParser.start(item, url); - } catch (Exception ignored) { + } catch (Exception e) { + e.printStackTrace(); return false; } }