From e2aeeb43328df8cad82b2eefa79477591e4db456 Mon Sep 17 00:00:00 2001 From: administrator Date: Mon, 11 May 2026 07:38:54 +0200 Subject: [PATCH] EPG: IsCurrent prueft auch Cache-Datei-Timestamp --- Services/EpgService.cs | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) 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"); }