Idee: xmltv2vdr-plugin

  • Ich möchte in nächster Zeit ein Plugin programmieren, das Code aus meinem Infosatepg-Plugin verwendet. Hintergrund: Seit der Entscheidung der VG-Media hat sich z.B. Technisat/SFI (infosatepg) entschlossen sämtliche VG-Media Sender aus Ihrem Bestand zu nehmen. Ob dies immer so bleibt oder wieder anders wird, ich weiss es nicht. Für mich bedeutet dies, das ich mich (schon wieder) nach einem anderen EPG-Lieferanten umschauen muss. Um dies für mich beim nächsten Mal zu erleichtern kam mir die Idee zu einem xmltv2vdr-plugin.


    Ziel des Plugins sollte es sein die unterschiedlichsten EPG-Quellen (Satellit, Teletext, Internet) mit dem Sender-EPG (sofern vorhanden) zu mischen. Desweitern soll es eine strikte Trennung zwischen EPG-Quelle und xmltv2vdr-plugin geben.


    Damit ich das Rad nicht neu erfinden muss und es für mich einfach(er) wird die Daten einzulesen, habe ich mich entschieden ausschliesslich das XMLTV-Format zu unterstützen. Dies bedeutet konkret, das
    EPG-Quellen ihr Material ins XMLTV-Format umwandeln müssen.


    Ich habe das mal bei einer Quelle die ein eigenes xml-Format hat, für eine Sendung der ARD gemacht:

    Das Format ist IMHO recht gut geeignet, um über Optionen verschiedene Daten auszuwählen, also z.B. ob die Crew (credits) hinzugefügt werden soll, oder die Kategorien oder die Kurzkritik oder, oder, oder. Dabei habe ich mir gedacht es wäre (im zweiten Schritt vielleicht) sinnvoll, die Bezeichner vom Benutzer eingebbar zu machen, so kann der eine "Category: " verwenden und der andere eben "Kategorie: "


    Die Kanalliste wird fest vorgegeben, d.h. der Kanal 1 muss z.B. immer für den Sender ARD sein. Die Zuordnung des xmltv2vdr Kanals auf vdr-Kanäle soll über das OSD einstellbar sein (wer mein infosatepg-plugin kennt ... - ich hasse Skript-Gebastle).


    Wie ich externe Datenquellen erkenne ist noch nicht so ganz klar. Vielleicht muss die Quelle einfach eine Datei in einem definierten Verzeichnis ablegen die den Namen der Quelle enthält, z.B. epgdata (wenn das zugehörige Skript/Programm z.B. epgdata heisst), darin enthalten eine Kanalliste aller xmltv2vdr-Kanäle die diese Quelle bereitstellt.


    Im OSD kann man dann auswählen, welcher Kanal von welcher Quelle geholt werden soll. Evtl. muss man die Quellen noch irgendwo sortieren, sodass dann folgendes passiert: Kanal 1 soll von Quelle A geholt werden (und wenn das fehlschlägt) wird Kanal 1 von Quelle B geholt (falls dieser dort auch angewählt ist) usw. usf.


    Sinn macht das ganze bei gemischten Kanälen für maximal 1 Tag in die Zukunft, bei nicht gemischten Kanälen kann man soweit gehen wie die Quelle Daten liefert. Nachteil der zweiten Option: Fällt die Quelle aus und es existiert keine weitere (oder das Sender-EPG wurde mit dem NoEPG-Patch weggedrückt) gibt es keine Aufnahmen.


    Ein weiterer Punkt der mir gerade gekomment ist: Die EPG-Sourcen müssen ja eigentlich nicht alle Kanäle holen, die Sie anbieten. Das wäre IMHO Verschwendung. In der von der EPG-Source geschriebenen Datei mit den zur Verfügung stehenden xmltv2vdr-Kanälen könnte das Plugin die Kanäle, die geholt werden sollen markieren.


    Aus rechtlichen Gründen (VG-Media, kein Recht auf Privatkopie bei Datenbankwerken) sollten Diskussionen über EPG-Sourcen und den zugehörigen "Grabbern" per PN ablaufen.


    Bitte um Feedback.


    Gruß


    Joe_D

  • Das ich die Idee gut finde sagte ich ja schon im anderen Thread.


    Als Kommentar zu deiner Umsetzungsplanung habe ich folgende Anmerkungen:


    Erstmal finde ich es schön zu hören das du da auch weitere Konfigurationsmöglichkeiten planst (Schauspieler oder Kritik abschaltbar usw.).


    Zu der festen Zuordnung der Sender (Kanal 1 = ARD usw.) - da fände ich es praktischer sinnige Texte anstelle von Nummern zu verwenden. Also z.B. "ARD.DE" für "ARD", das würde das lesen der XMLs wesentlich erleichtern (und XMLs sind ja eigentlich dafür gedacht auch Menschenlesbar zu sein).


    Und zu den Kategorien, der VDR bietet ja selber im EPG Eintrag ein Feld für die Kategorien der Sendung. Und viele Sender füllen diese Info auch aus, da wäre es schön wenn das Plugin die Kategorien auch in diesem Feld ablegt. Dann hat man nicht ein Mischmasch aus Kategorieren im Korrekten Feld und aus Text in der Beschreibung.


    Eine Idee wäre, wenn das XML nen Kategory Eintrag enthält der mit den SI Kategorien übereinstimmt, z.B.
    --
    <category lang="de">Detektiv/Thriller</category>
    --
    dann schreibt es 0x11 ins Kategorie Feld. Steht dort z.B.
    --
    <category lang="de">Lustiger Zeichentrick</category>
    --
    dann kommt der Eintrag
    --
    Kategorie: Lustiger Zeichentrick
    --
    an die Beschreibung angehängt.
    So hätte man alle Fälle sauber abgedeckt. Und es wäre dem Grabber überlassen die Kategorien der Datenquelle direkt weiterzureichen oder per cleverer Umsetzung in SI Kategorien umzudeuten.


    Nutzt man nämlich nur die festgelegten SI Kategorien, dann wäre die Suche danach wesentlich einfacher (sofern epgsearch das dann mal unterstützt) da es hier einen überschaubaren Satz gibt und nicht unendlich viele Möglichkeiten.



    Und ich fürchte die Idee das jeder Grabber das Komplette EPG in einem XML ablegt... irgendwie habe ich da Angst das es nicht mehr so fluffig läuft wenn das Plugin da anfängt 60MB XMLs zu parsen. Aber das nur rein Gefühlsmässig, keine Ahnung was für einen XML Parser du da nutzen willst.


    cu

  • Keine_Ahnung


    Quote

    <category lang="de">Detektiv/Thriller</category>
    --
    dann schreibt es 0x11 ins Kategorie Feld. Steht dort z.B.

    So habe ich mir das auch gedacht. Der Grabber ist dafür verantwortlich aus der eigenen Kategorie z.B. Krimi dann die SI-Kategoirie Detektiv/Thriller zu machen und das Plugin kann dann die 0x11 reinschreiben.


    Quote

    Zu der festen Zuordnung der Sender (Kanal 1 = ARD usw.) - da fände ich es praktischer sinnige Texte anstelle von Nummern zu verwenden. Also z.B. "ARD.DE" für "ARD", das würde das lesen der XMLs wesentlich erleichtern

    Das ist ja nur ein Beispiel und kann ja jeder Grabber selber machen z.B. so:

    Code
    1. <channel id="ard.de">
    2. <display-name>1</display-name>
    3. </channel>
    4. <programme channel="ard.de" ...>
    5. ...
    6. </programme>

    Ich muss eben irgendwie auf eine einzelne Zahl kommen. Entweder direkt über channel aus <programme> oder über den display-name in <channel>


    Quote

    Und ich fürchte die Idee das jeder Grabber das Komplette EPG in einem XML ablegt...

    Der Grabber soll nur das EPG eines einzelnen Senders in eine Datei ablegen.


    Da das plugin komplett in C++ geschrieben wird mache ich mir um die Geschwindigkeit des einlesens keine Gedanken. Das müsste ich eher bei Perl, Bash, Python oder wie sie alle heissen ;)


    Gruß


    Joe_D

  • Die Wahl der Sprache hat weit weniger Einfluss auf die Performance als die Wahl wie das XML geparst wird. Dann kommt es noch auf die Implementierung des XML Parsers in der jeweiligen Sprache an. Ausserdem ist das Format interessant und wie du es wandelst.


    Feste Werte wie 1 = ARD hört sich sehr schlecht an.


    Je nachdem wie du die Lieferanten einbinden willst böte sich ein anderes Zwischenformat an als XML, als internes Format böte sich zB auch sqlite an , welches IMHO auch den Abgleich/Merge unterstützen könnte.


    Wieso musst du auf eine Zahl kommen ?

  • steffen_b


    Quote

    Die Wahl der Sprache hat weit weniger Einfluss auf die Performance als die Wahl wie das XML geparst wird

    Da gebe ich Dir ja recht, aber dies ist für mein neues Plugin absolut nebensächlich - und besser als das lahme tvmovie2vdr-Perl-Skript sind plugins sowieso (sieht man ja an tvm2vdr). Das Plugin liest eine XMLTV-Datei einfach von oben nach unten durch und trägt die ausgewählten Elemente in die entsprechenden Eigenschaften des cEvent-Objekts im VDR ein. Da gibt es keine große Wahl.


    Quote

    Je nachdem wie du die Lieferanten einbinden willst böte sich ein anderes Zwischenformat an als XML, als internes Format böte sich zB auch sqlite an , welches IMHO auch den Abgleich/Merge unterstützen könnte.

    Beim Zwischenformat habe ich mich schon auf xmltv festgelegt. Vorteil davon ist,das man evtl. vorhandene xmltv-Quellen verwenden könnte oder aber auch das man die Daten in anderen xmltv-fähigen Applikationen verwenden kann.


    Quote

    Feste Werte wie 1 = ARD hört sich sehr schlecht an. Wieso musst du auf eine Zahl kommen

    Wenn ich 3 Datenquellen habe und die liefern mir sowas

    woran soll ich nun erkennen das alle 3 Quellen das gleiche Programm liefern?


    Gruß


    Joe_D

  • Quote

    Original von Joe_D
    Da gebe ich Dir ja recht, aber dies ist für mein neues Plugin absolut nebensächlich - und besser als das lahme tvmovie2vdr-Perl-Skript sind plugins sowieso (sieht man ja an tvm2vdr).


    Ich kenne Perl als sehr schnell. Das nur nebenbei. Frage ist hier eher, wie tvmovie2vdr die Daten in den VDR überträgt und da es leider nicht ohne weiteres möglich ist, den VDR zu scripten, wird wohl SVDRP verwendet.


    Quote

    Wenn ich 3 Datenquellen habe und die liefern mir sowas

    woran soll ich nun erkennen das alle 3 Quellen das gleiche Programm liefern?


    Andere Frage: Wie willst du sicherstellen, dass alle diese 3 Quellen für dieses "gleiche Programm" eine gleiche Zahl zuweisen?


    Nachtrag: Vorschlag meinerseits: Nichts gegen XML als Austauschformat, aber bitte mache es möglich statt Eingabedateien auch Scripte anzugeben. So könnte z.B. ein Perl-Script in Echtzeit ein XML auf STDOUT generieren und dieses würde von deinem Plugin direkt verarbeitet. Wozu auf Festplatte zwischensichern?

  • Ich wollte nur sagen C++ = schnell ist falsch. Die grössten Probleme gabs bisher wenn ein Dom-Parser anstatt eines streamreader/sax Parsers verwendet wurde. eh egal ...


    Quote

    Beim Zwischenformat habe ich mich schon auf xmltv festgelegt.


    Deswegen sagte ich "Je nachdem wie du die Lieferanten einbindest". Wenn du xmltv Format verwenden willst, solltest du xmltv identifier verwenden(ard.de). Dann muss halt ein Mapping von Quelle zu xmltv und ein Mapping von xmltv nach vdr existieren, da führt kein Weg dran vorbei. Alles andere wäre Pfusch. x->xmltv existiert oft dann ja schon. Macht nur Sinn wenn externe lieferanten es dann als xmltv abliefern. Man hat IMMER doppelte Konvertierung.

  • Quote

    Originally posted by steffen_b
    Wenn du xmltv Format verwenden willst, solltest du xmltv identifier verwenden(ard.de). Dann muss halt ein Mapping von Quelle zu xmltv und ein Mapping von xmltv nach vdr existieren, da führt kein Weg dran vorbei.


    Nein! Es braucht zwei Mappings, einmal von Datenquellename zur eines festen Bezeichnung für jeden Sender (ob nun "ard.de" oder "1" ist dabei egal), das ist im Grabber integriert. Und zweites ein Mapping von der festen Bezeichnung der Sender zu den channels.conf Einträgen (ist ja bei "jeden" Nutzer anderst), das muss das xmltv2vdr Plugin machen.


    Ob man nun den Vorschlag von xmltv folgt oder eigene Namen für die Sender erfindet ist dabei egal. Denn es gibt noch keine allgemeingültige Liste für die Sendernamen nach RFC<irgendwas>. Also kann jeder seine eigene erfinden.


    Quote

    Originally posted by Mreimer
    Ich kenne Perl als sehr schnell. Das nur nebenbei. Frage ist hier eher, wie tvmovie2vdr die Daten in den VDR überträgt und da es leider nicht ohne weiteres möglich ist, den VDR zu scripten, wird wohl SVDRP verwendet.


    Das macht das infosatepg-Plugin doch auch schon, das liest auch Plain/Text Dateien ein und überträgt sie intern (ohne svdrp) in den VDR.


    Quote


    Andere Frage: Wie willst du sicherstellen, dass alle diese 3 Quellen für dieses "gleiche Programm" eine gleiche Zahl zuweisen?


    Das müssen ja der Grabber machen. Das ist ja der ganze Sinn hinter dem System. Alle Grabber sind dafür verantworlich einheitliche Sendernamen zu verwenden.


    D.h. bedeutet auch zwangsläufig man kann hier nicht jedes xmltv XML verwenden sondern benötigt zwingend eines welches von einem xml2vdr Grabber erzeugt wurde.


    Ist halt das Problem das es keine Möglichkeit gibt einen Sender eindeutig zu indentifizieren.
    Datenquelle 1 nennt den sender halt ADR, Datenquelle 2 nennt ihn "Das erste" und beim Nutzer in der channels.conf heist er "Omasender". Da muss es zwangsläufig ne Gemeinsame Namensliste geben zu und von der alle beteidigten Komponenten umsetzen.


    Die Grabber wissen halt wir ihre Datenquelle die Sender nennt und mappt zum Normanamen (egal ob man sich hier nun auf "ard.de" oder auf "1" einigt). Und xmltv2vdr weiss wie der Nutzer die Sender nennt (muss der Nutzer einmalig im Plugin konfigurieren) und so kann das Plugin von de Normnamen zur Userliste mappen.


    Quote


    Nachtrag: Vorschlag meinerseits: Nichts gegen XML als Austauschformat, aber bitte mache es möglich statt Eingabedateien auch Scripte anzugeben. So könnte z.B. ein Perl-Script in Echtzeit ein XML auf STDOUT generieren und dieses würde von deinem Plugin direkt verarbeitet. Wozu auf Festplatte zwischensichern?


    Ist auch meine Meinung.


    Quote

    Originally posted by Joe_D
    und besser als das lahme tvmovie2vdr-Perl-Skript sind plugins sowieso (sieht man ja an tvm2vdr). Das Plugin liest eine XMLTV-Datei einfach von oben nach unten durch und trägt die ausgewählten Elemente in die entsprechenden Eigenschaften des cEvent-Objekts im VDR ein. Da gibt es keine große Wahl.


    Pearl ist nicht lahm, der dort verwendete XML Parser ist lahm. Es ist nämlich doch ein Unterschied ob der Parser das 60 MB XML in ein Objekt umsetzt (und dann mal locker 300MB Speicher dafür braucht) oder ob man nen Parser hat der da einfach zeilenweise durchgeht.


    Wobei das Zeilenweise durchgehen und sofort eintragen bedeutet das gefordert ist das das XML sortiert ist (das bedeutet es geht nicht einfach so jedes xmltv XML als Eingabe). Weil sonst schlägt das fehl.


    cu

  • Quote

    Originally posted by Mreimer


    Ich kenne Perl als sehr schnell. Das nur nebenbei.


    Da habe ich aber andere Erfahrungen gemacht, deshalb gibt es ja das tvm2vdr-plugin.


    Gerald


    HP Proliant MicroServer Gen8, Xeon E3-1230, 12 GB RAM, 3xWD red 2TB im RAID 5, 2xSundtek MediaTV Home DVB-C/T, L4M TWIN-C/T, Ubuntu Server 14.04.1, Plex Media Server
    Samsung UE55H6470

    The post was edited 2 times, last by gda ().

  • Quote

    Original von Keine_Ahnung
    Pearl ist nicht lahm, der dort verwendete XML Parser ist lahm. Es ist nämlich doch ein Unterschied ob der Parser das 60 MB XML in ein Objekt umsetzt (und dann mal locker 300MB Speicher dafür braucht) oder ob man nen Parser hat der da einfach zeilenweise durchgeht.


    Wobei das Zeilenweise durchgehen und sofort eintragen bedeutet das gefordert ist das das XML sortiert ist (das bedeutet es geht nicht einfach so jedes xmltv XML als Eingabe). Weil sonst schlägt das fehl.


    Perl wird ohne "a" geschrieben ;)


    Perl-Intern gibt es AFAIK garkeinen XML-Parser! Man muss einen solchen ggf. als Modul nachladen und von diesen Modulen gibt es vielerlei. Für jeden Geschmack ist da etwas dabei und wenn man XML Programmintern als Speicherformat verwendet, ist komplettes Übertragen in ein Object (Hash of Hashes) oft auch garnicht so falsch. Zumal man das veränderte Hash-Array dann ggf. vom Modul auch wieder als XML wegschreiben lassen kann.


    Gerade das zeilenweise abarbeiten von XML kann Perl ohne externe Zusatzmodule *sehr* schnell erledigen. Man rennt einfach über die Zeilen, und matcht sich das, was man will, via RegEx raus. Ich habe das schon zigfach für Openstreetmap-Daten gemacht, die letztlich auch nur XML sind.

  • Quote

    Originally posted by Mreimer
    Perl wird ohne "a" geschrieben ;)


    Mir doch egal wie man diese seltsame Sprache nennt ;)


    Quote

    Originally posted by Mreimer
    Perl-Intern gibt es AFAIK garkeinen XML-Parser! Man muss einen solchen ggf. als Modul nachladen und von diesen Modulen gibt es vielerlei. Für jeden Geschmack ist da etwas dabei und wenn man XML Programmintern als Speicherformat verwendet, ist komplettes Übertragen in ein Object (Hash of Hashes) oft auch garnicht so falsch. Zumal man das veränderte Hash-Array dann ggf. vom Modul auch wieder als XML wegschreiben lassen kann.


    Gerade das zeilenweise abarbeiten von XML kann Perl ohne externe Zusatzmodule *sehr* schnell erledigen. Man rennt einfach über die Zeilen, und matcht sich das, was man will, via RegEx raus. Ich habe das schon zigfach für Openstreetmap-Daten gemacht, die letztlich auch nur XML sind.


    Mein ich doch, das tvm2vdr Peal Script ist lahm weil es ungünstig programiert wurde, nicht weil Perl (oder andere Scriptsprachen) hier generell lahm sind.


    cu

  • @All


    Lasst uns bitte bei dieser Diskussion Sprachen, XML-Verarbeitung des Plugins und Geschwindigkeit als nebensächlich ansehen. Das Plugin wird in C++ geschrieben, als XML-Parser wird libxml2 verwendet, die EPG-Daten werden direkt in die Strukturen des VDR "reingepresst".


    @Mreimer


    Quote

    Nachtrag: Vorschlag meinerseits: Nichts gegen XML als Austauschformat, aber bitte mache es möglich statt Eingabedateien auch Scripte anzugeben. So könnte z.B. ein Perl-Script in Echtzeit ein XML auf STDOUT generieren und dieses würde von deinem Plugin direkt verarbeitet. Wozu auf Festplatte zwischensichern?

    In Ordnung. Auf Festplatte zwischensichern ist eben für diejenigen gedacht die Grabben und Einlesen asynchron machen möchten.


    steffen_b


    Quote

    Wenn du xmltv Format verwenden willst, solltest du xmltv identifier verwenden(ard.de). Dann muss halt ein Mapping von Quelle zu xmltv und ein Mapping von xmltv nach vdr existieren, da führt kein Weg dran vorbei. Alles andere wäre Pfusch. x->xmltv existiert oft dann ja schon.

    Das xmltv2vdr-Plugin gibt ja vor, wie die Grabber mit xmltv2vdr zusammenspielen müssen. Als einzige Formatvorgabe brauche ich eben entweder im Abschnitt <programme> oder im Abschnitt <channel> eine eindeutige ID, die von xmltv2vdr für einen Sender vergeben wurde. Laut http://wiki.xmltv.org/index.php/XMLTVFormat ist es z.B. kein Problem an einen Channel mehrere <display-name> Elemente zu hängen. Vorgabe von xmltv2vdr ist dann eben, das einer davon eine Ganzzahl sein muss, die in der Liste von xmltv2vdr vorkommt (und auch dem Programm entspricht).


    Quote

    Wobei das Zeilenweise durchgehen und sofort eintragen bedeutet das gefordert ist das das XML sortiert ist (das bedeutet es geht nicht einfach so jedes xmltv XML als Eingabe). Weil sonst schlägt das fehl.

    Nein, das xmltv-Format kann wild durcheinander sein, mit der libxml2 werden einfach die Einträge gelesen, die gebraucht werden. Ich meinte damit nur, das es fürs xmltv2vdr-Plugin keine große XML-Verarbeitung gibt ausser: Auslesen und Verwenden.


    Gruß


    Joe_D

  • Quote

    Originally posted by Keine_Ahnung


    Nein! Es braucht zwei Mappings, einmal von Datenquellename zur eines festen Bezeichnung für jeden Sender (ob nun "ard.de" oder "1" ist dabei egal), das ist im Grabber integriert. Und zweites ein Mapping von der festen Bezeichnung der Sender zu den channels.conf Einträgen, das muss das xmltv2vdr Plugin machen.


    Nichts anderes schrieb ich. ^^ Übergabe der EPG daten findet im plugin und von extern eh auf gleichem Weg statt. (einlesen einer datei durch vdr mit svdrp pute dateiname).


    Channelmapping hat zB auch das iEPG plugin integriert und würde auch gerne universal epg plugin sein, Ich meine das listet gemappte sender auch für noepg.


    Irgendwie klingt das schon interessant was du vorhast, andererseits fehlt mir im Detail die Fantasie warum grade so :)

  • Quote

    Original von Joe_D
    Das xmltv2vdr-Plugin gibt ja vor, wie die Grabber mit xmltv2vdr zusammenspielen müssen. Als einzige Formatvorgabe brauche ich eben entweder im Abschnitt <programme> oder im Abschnitt <channel> eine eindeutige ID, die von xmltv2vdr für einen Sender vergeben wurde. Laut http://wiki.xmltv.org/index.php/XMLTVFormat ist es z.B. kein Problem an einen Channel mehrere <display-name> Elemente zu hängen. Vorgabe von xmltv2vdr ist dann eben, das einer davon eine Ganzzahl sein muss, die in der Liste von xmltv2vdr vorkommt (und auch dem Programm entspricht).


    Warum keine Strings zulassen? Ich stelle mir da gerade vor, wie doof ich vor der Plugin-Konfig sitze, nachdem ich mir für $DIENST einen Konverter nach xmltv geschrieben habe und dann für 20 bis 40 Programme anhand von Nummern die Zuordnung machen soll...


    Nummern sind nichtssagend. Zahlen konnte ich mir noch nie merken. Der erste DVB-Receiver, bei dem ich dann die Programme in einer Liste nach Name selektieren konnte, war ein *Segen*!

  • Quote

    Originally posted by steffen_b
    Nichts anderes schrieb ich. ^^ Übergabe der EPG daten findet im plugin und von extern eh auf gleichem Weg statt. (einlesen einer datei durch vdr mit svdrp pute dateiname).


    Channelmapping hat zB auch das iEPG plugin integriert und würde auch gerne universal epg plugin sein, Ich meine das listet gemappte sender auch für noepg.


    Irgendwie klingt das schon interessant was du vorhast, andererseits fehlt mir im Detail die Fantasie warum grade so :)


    Irgendwie stehe ich gerade auf nem Schlauch. Ich glaube wir reden hier aneinander vorbei.


    Nochmal das Beispiel von weiter oben
    --
    Datenquelle 1 nennt den Sender halt ADR, Datenquelle 2 nennt ihn "Das erste" und beim Nutzer in der channels.conf heist er "Omasender". Da muss es zwangsläufig ne Gemeinsame Namensliste (mit "Normnamen" für die Sender) geben zu und von der alle beteiligten Komponenten umsetzen.


    Die Grabber wissen halt wir ihre Datenquelle die Sender nennt und mappen zum Normanamen (egal ob man sich hier nun auf "ard.de" oder auf "1" einigt).
    Und xmltv2vdr weiss wie der Nutzer die Sender nennt (muss der Nutzer einmalig im Plugin konfigurieren) und so kann das Plugin von de Normnamen zur Userliste mappen.
    --
    D.h. der tvm Grabber setzt den sendernamen von "Das Erste" auf "ard.de" um. Und xmltv2vdr weiss das das EPG für den Sender "ard.de" zum Sender "Omasender" (weil der Nutzer halt ninmal beschlossen hat ihn auf seinen VDR so zu nennen) in der Senderliste dieses Users gehört (weil der User dieses Mapping einmalig so konfiguriert hat).


    Man muss hier halt eine Liste mit Normnamen vereinbaren und die Grabber und das Plugin müssen beide umsetzen.
    Weil wenn wenn jeder Grabber direkt zum Namen in der channels.conf umsetzt dann fängt jeder Nutzer an bei JEDEN Grabber den er installiert das Mapping auf seine individuellen channels.conf neu zu erstellen.


    Bedenke, xmltv2vdr und die Grabber sind kein gemeinsames Softwarepaket sondern unabhängige Programme die aus unterschiedlichen Quellen kommen.



    Und ich denke Joe_D meint das System auch so.



    Und so wie ich das verstehe ist hier nur die frage ob man als Normname "ard.de" oder "1" nutzt.


    Quote

    Originally posted by Joe_D
    Nein, das xmltv-Format kann wild durcheinander sein, mit der libxml2 werden einfach die Einträge gelesen, die gebraucht werden. Ich meinte damit nur, das es fürs xmltv2vdr-Plugin keine große XML-Verarbeitung gibt ausser: Auslesen und Verwenden.


    Ich meinte eigentlich die zeitliche Ordnung der Sendungen eines Senders. So wie ich das verstehe fordert xmltv nicht das die Sendungen in der korrekten zeitlichen Reihenfolge im XML stehen.


    Quote

    Originally posted by Mreimer
    Warum keine Strings zulassen? Ich stelle mir da gerade vor, wie doof ich vor der Plugin-Konfig sitze, nachdem ich mir für $DIENST einen Konverter nach xmltv geschrieben habe und dann für 20 bis 40 Programme anhand von Nummern die Zuordnung machen soll...


    Jup, auch meine Meinung. Deswegen finde ich Normnamen in der Form "ard.de" auch besser als reine Ziffern zu verwenden.


    cu

  • http://www.faqs.org/rfcs/rfc2838.html


    Wenn du xmltv Format verwenden willst, solltest du xmltv identifier verwenden(ard.de). Bei vorhandenen Zulieferern gibt es evtl schon das Mapping, bzw muss es geben, hier im Zweifelsfall sich zu einigen müsste dann noch passieren. Also gibt es ein mapping zu xmltv und ein mapping zu vdr.


    Beispiel(epgdata.com):
    http://xmltv.cvs.sourceforge.n…a/channel_ids?view=markup


    71 nach 1 nach irgendwas zu mappen bzw 71 und irgendwas anderes gemerged nach irgendwas zu mappen ...


    Ich versuche mir halt vorzustellen was es bringen würde epgdata2vdr in diesem kontext zu sehen.

  • Quote

    Originally posted by steffen_b
    http://www.faqs.org/rfcs/rfc2838.html


    Schön und gut diese Idee, aber solange niemand zentral so eine Liste Pflegt ist das IMHO blödsinn ;)


    Gäbe es irgendwo ne Liste wo alle Sender ihre eindeutige Bezeichnung haben, so das alle Datenlieferenten und Programme intern einheitliche Namen für Sender verwenden könnten, DANN wäre es in der Tat ne gute Idee sowas zu verwenden.


    Aber solange der Datenlieferant rfc2838 konform ProSieben.de verwendet und ein Programm rfc2838 konform Pro7.de auswertet sehe ich da nix sinnvolles an der rfc2838.


    Quote

    Originally posted by steffen_b
    Beispiel(epgdata.com):
    http://xmltv.cvs.sourceforge.n…a/channel_ids?view=markup


    Die Sky Sender fehlen. Also denken wir uns jetzt für die Sky Sender rfc2838 konforme Bezeichnungen aus und nen anderes Projekt denkt sich für die selben Sender andere rfc2838 konforme Bezeichnungen aus. Und was hat man jetzt von rfc2838? Garnix hat man davon. Am ende pflegt jeder Datenlieferant und jedes Programm ne eigene Liste mit Sendernamen. Ob nun rfc2838 oder nicht.


    Quote

    Originally posted by steffen_b
    Ich versuche mir halt vorzustellen was es bringen würde epgdata2vdr in diesem kontext zu sehen.


    Geht doch gar nicht, an epgdata2vdr stellen sich doch komplett andere Anforderungen.


    cu

  • Quote

    Und so wie ich das verstehe ist hier nur die frage ob man als Normname "ard.de" oder "1" nutzt.

    Es hat niemand geschrieben, das im OSD die 1 angezeigt wird. Dort kann von mir aus ard.de, Das Erste oder sonstwas angezeigt werden.


    Die Kanalliste von xmltv2vdr kann ja so aussehen:

    Code
    1. 1,ard.de
    2. 2,zdf.de
    3. 3,...

    Da diese Liste eigentlich nicht editierbar sein sollte (wenn jemand aus 1,ard.de z.B. 1,zdf.de macht so bekommt er trotzdem von den Grabbern noch das Material der ARD), schlage ich vor diese in Binärform mitzuliefern. Dann ist sie gegen unbeabsichtigte Änderung geschützt und man könnte z.B. im vdr-wiki die neueste Liste zum Download zur Verfügung stellen (obwohl sich bei manchen Programmen ja nicht viel ändert, z.B. gibt es RTL nun schon fast unverändert [ausser ein bisschen Namenskosmetik] seit 1985)


    Zahlen sind IMHO intern einfacher zu verarbeiten als Texte (auch aus XML-Dateien heraus, deshalb nach wie vor mein Vorschlag: mindestens einmal die Kanalnummer im <display-name> der xmltv-Datei enthalten). Und ja, Zahlen auf VDR-Kanäle zuzuweisen ist nicht zumutbar!


    Quote

    Weil wenn wenn jeder Grabber direkt zum Namen in der channels.conf umsetzt dann fängt jeder Nutzer an bei JEDEN Grabber den er installiert das Mapping auf seine individuellen channels.conf neu zu erstellen.

    Hauptnachteil aller zur Zeit verfügbaren EPG-Skripte/Plugins, da die Zuordnung meist über Listen läuft und nicht übers OSD einstellbar ist.


    steffen_b


    Quote

    Wenn du xmltv Format verwenden willst, solltest du xmltv identifier verwenden

    Geht doch:

    Code
    1. <channel id="ard.de">
    2. <display-name lang="de">ARD </display-name>
    3. <display-name lang="de"> ard .de </display-name>
    4. <display-name lang="de">Das Erste</display-name>
    5. <display-name lang="de"> Oma Sender </display-name>
    6. <display-name lang="de"> 1 </display-name>
    7. </channel>

    Hier wird auch ersichtlich, das es für mich am Einfachsten ist die 1 herauszuparsen.


    Quote

    Ich versuche mir halt vorzustellen was es bringen würde epgdata2vdr in diesem kontext zu sehen.

    Weiss ich auch nicht. Die Entwicklung von "Grabbern" bleibt ja jedem selbst überlassen.


    Quote

    71 nach 1 nach irgendwas zu mappen

    Ja so muss es dann laufen fürs xmltv2vdr-Plugin.


    Quote

    bzw 71 und irgendwas anderes gemerged nach irgendwas zu mappen ...

    Wie bitte? Wo soll da was vor dem mappen gemerged werden?


    Gruß


    Joe_D

  • Quote

    Originally posted by Joe_D

    Es hat niemand geschrieben, das im OSD die 1 angezeigt wird. Dort kann von mir aus ard.de, Das Erste oder sonstwas angezeigt werden.


    Es geht darum ob als Normname "ard.de" oder "1" verwendet wird.


    Evtl. wäre es ja ganz gut wenn wir uns erstmal auf Begrifflichkeiten einigen würden. Ich schlage "Normaname" als Begriff für die interne Senderbezeichnung vor.


    Und damit ist wirklich die interne Bezeichnung eines Senders über die verschiedenen Programmteile hinweg gemeint, und nicht irgendwas was in die GUI gelangt oder als zusätzlicher Displayname in der XML landet.


    Quote

    Originally posted by Joe_D
    Geht doch:

    Code
    1. <channel id="ard.de">
    2. <display-name lang="de">ARD </display-name>
    3. <display-name lang="de"> ard .de </display-name>
    4. <display-name lang="de">Das Erste</display-name>
    5. <display-name lang="de"> Oma Sender </display-name>
    6. <display-name lang="de"> 1 </display-name>
    7. </channel>

    Hier wird auch ersichtlich, das es für mich am Einfachsten ist die 1 herauszuparsen.


    Warum nicht den <channel></channel> einfach komplett weglassen und einfach nach "ard.de" parsen?
    Das <channel></channel> braucht hier im XML doch eh niemand.


    Also einfach so


    Code
    1. <programme channel="adr.de" start="20101130000000 UTC" stop="20101130015000 UTC" vps-start="20101129235000 UTC">
    2. <title lang="de">Der rosarote Panther</title>
    3. </programme>
    4. <programme channel="zdf.de" start="20101130000000 UTC" stop="20101130015000 UTC" vps-start="20101129235000 UTC">
    5. <title lang="de">ZDF Film</title>
    6. </programme>


    Und einfach alle <programme> mit dem channel Atribut "ard.de" lesen wenn man das ARD EPG will.



    Oder gehts darum das du Programmintern ne Liste nutzen willst und es damit wesentlich einfacher ist hier den VDR Programmnamen für Sender "1" zu finden als ein Array zu nutzen das einem den VDR Sendernamen zum String "ard.de" gibt?
    Also Nummern als "Normnamen" anstelle von Strings weils einfacher zu programieren ist?


    cu

  • Keine_Ahnung


    Quote

    Also Nummern als "Normnamen" anstelle von Strings weils einfacher zu programieren ist?

    Ja, das war mein erster Gedanke. Aber intern kann ich ja immer noch mit Nummern arbeiten.


    Quote

    Und einfach alle <programme> mit dem channel Atribut "ard.de" lesen wenn man dasARD EPG will.

    Dann brauchen wir eine Liste der vom xmltv2vdr-plugin bekannter channel-Attribute.


    Die RFC2838-Notation finde ich gar nicht so übel:

    Code
    1. theater.zdf.de
    2. dokukanal.zdf.de
    3. doku.zdf.de
    4. info.zdf.de


    Gruß


    Joe_D