EPG: IsCurrent prueft auch Cache-Datei-Timestamp

This commit is contained in:
administrator 2026-05-11 07:38:54 +02:00
parent 4bf42b96b5
commit e2aeeb4332

View file

@ -27,10 +27,25 @@ public class EpgService
/// <summary>In-Memory-Index: Sendername (normalisiert) → Liste der Events, sortiert nach Startzeit</summary>
private Dictionary<string, List<EpgEvent>> _eventsByChannel = new();
private DateTime _loadedAt = DateTime.MinValue;
private string _loadedFile = "";
/// <summary>True wenn Daten geladen sind und nicht älter als 12h</summary>
public bool IsCurrent => _eventsByChannel.Count > 0
&& (DateTime.Now - _loadedAt).TotalHours < 12;
/// <summary>True wenn Daten geladen sind, nicht älter als 12h, und die Cache-Datei nicht geändert wurde</summary>
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;
}
}
/// <summary>Lädt EPG-Daten (Cache-Hit oder Web), parst und indiziert sie</summary>
public async Task LoadAsync(IProgress<string>? 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");
}