VDR-Webapplikation Teil 1: Datenstrukturen für die EPG Daten


EPG heisst mit erkennbar englischem Einschlag “Electronic Program Guide”… neudeutsch für ne elektronische Fernsehzeitschrift.


Der von mir verwendete VideoDiskRecorder legt diese von den Sendern ausgestrahlte Sendungs-Information in Form einer Textedatei ab. Das Format ist recht einfach aufgebaut und so ziemlich einfach zu parsen.


Hier mal ein kurzer Auszug aus der man-Page des VDR:

“The file epg.data contains the EPG data in an easily parsable format. The first character of each line defines what kind of data this line contains.
The following tag characters are defined: C channel_id channel_name

E event_id start_time duration table_id
T title
S subtitle
D description
e
c”


so…let´s not stand on ceremony, let´s start the show:


1. Strukturen schaffen: Datenstrukturen fürs EPG



Eine (noch) recht einfache Struktur: Eine Tabelle für die Sender: “channel” und eine Tabelle für die Sendungen auf diesem Sender: “epgData“. Beide Tabellen sind über eine Relation miteinander verbunden. Diese Relation wird über den “channel_string” hergestellt. In Zukunft wird diese Datenstruktur noch erheblich erweitert werden (schon im nächsten Teil des Berichts) um so die Anforderungen nach und nach zu erfüllen.


Also fix ne Parser Klasse dafür geschrieben:



Die parseEPG Klasse erledigt den Job schnell und in ersten Tests auch zuverlässig. Sicherlich gibt es da noch eine Menge zu erweitern, denn die Daten werden noch nicht weiterführend interpretiert (Unix Datums-Konvertierung usw.), aber da gibts ja noch in Zukunft genug Gelegenheit. Es gibt momentan noch eine Demo Methode “DEMO_OutputData()” welche zu Demonstrationszwecken einmal zeigt wie Relations zwischen Daten in .NET realisiert werden können. Weitere Methoden gibt es nicht, diese werden in Zukunft implementiert.


Die parseEPG Klasse ist einfach zu handhaben:


parseEPG.parseEPG epg_Parser = new parseEPG.parseEPG(“\\vdr\epg\epg.data);
epg_Parser.parse_EPG();


Nach diesen zwei Zeilen liegen die EPG Daten schon fertig geparst in obiger Datenstruktur und man kann eine der Demonstrations-Ausgabe-Methoden benutzen:


Console.Write(epg_Parser.getXMLEPG());


Das Produkt dieses Teils ist eine Command-Line Applikation geschrieben in C#. Dieser Applikation übergibt man als Parameter den Pfad+Dateinamen der epg.data-Datei und erhält als Ausgabe die Daten im XML Format. Die Ausgabe ins XML Format ist momentan einfach nur Spass und wird auch in Zukunft wohl nicht genutzt werden 😉 Aber man kann sich wenigstens etwas vorstellen darunter.


Das ganze habe ich auch direkt für den interessierten Leser zum Download bereit. Ich stelle diese und die zukünftigen Entwicklungen unter diese BSD ähnliche Lizenz.


Download: EPGDataParser.zip (22,2 KB)

Comments are closed.