EPG/XMLTV-Import

Die EPG-Datenbank wird aus drei Arten von Quellen befüllt:

  • EIT aus empfangenen Streams — die Stream-Einstellung „EIT in die EPG-Datenbank extrahieren“ (SPTS und MPTS, Modifikation des Streams);

  • EIT von DVB-Adaptern — die Adaptereinstellung „EPG-Export“ (DVB-Empfänger);

  • externe XMLTV-Quellen — über einen Link auf eine Webressource oder aus einer lokalen Datei.

Das aus Streams und von DVB-Adaptern extrahierte EIT wird in der gemeinsamen integrierten Quelle „Stream-Import“ gesammelt; jede externe XMLTV-Quelle führt eine eigene Datenbank. Die Kanalkennung ist innerhalb ihrer eigenen Quelle eindeutig; Kanalnamen und Ereignistexte werden in mehreren Sprachen gespeichert.

Konfiguration der Quellen

Die Quellen werden auf dem Bildschirm „EPG-Einstellungen“ (EPG-Einstellungen) konfiguriert. Die Registerkarte „Import“ enthält die allgemeinen Parameter: „Import aktivieren“, „Verlauf aufbewahren, Tage“ (Aufbewahrungstiefe für vergangene Ereignisse) und „Automatische Bereinigung verwaister Kanäle“ (Entfernen von Kanälen, zu denen keine Ereignisse mehr vorhanden sind).

Externe XMLTV-Quellen werden auf der Registerkarte „Quellen“ hinzugefügt: Name, „URL / Pfad der Quelle“, „Aktiviert“, „Aktualisierungsintervall, s“ (standardmäßig einmal pro Stunde), „Inhaltskodierung“ (automatische Erkennung oder erzwungenes GZip), Zugangsdaten und Cookies für zugangsbeschränkte Webquellen, „Heruntergeladene Kopie speichern“ für die Diagnose. Die Quelle ist eine http- oder https-Adresse oder ein absoluter Pfad zu einer Datei auf dem Knoten; Cookies werden im Header Cookie und nur an den Host der Quelle übertragen. Nach einer Änderung einer aktivierten Quelle (zum Beispiel ihrer Adresse) werden die Daten sofort geladen, ohne das Aktualisierungsintervall abzuwarten.

Seit Version 2.0.2.418 hat eine Quelle ein Abruf-Timeout — den Parameter fetch-timeout der Quelle in der Einstellungsdatei oder über die API (von 0 bis 3600 Sekunden, 0 — die bisherigen 30 Sekunden); seit Version 2.0.2.419 legt ihn das Feld „Abruf-Timeout, s“ fest (EPG-Einstellungen). Er begrenzt das Warten bei jedem Senden und jedem Empfangen von Daten: auf das erste Byte der Antwort und bei jeder Pause in der Übertragung. Er ist für langsame Quellen gedacht, die die Datei erst auf Anfrage erstellen. Die Verbindung wird in höchstens 30 Sekunden aufgebaut, die gesamte Übertragung dauert höchstens 30 Minuten (oder zwei Timeouts, falls das länger ist). Ein abgelaufenes Timeout ist ein fehlgeschlagener Abruf: Es wird ins Protokoll geschrieben und im Fehler der Quelle angezeigt.

Abruf-Warteschlange und Wiederholungen

Seit Version 2.0.2.418 werden externe Quellen nacheinander abgerufen, ausgewertet und übernommen: Während eine läuft, warten die übrigen, bis sie an der Reihe sind, und die Registerkarte „Status der Quellen“ zeigt eine solche Quelle als wartend mit ihrer Position in der Warteschlange (Queued: position N); seit Version 2.0.2.419 ist sie zusätzlich mit einem blauen Punkt markiert. Wiederholtes „Jetzt aktualisieren“ für eine wartende Quelle wird zu einem Abruf zusammengefasst. Nach dem Start des Dienstes beginnen die Quellen nicht gleichzeitig mit dem Abruf, sondern der Reihe nach im Abstand: die erste nach 10 Sekunden, jede weitere eine Sekunde später. Deshalb bleibt die Speicherspitze beim Neustart eines Knotens mit mehreren großen Feeds auf dem Niveau eines Feeds, und nach dem Abruf wird der Speicher an das System zurückgegeben.

Ein fehlgeschlagener Abruf wird nicht nach dem vollen Aktualisierungsintervall wiederholt, sondern nach 2, 5 und 15 Minuten, danach alle 30 Minuten (aber nicht seltener als das Aktualisierungsintervall); der Zeitpunkt des nächsten Versuchs wird im Feld „Nächste Aktualisierung“ angezeigt. Seit Version 2.0.2.419 heißt dieses Feld während der Fehlschläge „Nächster Versuch“, und daneben wird das Feld „Fehlgeschlagene Abrufe in Folge“ angezeigt (EPG-Datenbank). Der Fehlerzähler wird durch einen erfolgreichen Abruf, eine Änderung der Quelle und einen Neustart des Dienstes zurückgesetzt. Eine leere Antwort der Quelle gilt ab dieser Version ebenfalls als Fehler.

EPG-Datenbank

Den gesammelten Programmführer zeigt der Bildschirm „EPG-Datenbank“ (EPG-Datenbank). Auf der Registerkarte „Datenbank“ wird die Quelle ausgewählt; Kanalsuche und ein Filter nach Kanalsatz stehen zur Verfügung; der Programmplan eines Kanals wird tageweise durchgeblättert, die laufende Sendung ist hervorgehoben. Für jeden Kanal lässt sich Folgendes ändern:

  • „Kanalname“ — der Name für den XMLTV-Export;

  • „Zeitzone“ — falls die Ereigniszeiten beim Import nicht an UTC gebunden waren;

  • „Symbol-URL“ — das Kanalsymbol;

  • „Kanalsätze“ — Zugehörigkeit zu den Sätzen für die Auslieferung an externe Abnehmer (EPG für OTT-Middleware).

Manuelle Änderungen können bei der nächsten Aktualisierung der Quelle überschrieben werden — die Weboberfläche weist darauf hin.

Die Registerkarte „Status der Quellen“ zeigt den Verlauf des Imports: Zeitpunkt der letzten und der nächsten Aktualisierung, Anzahl der Kanäle und Ereignisse, Fehler; die Schaltfläche „Jetzt aktualisieren“ startet die Aktualisierung der Quelle sofort, ohne den Zeitplan abzuwarten.

Ab Version 2.0.2.420 werden Programmänderungen in externen Quellen zuverlässiger erkannt: Auch ein Textaustausch zwischen zwei Feldern einer Sendung gilt als Änderung. Ein Feed, der sich seit der letzten Aktualisierung nicht geändert hat, wird nicht erneut ausgewertet, seine Kanäle gelten aber weiterhin als aktualisiert, sodass „Automatische Bereinigung verwaister Kanäle“ sie nicht löscht; vor Version 2.0.2.420 konnten solche Kanäle verschwinden. Die erste Aktualisierung nach dem Wechsel auf 2.0.2.420 überschreibt nichts in der Datenbank, und in der Weboberfläche vorgenommene Änderungen an Kanalnamen bleiben erhalten.