Wie alles begann – oder: Happy Birthday VCR.NET!

Ende 2002 traf ich den folgenschweren Entschluss, mir eine digitale TV Karte anzuschaffen. Das hauptsächliche Ziel war damals wie heute das Aufzeichnen von Sendungen über den Rechner. Diese Mail bekam ich dazu am 1. Januar 2003 von Mindfactory;

Bestellbestätigung

Die mitgelieferte Software von Hauppauge / TechnoTrend erwies sich als ziemlich gruselig, so dass ich mich schnell nach Alternativen umsah. Gelandet bin ich dann erst einmal bei WatchTV Phoenix, was sich allerdings als recht instabil und für meine Zwecke ungeeignet erwiesen hat: Aufzeichnungen im Hintergrund waren von der Konfiguration her eine Zumutung. Zudem habe ich durch Recherchen im Internet und diversen Foren schnell gemerkt, dass ich mit der Nexus (S-2300) für meine Zwecke eigentlich auf das völlig falsche Pferd gesetzt habe: durch die proprietäre Schnittstelle und fehlende BDA Unterstützung wurde die Hardware von verfügbaren TV Programmen nur sehr unzureichend genutzt.

Als Softwareentwickler stellt man sich einer solchen Herausforderung aber natürlich sofort: nach Erhalt des SDKs von TechnoTrend habe ich eine erste .NET Anbindung erstellt: DVB.NET 1.0 – das war dann auch mein wesentliches Lehrprogramm zur Einarbeitung in .NET und vor allem C#. Im Mai 2003 hatte ich dann endlich ein Werkzeug, dass genau das konnte, was ich damals brauchte – inzwischen sind die Anforderungen natürlich erheblich gestiegen: VCR.NET 1.0. So sieht der Download der allerersten öffentlichen Version aus:

Das erste Setup

Nun, seitdem ist viel passiert. Das will ich aber hier nicht weiter ausbreiten. Nur so viel: herzlichen Glückwunsch zum 10ten, VCR.NET!

Der Kuchen

VCR.NET 4.1 – Administration und Konfiguration

Die in den Web Client integrierte Administration der Betriebsparameter sieht etwas anders aus als früher, das Prinzip ist aber sehr ähnlich geblieben. Wie bei dem Web Service beschrieben bietet der VCR.NET Recording Service einzelne Bereiche der Gesamtkonfiguration gesondert zur Pflege an. In der aktuellen Version des Web Clients wird dies allerdings noch nicht ausgenutzt – vermutlich wird sich da vor 4.2 auch nichts mehr tun. Zurzeit liest der Web Client beim Aufruf der Administrationsseite die gesamte Konfiguration ein, was zu einer zwar nur kurzen aber merklichen Startverzögerung führt. Halbherzig umgesetzt ist auch das Speichern, das immer nur pro Bereich erfolgt – i.e. gleichzeitige Änderungen anderer Bereiche gehen dabei verloren. Ich glaube aber, für diesen ersten Schritt der da VCR.NET 4.1 heißt sollte das ausreichend sein – so oft braucht man die Administration ja nicht wirklich.

Es gibt nun eine einzige Administrationsseite, die eine leichte Navigation zwischen den Bereichen erlaubt. Ich werde versuchen, durchgängig das auch in anderen Teilen des Web Clients verwendete Konzept der aufklappbaren Inline Hilfe durchzuziehen – Teile der FAQ werden dann obsolet und direkt auf die entsprechenden Seiten verweisen:

Navigation in der Administration

Ich habe auch zumindest versucht ein wenig die Möglichkeiten der neuen Client Technologie zu nutzen. So war es etwa relativ einfach, die Aufzeichnungsparameter der Geräte direkt hier im Web Client des VCR.NET zur Pflege anzubieten – bisher ging das nur über DVB.NET selbst:

Geräteprofile pflegen

Die Beschränkung der Aktualisierung von Programmzeitschrift und Liste der Quellen (Sendersuchlauf) auf vier Stunden des Tages wurde aufgehoben und ich glaube sogar, eine ganz nette Alternative zu den erbärmlichen Auswahllisten gefunden zu haben:

Stundenmuster festlegen

Ansonsten sind nur einige Kleinigkeiten herum gekommen, wie etwa die Zusammenfassung der beiden Parameter zur Nutzung des Schlafzustands in einer einzigen Auswahlliste:

