Proof of Concept: vdrseriestimer aufgebohrt...

  • Hallo,
    zuerst einmal, das ist nix fertiges/releasereifes. Es richtet sich an Bastler denen die Möglichkeiten von epgsearch/vdrseriestimer manchmal einfach nicht ausreichen. Es werden grundlegende Linuxkenntnisse verlangt, mit ner C&P Installationsanweisung kommt man hier nicht weiter.


    Ich lade das was ich aktuell habe einfach mal hoch um überhaupt erstmal zu sehen ob an so was überhaupt generell Interesse besteht (ist schon eher was für Freaks/Extremserienaufnehmer). Das Archiv auch nicht einfach entpacken sondern erst mal an der GUI reinschauen (ich hab einfach so aus meinem Dateisystem rauskopiert).



    OK, worum gehts... Im Prinzip ist es das selbe Prinzip wie beim vdrseriestimer Addon.
    Beim Aufruf wird aber zuerst immer generell der komplette EPG Eintrag vom VDR geholt (per resfullapi/dbus2vdr kein Problem), per vdrserietimer der Episodentitel nachgeschlagen und das Ergebnis (wenn es eines gab) im EPG gespeichet.
    Wurde der EPG Eintrag irgendwie geändert wird er wieder dem VDR übergeben und der Episodentitel auf stdout ausgegeben (nur falls es einen Treffer gab).


    Hier der erste Vorteil, da das Ergebnis im EPG Eintrag gespeichert wird ist ein erneuter Aufruf des Scriptes beim nächsten Suchtimerupdate überflüssig. Die Geschwindigkeit und Last des Suchtimerupdates wird (gerade bei sehr vielen Treffern) also deutlich verbssert.


    Ferner werden nach dem Lesen des EPG Eintrages im Verzeichis <VDRCONFDIR>/plugins/epgsearch/modepg vorhandere Python Snippeds aufgerufen. Diese haben den EPG Eintrag in Form eines einfach zu nutzenden Obejektes (Das Interface ist bewusst nicht Python like, erinnert eher an sowas wie Basic ;) ) zur Verfügung und können es beliebig manipulieren.
    https://dl.dropboxusercontent.…dEPG.vdrepg.EPGevent.html


    Beispiel: Man will eine Season einer bestimmten Serie nicht aufzeichnen wei man sie schon anderweitig gesehen hat. Dann erstellt man eine Datei mit folgenden Inhalt:

    Code
    if epg.gettitle() == "Fringe - Grenzfälle des FBI":
    	series_found, episode_found, series, episode_title, season, episode, ststring = epg.do_lookup()
    	if episode_found:
    		if season == 3:
    			epg.set_return_invalid()


    Anmerkungen:
    - Eplists.pm aus dem vdrseriestimer Packet muss gepatcht weren (ugly, aber ich habs nicht besser hinbekommen).
    - xmltv2vdr muss gepatcht weden damit es die geänderten EPG Einträge in Ruhe lässt
    - Es wird das epgfreeze Plugin (immer noch im ersten Teststadium aber funktionell) benötigt damit die geänderten EPG Einträge nicht durchs Sender EPG überschrieben werden (Änderungen und Updates werden trozdem berücksichtigt). epgfreeze vor xmltv2vdr starten. Die Zusammenarbeit mit anderen EPG Handler Plugins ist nicht getestet.
    Aber evtl. findet sich hier ja auch ne allgm. Vereinbarung für die Verwendung der Streams?
    - epgsearch hat nen Bug, beim ersten Aufruf per system wird der zurückgegebene Subtitle verdoppelt. D.h. kommt "Futurama~01x05 eine lustige Episode" als Ergebnis zurück wird es im Verzeichnis "Futurama/01x05 eine lustige Episode/Futurama/01x05 eine lustige Episode" aufgezeichnet. Niemand weiss warum das so ist ;)


    https://dl.dropboxusercontent.…6648062/modepg/modepg.tgz


    Wie gesagt, einfach mal nur zum Spielen für alle die Interesse am Thema haben und zum hier drüber reden. Nix fertiges.



    Edit: Das wichtigste hätte ich benahe vergessen ;)
    Durch das ändern des EPG landen die Subtile auch "normiert" (d.h. auch keine doppelten Aufnahmen wenn Sender leicht untershcidliche Episodentitel für die selben Episoden vewenden) und mit vorangestellten "<SS>x<EE>" in der epgsearchdone.data. Das ist natürlich ein Problem wen eine Serie schon halb aufgezeichnet wurde. Deswegen gibt es mehere Variablen
    %LookupEpisode%: Das selbe wie %serie" beim addon-vdr-seriestimer
    %LookupEpisodeModEpg%: Hier wird der Subtitle im EPG geändert
    %FilterParts%: Die Voreinstellung nicht nachschlagen und nicht speichern. Gedacht wen man hier nur die Parts anwenden will.


    Die Auswertung ist aber noch nicht drin, im Moment geht nur %LookupEpisodeModEpg%


    cu

  • Sehr interessant, ich hoffe ich habe am WE etwas Luft um mir das mal im Detail anzusehen :)
    Hab ich das richtig gesehen, dass du vdrseriestimer bereits zu einem guten Teil in Python nachgebaut hast?


    Ansonsten muss ich dann auch mal xmltv2vdr sauber einrichten und damit spielen...

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Wow. Da hast du ja etwas gezaubert. Danke dafür! Ich nehme an, dies betrifft auch mein "Tatort" Thema (Tatort als Serientimer: So viel Doppeltes --> Abhilfe?)?


    Genau, auch für so was ist das gedacht. Und das schöne ist, wenn einer nen brauchbares Snipped schreibt dann können alle anderen das einfach so nutzen (runterladen, im richtigen Verzeichnis speichern und fertig).


    Für das Tatortproblem... das Snipped hat ja den gesamten EPG Eintrag zur Verfügung und kann per epg.do_lookup() die Infos von vdrserietimer holen. Und dann per epg.set_returnstring("Tatort Berlin~<Episodenname>") das passende Verzeichnis setzen. Und für das snipped steht die gesamte Python Power zur verfügung.


    Das muss ich erstmal sacken lassen.


    Jup, es ist eigentlich alles ganz einfach. Aber ehe man das sieht braucht man wohl erstmal ne ruhige Stunde um sich das alles erst mal anzuschauen :)


    Hab ich das richtig gesehen, dass du vdrseriestimer bereits zu einem guten Teil in Python nachgebaut hast?


    Nein, ich habe nur nen Wrapper geschrieben um das sauber aufzurufen (vdrseriestimer.py). Der seriestimer macht seine Arbeit ja schon gut. Das nachzubauen wäre dann nochmal ein aufwendiges Extraprojekt.


    Das einzige Problem mit dem seriestimer ist IMHO das er mit den Returncodes/sdterr/sdtout und den Zeichencodierungen nicht sauber umgeht.


    cu

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!