diff --git a/Services/EpgService.cs b/Services/EpgService.cs
index 945a99b..c109841 100644
--- a/Services/EpgService.cs
+++ b/Services/EpgService.cs
@@ -27,10 +27,25 @@ public class EpgService
/// In-Memory-Index: Sendername (normalisiert) → Liste der Events, sortiert nach Startzeit
private Dictionary> _eventsByChannel = new();
private DateTime _loadedAt = DateTime.MinValue;
+ private string _loadedFile = "";
- /// True wenn Daten geladen sind und nicht älter als 12h
- public bool IsCurrent => _eventsByChannel.Count > 0
- && (DateTime.Now - _loadedAt).TotalHours < 12;
+ /// True wenn Daten geladen sind, nicht älter als 12h, und die Cache-Datei nicht geändert wurde
+ public bool IsCurrent
+ {
+ get
+ {
+ if (_eventsByChannel.Count == 0) return false;
+ if ((DateTime.Now - _loadedAt).TotalHours >= 12) return false;
+ // Cache-Datei neuer als letzter Parse? → neu laden
+ var todayFile = Path.Combine(CacheDir, $"epg_{DateTime.Today:yyyyMMdd}.xml");
+ if (File.Exists(todayFile))
+ {
+ var fileTime = new FileInfo(todayFile).LastWriteTime;
+ if (fileTime > _loadedAt) return false;
+ }
+ return true;
+ }
+ }
/// Lädt EPG-Daten (Cache-Hit oder Web), parst und indiziert sie
public async Task LoadAsync(IProgress? progress = null)
@@ -53,6 +68,7 @@ public class EpgService
progress?.Report("Parse EPG…");
ParseXmlTv(todayFile);
_loadedAt = DateTime.Now;
+ _loadedFile = todayFile;
progress?.Report($"EPG: {_eventsByChannel.Count} Sender, {_eventsByChannel.Values.Sum(l => l.Count)} Events");
}