Schlafzustand einstellen

Ich denke da ist für die Zukunft noch eine ganze Menge Potential drin um die Pflege der Betriebsparameter deutlich zu vereinfachen. Aber ehrlich gesagt ist die Priorität dieses Bereichs von VCR.NET recht gering – Hauptsache, es funktioniert. Denn: die meisten Anwender werden wohl nur einmal direkt nach der Installation hier vorbeischauen und das war es dann auch schon.

Schauen wir mal, was die Zukunft bringt

Jochen

VCR.NET 4.1 – Konfiguration über den REST Web Service

Das Auslesen und Ändern der Konfiguration der VCR.NET Recording Service erfolgt über den REST Service Configuration, Anfragen werden nur für VCR.NET Administratoren ausgeführt. Ich habe mich entschieden zu diesem Zweck einen einzigen Endpunkt anzubieten, die Konfiguration selbst aber trotzdem in einzelne Bereiche zu unterteilen – für VCR.NET 4.1 exakt entsprechend der Aufteilung der Administration im Web Client von VCR.NET 4.0 und früher. Neben einigen Sonderaufgaben wie der Abfrage der Verzeichnisstruktur des Rechners, auf dem der VCR.NET Dienst ausgeführt wird, erfolgen Aufrufe immer in folgender Notation:

  • Ein GET auf http://server/VCR.NET/configuration?aspekt meldet die aktuellen Konfigurationsdaten zu einem bestimmten Aspekt der Gesamtkonfiguration.
  • Mit einem PUT auf genau die selbe Adresse werden die neuen Konfigurationsdaten in die Gesamtkonfiguration übernommen. Diese Daten werden dem Inhalt des HTTP Aufrufs entnommen.

VCR.NET 4.1 wird folgende Aspekte unterstützen:

  • directory: die Liste der Aufzeichnungsverzeichnisse und das Muster für die Namen der Aufzeichnungsdateien.
  • guide: die Einstellungen für die Aktualisierung der Programmzeitschrift, also etwa der Zeitplan und die maximale Dauer.
  • devices: die Liste der DVB.NET Geräte, die der VCR.NET Recording Service benutzen darf. Hier können nun auch direkt aus der Web Oberfläche heraus die wichtigsten Aufzeichnungsparameter eines Gerätes festgelegt werden – wie etwa die Planungspriorität.
  • security: die Windows Gruppen zur Identifikation von VCR.NET Benutzern und Administratoren.
  • scan: alles zur Aktualisierung der Liste der Quellen (Sendersuchlauf).
  • other: der ganze Kleinkram, bei dem sich eine weitere Unterteilung nicht mehr lohnte. Hier finden sich zum Beispiel die Konfigurationsdaten des Web Servers selbst aber auch die Einstellungen zur Nutzung des Schlafzustands.

Viel Spaß

Jochen

VCR.NET 4.1 – REST Aufrufe zum Abruf der Programmzeitschrift

Der Web Dienst für den Abruf der Programmzeitschrift (guide) unterstützt drei Varianten der Abfrage. Die wichtigste Abfrage verwendet ein POST direkt an die URL des Dienstes, bei dem der Client im Inhalt die gewünschten Suchparameter überträgt:

  • Name des Gerätes, dessen Einträge durchsucht werden sollen
  • Optional der Name der Quelle, deren Einträge zu berücksichtigen sind
  • Optional der früheste Startzeitpunkt den eine Sendung haben darf, um berücksichtigt zu werden
  • Optional das Suchmuster für den Namen, das erste Zeichen legt den Vergleichsmodus fest, wobei Gleichheit (=) und Enthaltensein (*) unterstützt werden – verglichen wird grundsätzlich ohne Rücksicht auf Groß- und Kleinschreibung
  • Analog das optionale Suchmuster für die ausführliche und kurze Beschreibung der Sendung
  • Die maximale Anzahl von Sendungen im Ergebnis, interpretiert als Seitenlänge
  • Im Sinne der Seitenlänge die 0-basierte laufende Nummer der Seite, die angezeigt werden soll

Die Antwort enthält alle Daten zu den gefundenen Sendungen wie etwa Name, Quelle, Startzeitpunkt, Dauer und so weiter.

