epgdata2vdr - möchte es wer übernehmen/weitermachen/mitmachen ?

  • Moin!


    Ich habe vor ein paar Monaten einen Ausflug in die C/C++ Welt unternommen. Damals funktionierte tvmovie2vdr nur mit mehreren 100 MB Speicher zuverlässig. Die Idee war mein epgdata.com Abo vernünftig und zuverlässig zu benutzen, und am Ende ein Plugin ähnlich wie tvm2vdr zu haben. Nachdem der Parser zu meiner Zufriedenheit lief habe ich weiter nichts mehr dran gemacht Basieren tut das ganze auf Anfängen von "gda".


    Da ich wegen Job und anderen Hobbies keine Zeit mehr dafür finde und das ganze ja schliesslich Spaß sein soll, möchte ich es jetzt aufgeben. Ich suche hier jemanden der evtl da dran weiterarbeiten will. (Ein Umzug auf vdr-developer.org bringt ja nicht automatisch jemanden der es weiterprogrammiert ;) )


    Was funktioniert ?
    * man kann dem Kommandozeilenprogramm das Zipfile übergeben und bekommt ein Textfile mit gleichen Namen und .epg Endung zurück, was in den VDR geladen werden kann
    * es ist schnell (ungefähr eine Sekunde pro Datei) und braucht kaum Speicher
    * Korrektes Character Encoding handling (dank libxml2) Das Encoding wird aus dem Environment gelesen und libxml2 übergeben


    Was fehlt noch ?
    * Bildweiterverarbeitung
    * Plugin-Integration (obwohl ich ich nicht zwingend die Notwendigkeit sehe, da neuere VDR Versionen auch Dateien aus dem Filesystem lesen können)
    * Download aus dem Programm heraus
    * Cleanup alter Dateien


    Wenn es jemand testen will (ist aber weitestgehend auf sich gestellt) , für meine eigene Nutzung benutze ich ein Shellskipt.



    Unter /root/test1 sind 2 Verzeichnisse, include und files. in include liegen die Dateien aus dem include.zip von epgdata.com. In files werden von obigen Skript die Dateien gespeichert und verarbeitet. Ich meine HTPC-Schrauber hatte noch eine verbesserte Version des Scripts. Es lädt wenn die Datei noch nicht existiert, die EPG Daten mit dem von epgdata.com gegebenen Namen herunter, processed sie und läd sie in den VDR.


    Liegen tut das ganze dort:
    http://svn.origo.ethz.ch/wsvn/…vm2vdr/trunk/epgdata2vdr/ 
    Also mit im svn von tvm2vdr.


    Ich hoffe irgendjemand hat Lust es zu Ende zu programmieren, ich nicht mehr ... isch habe fertig, sozusagen ;)

    VDR User: 87 - LaScala LC14B - LG/Phillipps 6,4" VGA Display | Asrock H61/U3S3 | G630T | 1x 16GB Mobi Mtron 3035 1x WD 750GB 2,5" |1x L4m DVB-S2 Version 5.4

    Dieser Beitrag wurde bereits 1 Mal editiert, zuletzt von steffen_b ()

  • Ja, Script hab ich. Aber nur leicht verbessert. Insbesondere löscht es alte Dateien.


  • Ich habe nochmal ne Änderung eingecheckt, so das er wirklich alle benötigten Daten im $WORKDIR/include/ sucht (category.xml, genre.xml, qy.dtd und epgdata2vdr_channelmap.conf). Ausserdem heisst das File nach dem make nicht mehr test sondern epgdata2vdr.


    Da ich meinen VDR jetzt mit Helau's patch für PUTE gepatcht habe (das PUTE Dateien vom Dateisystem einlesen kann, im Standard VDR seit 1.7.6 meine ich), anbei nochmal das Skript für diesen Fall.


    In /var/cache/vdr/epgdata2vdr müssen 2 Unterverzeichnisse liegen:
    files - hier werden die Dateien heruntergeladen und bearbeitet
    include - hier müssen category.xml, genre.xml, qy.dtd und epgdata2vdr_channelmap.conf liegen. Die ersten 3 müssten im include.zip sein, welches man sich mit seiner Pin bei epgdata.com runterladen kann.



    Ich hab das Aufräumen jetzt auch ins Skript reingetan, aber etwas anders. Obiges Script habe ich als epgdata2vdr.sh ins /usr/local/bin getan, das epgdata2vdr binary hab ich auch dorthingetan. Scheint jetzt mit einem Aufruf von epgdata2vdr.sh egal von wo zu funktionieren.


    Hab das ganze nur gemacht weil epgdata anscheinend die Menge an Daten erhöht hat und das importieren per normalen PUTE nicht mehr zuverlässig lief. Das XML Parsen braucht bei den momentanen Dateigrössen anscheinend etwas länger als vor ein paar Monaten (ca 8 Sek./Datei auf meiner Machine). + PUTE aus der Datei 4 Sek/Datei, ists immernoch ok.


    Sourcecode habe ich auch mal attached.

  • bekomm keine daten in den vdr mit dem letzten script (eigentlich mit keinem)

  • Spontan sehe ich da 3 Probleme


    TVM2VDR: Error reading '(null)'!


    Was liegt in deinem /var/cache/epgdata2vdr/include/ Verzeichnis ? Sieht so aus als ob das "epgdata2vdr_channelmap.conf" dort nicht liegt. (Könnte es auch so sagen ich weiss ^^


    Dann siehts so aus als ob die Daten korrupt sind,:
    /var/cache/epgdata2vdr/include/:741405: parser error : Couldn't find end of Start Tag d9
    <d9 <data>
    Kannst du das XML mal checken ? Ich habe nur das "de" Paket, kann es also nicht checken.


    Der letzte Fehler scheint dann nur nen Folgefehler zu sein.
    501 Cannot open file "@/var/cache/epgdata2vdr/files/20091014_20091014_at_qy.epg"


    Weil das File nicht generiert wurde. Wenn es doch da sein sollte, solltest du schauen das der user vdr access auf das File hat.


    Grüße


    Steffen


    EDIT: Würd mich freuen wenn meine Arbeit auch anderen nützt, auch wenn alles noch etwas roh ist (Siehe errorhandling/Fehlermeldungen) :)


    EDIT2: für de gibts seit 5 Tagen kein update.

    VDR User: 87 - LaScala LC14B - LG/Phillipps 6,4" VGA Display | Asrock H61/U3S3 | G630T | 1x 16GB Mobi Mtron 3035 1x WD 750GB 2,5" |1x L4m DVB-S2 Version 5.4

    Dieser Beitrag wurde bereits 1 Mal editiert, zuletzt von steffen_b ()

  • Zitat

    Was liegt in deinem /var/cache/epgdata2vdr/include/ Verzeichnis ? Sieht so aus als ob das "epgdata2vdr_channelmap.conf" dort nicht liegt. (Könnte es auch so sagen ich weiss ^^


    wo steht das die dahin gehoert?


    jetz kommt


    also auch ned wirklich besser


    mit tvmovie2vdr is mein swap voll und rechner unbedienbar.
    ev wirklich corrupt oder daten geaendert.

  • Das steht im Post auf den du geatwortet hat: ;)


    Zitat

    In /var/cache/vdr/epgdata2vdr müssen 2 Unterverzeichnisse liegen:
    files - hier werden die Dateien heruntergeladen und bearbeitet
    include - hier müssen category.xml, genre.xml, qy.dtd und epgdata2vdr_channelmap.conf liegen. Die ersten 3 müssten im include.zip sein, welches man sich mit seiner Pin bei epgdata.com runterladen kann.


    Ist nicht vielleicht kaputt, sondern ziemlich sicher:
    <d9 <data>
    Das ist aus dem XML die betreffende Stelle. Die Struktur ist
    <data>
    ...
    <d9>...</d9>
    ...
    </data>


    also ist das XML kaputt.


    Passiert das an allen Tagen ? Normal sollte er beim nächsten Tag weitermachen, solange bis keine Daten mehr vorhanden sind


    Die besagte Datei enthält übrigens das Mapping zwischen epgdata.com id und vdr channel-id. Die muss natürlich dann auch auf deine Gegebenheiten angepasst sein. Die beiliegende ist für dvb-s Astra 19.2E

    VDR User: 87 - LaScala LC14B - LG/Phillipps 6,4" VGA Display | Asrock H61/U3S3 | G630T | 1x 16GB Mobi Mtron 3035 1x WD 750GB 2,5" |1x L4m DVB-S2 Version 5.4

    Dieser Beitrag wurde bereits 2 Mal editiert, zuletzt von steffen_b ()

  • Also irgendwas ist an der letzten Version krumm.


    Ich krieg:

    Code
    1. /var/cache/vdr/epgdata2vdr/include:2: I/O warning : failed to load external entity "/var/cache/vdr/epgdata2vdr/qy.dtd"


    Die qy.dtd ist vorhanden. Aber in ./include .
    So hab ich ihm das auch mitgegeben. Aber irgendwie schneidet er das include hinten dran ab.

  • Kannst du mal versuchen den letzten slash auch mitzugeben ob sich dann etwas ändert?


    EDIT: Blödsinn ist ja schon im script drin ...
    EDIT2: kann ich aber exakt so reproduzieren, wenn es ohne letzten slash aufgerufen wird:


    Also epgdata2vdr $WORKDIR/include $WORKDIR/files/$FILE.zip anstatt epgdata2vdr $WORKDIR/include/ $WORKDIR/files/$FILE.zip

    VDR User: 87 - LaScala LC14B - LG/Phillipps 6,4" VGA Display | Asrock H61/U3S3 | G630T | 1x 16GB Mobi Mtron 3035 1x WD 750GB 2,5" |1x L4m DVB-S2 Version 5.4

    Dieser Beitrag wurde bereits 3 Mal editiert, zuletzt von steffen_b ()

  • Nein, das wars. Danke. Ich hab am Script gebastelt. Und dabei ist mir der Slash flöten gegangen.


    Hier die aktuelle Version des Scripts. Diese läd auch automatisch immer das include.zip herunter und entpackt es. Außerdem hab ich die Konfiguration (PIN und WORKDIR) nach /etc/vdr/plugins/epgdata2vdr.conf ausgelagert.
    Eigentlich müsste die epgdata2vdr_channelmap.conf auch dort hin.


    steffen_b : Warum nimmst Du die qy.dtd eigentlich nicht direkt aus der Tagesdatei? Dort steckt sie ja jeweils drin.


    Hier die epgdata2vdr.sh:


    Und die zugehörige epgdata2vdr.conf

    Code
    1. WORKDIR=/var/cache/vdr/epgdata2vdr
    2. PIN=xxxxxxxxxxx
  • Code
    1. svdrpsend PUTE @$WORKDIR/files/$FILE.epg

    bringt hier:


    501 Cannot open file "@/var/cache/epgdata2vdr/files/20091018_20091015_at_qy.epg"


    ohne @ tuts:

    Code
    1. svdrpsend PUTE $WORKDIR/files/$FILE.epg


    hab nur noch das problem das *.epg leer bleibt.


    in der epgdata2vdr_channelmap.conf werden ja nur die ersten 2 felder ausgewertet?
    54 = C-1-1118-13001 // Orf1


    das hinter // ist egal?

  • Der Patch scheint drauf zu sein, da er sagt er kann das File nicht lesen. Da VDR versucht das File zu lesen muss es auch lesbar sein für VDR --> Berechtigung ?


    Warum es leer bleibt, gute Frage ....


    Hat das at Paket evtl den gleichen blödsinnigen Inhalt* wie das de Paket ? Was sagen die Dateigrössen des Zip File ?



    *Alle Einträge haben als Channel Id die nicht vergebene 0, das ZIP hat hier 34kb


    vdrdevel heisst 1.7.9 ? Dann muss nichts gepatcht werden für PUTE

    VDR User: 87 - LaScala LC14B - LG/Phillipps 6,4" VGA Display | Asrock H61/U3S3 | G630T | 1x 16GB Mobi Mtron 3035 1x WD 750GB 2,5" |1x L4m DVB-S2 Version 5.4

    Dieser Beitrag wurde bereits 2 Mal editiert, zuletzt von steffen_b ()

  • vergiss pute :)
    darum kuemmern wir uns wenn der rest tut :)



    schaut alles normal aus.

  • Nö nicht normal ;)


    Code
    1. -rw-r--r-- 1 root root 0 2009-10-15 18:17 20091015_20091015_de_qy.epg
    2. -rw-r--r-- 1 root root 25240 2009-10-15 18:17 20091015_20091015_de_qy.zip


    Wie du siehst das gleiche hier, aufs byte genau, oder nochmal umgerechnet:

    Code
    1. -rw-r--r-- 1 root root 0 2009-10-15 18:17 20091015_20091015_de_qy.epg
    2. -rw-r--r-- 1 root root 25K 2009-10-15 18:17 20091015_20091015_de_qy.zip


    ;)


    Zitat aus der Antwort von epgdata.com

    Zitat


    Wir arbeiten bereits intensiv daran und hoffen, dass das Problem zu Beginn der nächsten Woche langfristig behoben ist.
     
    Wir bitten Sie, die Unannehmlichkeiten zu entschuldigen.


    Ich denke dein Setup passt schon(Was das Parsen angeht).


    Also in Ermangelung an vernünftigen Daten, zurück zu PUTE ? :D
    Der VDR meckert das er kein Zugriff hat. Evtl. das Verzeichnis nicht auf 755 ? Die Dateien solte er ja lesen können.

  • Kann ich mir nicht vorstellen. Ohne @ wertet er es als Eingabe aus nicht als Dateiname. Kann mir kaum vorstellen wie Klaus das sonst implementiert haben sollte.


    Bekommst du ohne @ eine Zeile:
    250 EPG data processed from "/var/cache/vdr/epgdata2vdr/files/20091031_20091015_de_qy.epg"


    Wenn kein 250 zurückkomt, gibts kein EPG ;)

  • Jo, leider keine Daten aktuell.
    Ich hab auch nochmal ne Mail geschrieben. Das die ein wenig Druck kriegen.
    Komisch, gestern kam noch einiges.


    Ich habe mein zuletzt gepostetes Script nochmal angepasst.
    Jetzt extrahiert er jeweils auch das dtd neu aus den heruntergeladenen Paketen.


    Man sollte sich mit dem Script nun also weder im das include noch um das dtd kümmern müssen. Das sollte er automatisch holen.

  • Gestern waren die Daten vom letzten Freitag. Deswegen denke ich das das Aufräumen mit


    find $WORKDIR/files -type f -mtime +1 -exec rm {} \;


    nicht gut funktioniert. Siehe den Cleanup Teil in meinem letzten Script, dann wird nichts doppelt geladen oder processed auch wenn mal wieder nen paar Tage nix kommt. :)