Ein GET auf die URL des Dienstes unter Angabe eines Geräteprofils als Teil der URL (guide/nameDesProfils) meldet zu diesem Gerät alle Quellen, zu denen Einträge in der Programmzeitschrift existieren und dazu die Startzeiten der frühesten und spätesten Sendung.

Der letzte GET Aufruf richtet sich wie das POST an den Dienst selbst. Als URL Parameter werden der Name eines Gerätes und einer Quelle sowie ein Zeitraum übertragen. Der Dienst ermittelt dann den Eintrag der Programmzeitschrift, der am besten zu dem angegebenen Zeitraum passt. Gibt es Sendungen, die vollständig in den Zeitraum fallen, so wird die mit der größten Laufzeit gemeldet. Ansonsten beantwortet der Dienst die Anfrage mit der Sendung, die den angegebenen Zeitraum maximal überlappt. Kann auf keinem dieser beiden Wege eine Sendung ermittelt werden, so wird auch keine Antwort gemeldet.

VCR.NET 4.1 – Die Programmzeitschrift

Optisch hat sich an der Suche über die Programmzeitschrift auf den ersten Blick relativ wenig getan. Beim Starten zeigt sich das weitgehende bekannte Bild mit den (wenigen) Suchmöglichkeiten und der Ergebnisliste, deren Umfang weiterhin über die persönlichen Präferenzen eingestellt werden kann:

Filtermöglichkeiten der Programmzeitschrift

Lediglich die Zahl der direkt anwählbaren Tage wurde etwas erhöht – und zudem mit dem letzten verfügbaren Eintrag der Programmzeitschrift synchronisiert, so dass keine Tage angezeigt werden, ab denen es keine Einträge mehr gibt. Der versierte VCR.NET Anwender wird feststellen, dass es keine Schaltfläche zur Aktualisierung mehr gibt. Eine Texteingabe führt nun mit einer kleinen Verzögerung (zurzeit 1/5 Sekunde) dazu, dass die Liste der passenden Sendungen sich automatisch aktualisiert. Auch wurde die Auswahlmöglichkeit der Textsuche eingeschränkt: nun wird entweder nur im Namen einer Sendung oder zusätzlich in der Beschreibung nach dem Vorkommen des Suchausdrucks gefiltert – letzteres ist auch die Voreinstellung. Ich glaube kaum, dass die frühere Suche nach dem exakten Namen ein allzu häufiger Anwendungsfall war.

Bei der Anzeige der aktuell passenden Sendungen hat sich nicht viel getan, ich habe lediglich die Navigation zwischen den Seiten geringfügig erweitert:

Ergebnisliste

Anders als früher werden nun Details zu einzelnen Sendungen direkt in Liste eingeblendet:

Details einer Sendung

Wie gewohnt ist es darüber dann auch sofort möglich, eine neue Aufzeichnung anzulegen (bei bereits verstrichenen Ausstrahlungen wird der Bereich unter den Details ausgeblendet), wobei die persönlichen Werte für die Vor- und Nachlaufzeiten wie bisher berücksichtigt werden:

Neue Aufzeichnung aus der Programmzeitschrift

Ansonsten funktionieren wie gewohnt die üblichen Auswahlkriterien etwa nach der Quelle:

Quelle einschränken

Es gibt allerdings auch eine wesentliche Neuerung, die meiner Ansicht nach sehr nützlich ist, anfänglich aber durchaus zur Verwirrung führen kann. Die aktuelle Auswahl der Programmzeitschrift wird vom Web Client gespeichert, so lange der Browser die VCR.NET Anwendung nicht verlässt – zumindest wird das in der finalen Version von VCR.NET 4.1 so sein: im Moment wird auch ein Aufruf der Administration oder der FAQ als ein solches Verlassen gewertet. Für das Verhalten der Programmzeitschrift bedeutet das in der Endausbaustufe aber vor allem, dass man zum Beispiel eine neue Aufzeichnung aus der Programmzeitschrift angelegen kann und dann ganz normal über die Querverweise von anderen Teilen des Web Clients die Programmzeitschrift in genau dem Zustand wieder aufrufen kann, in dem sie verlassen wurde – einschließlich des Suchbegriffs und der ausgewählten Anzeigeseite. Eine Schaltfläche Neue Suche erlaubt es daher, alle Einschränkungen zurück zu nehmen und die Anzeige auf die Voreinstellung zu bringen – alles von allen Quellen, was noch nicht abgelaufen ist.

Bis demnächst

Jochen