[ANNOUNCE] Easteregg: epgd/epghttpd 1.0.0 beta1 - jetzt mit web /serientimer Unterstützung

  • Habe gerade die 'Auftragshistory' getestet, bei mir geht sie.
    Habt ihr damit noch Probleme?


    Dirk, hast du da etwas behoben?

  • horchi & seahawk1986
    Ja, sowas in der Art wäre schon cool, wenn das alles ein wenig aufgedröselt wird und man da leichter drop-ins ablegen kann. Ich bin auf das Ergebnis gespannt und gebe gerne Kommentare ab. :)


    ofenheizer
    Mit einem Programm ist man bei der Benennung viel flexibler, das wird man nie mit einem Format-String ordentlich abbilden können. Aber der Standard ist ja für die meisten schon praktikabel genug. Ansonsten gibt es ja diverse Python-Programmierer, die da sonst bei Wünschen helfen können.
    Ansonsten empfehle ich Think Python


    Lars.

  • Um den Gedanken mal weiter zu spinnen ... wenn Alexander das auf einen Konfig String je Mode runter-brechen kann ...


    Dann könnten wir im WEB anbieten beliebig viele Modes zu definieren, jeweils mit Name und Config-String und diese dem Python zu übergeben.


    Was denkt ihr?

  • Irgendwo muss man ja noch die Logik abbilden, ein Format-String allein hilft dir ja eigentlich nur weiter, wenn du genau definiert hast, welche Felder aus dem event-Objekt verwertbare Daten enthalten und was damit geschehen soll.
    Mein Ansatz wäre, dass man über das Dictionary namingmodes (Zeile 32, das der User letztendlich anpassen dürfen soll) die Modus-Angabe auf die gewünschte Funktion zur Erzeugung des Aufnahmepfades mappen kann. Wenn da vom WFE mehr als die bislang definierten naming modes 1-5 kommen, ist das grundsätzlich kein Problem.


    Was ich noch gerne hätte, wäre die Möglichkeit mir zum Testen der unterschiedlichen Sendungsarten und Modes für beliebige Sendungen ein Mockup-Event-Objekt anhand der EPG-ID aus der Datenbank zu erstellen - vielleicht kann mir jemand ein Beispiel für eine MySQL-Abfrage geben, die mir die notwendigen Felder (title, shorttext, starttime, year, category, episodname, shortname, partname, season, part, number, extracol1, extracol2, extracol3) liefert.

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Viel python bräuchte man dann nicht mehr glaube ich - wäre aber immer noch möglich.


    Verstehe ich das richtig , dass ein Formatstring quasi "Tokens" enthalten würde und wie printf ausgefüllt würde - z.B.


    %S wäre der Serienname, %s wäre die Staffel, %e wäre die Episodennummer, %F die Folgennummer %T wäre der Titel, %t wäre der Subtitle - bei den numerischen Tokens wären führende Nullen möglich mit z.B. %0s?


    Dann hätte ich einen Formatstring "Serienaufnahmen" mit dem Inhalt "Serien~%S~%0s%0e_-_%t" der dann für die 3 Episode der 2. Staffel einer Serie das hier erzeugt:


    "Serien/<Eine Serie>/S02E03_-_<Der Subtitle der Folge der Serie>


    Dann bliebe noch eine Aufgabe für Tatort Staffel für Jahreszahl - ich war schon mal kurz davor, das in dem View zu ändern - aber da hatte ich Bammel vor möglichen Nebenwirkungen....


    Oder bin ich auf dem Holzweg?

  • Verstehe ich das richtig , dass ein Formatstring quasi "Tokens" enthalten würde und wie printf ausgefüllt würde - z.B.


    %S wäre der Serienname, %s wäre die Staffel, %e wäre die Episodennummer, %F die Folgennummer %T wäre der Titel, %t wäre der Subtitle - bei den numerischen Tokens wären führende Nullen möglich mit z.B. %0s?


    Ich würde da die format() Funktion von Python nehmen: https://docs.python.org/3.4/library/functions.html#format weil damit die Reihenfolge bei benannten Platzhaltern beliebig gewählt werden kann. Formatierungen wie z.B. führende Nullen werden da auch unterstützt: https://docs.python.org/3.4/library/string.html#formatspec
    Man muss sich dann aber auf den Typ für eine Variable festlegen - in der originalen recordings.py sieht es für mich so aus als wäre dort vorgesehen nicht vorhandene numerische Werte für Staffel, Episode und Gesamtnummer durch einen Platzhalter wie "?" zu ersetzen: https://projects.vdr-developer…/recording.py?h=http#n106
    Deswegen habe ich das in meinem Beispiel ausgelagert (da nimmt er nur ein "X" statt einem "?"):


    Wenn man auf die Platzhalterzeichen verzichten kann (z.B. weil man in dem Fall, dass nicht alle Infos da sind, auf eine andere Benennungs-Methode zurückfällt), dann ist es auch kein Problem die führenden Nullen direkt im Format-String anzugeben:

    Code
    def format_episode(prefix_list, season, part, number, desc):
        element_list = [prefix_list, "S{s:02}E{e:03} - {p}. {d}".format(
            s=season,
            e=part,
            p=number,
            d=desc),
            ]
        return "~".join(itertools.chain.from_iterable(element_list))

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Wenn man auf die Platzhalterzeichen verzichten kann (z.B. weil man in dem Fall, dass nicht alle Infos da sind, auf eine andere Benennungs-Methode zurückfällt), dann ist es auch kein Problem die führenden Nullen direkt im Format-String anzugeben:


    ach ich hab das mit den Fragezeichen vor allem für mich da drin damit ich sehe das ich mich bei Mike einloggen muss und zumindest meine Serien nachpflege :P


    Das sieht so falsch in der Timerliste aus, da kannst du gar nicht anders als es korrigieren ;)


    Christian

    CKone: yavdr-ansible/18.04 LTS/2.4.1/kodi18 auf Intel DH67BL, Intel Celeron G540, 2x 2GB Kingston DDR3, Zotac GT630 1GB, S2-1600, Ocz Agility 3 60GB, LG GH24NS DVD, 15.6" Selbstbau TFT, Harmony 665, CIR Selbstbau - das Ganze im Silverstone SST-SG03B
    CKtwo: yavdr-ansible/18.04 LTS/2.4.1/kodi18 auf Intel DH67BL, Intel Celeron G1610, 2x 2GB Corsair DDR3, Zotac GT630 1GB, TT S2-1600, Ocz Vertex 2 50 GB, 92 Kanal Seduatmo, Harmony 665, atric USB
    CKthree: yavdr-ansible/22.04 LTS/2.6.1/kodi19.3 auf Intel NUC, Celeron J4005, UHD Graphics 600, 4GB Crucial DDR4, Ocz Vertex2 50 GB, Harmony 350

    PowerEdge: Ubuntu Server 16.04 LTS / VDR 2.4.1 auf Dell PowerEdge T20, Xeon E3-1225 v3, 16GB ECC DDR3, 2x Cine S2 V6 mit Duoflex, Samsung 840 EVO 120GB, 3x WD White WD80EZAZ 8TB in SW Raid5



  • Dann bliebe noch eine Aufgabe für Tatort Staffel für Jahreszahl - ich war schon mal kurz davor, das in dem View zu ändern - aber da hatte ich Bammel vor möglichen Nebenwirkungen....


    mach doch, ist doch nur ein View - es wird nur nicht zum gewünschten Ergebnis führen da im py ja die Staffel vorliegt und 1969 addiert werden um auf die Jahreszahl zu kommen


    Code
    season = str(int(event.season())+1969)


    Christian

    CKone: yavdr-ansible/18.04 LTS/2.4.1/kodi18 auf Intel DH67BL, Intel Celeron G540, 2x 2GB Kingston DDR3, Zotac GT630 1GB, S2-1600, Ocz Agility 3 60GB, LG GH24NS DVD, 15.6" Selbstbau TFT, Harmony 665, CIR Selbstbau - das Ganze im Silverstone SST-SG03B
    CKtwo: yavdr-ansible/18.04 LTS/2.4.1/kodi18 auf Intel DH67BL, Intel Celeron G1610, 2x 2GB Corsair DDR3, Zotac GT630 1GB, TT S2-1600, Ocz Vertex 2 50 GB, 92 Kanal Seduatmo, Harmony 665, atric USB
    CKthree: yavdr-ansible/22.04 LTS/2.6.1/kodi19.3 auf Intel NUC, Celeron J4005, UHD Graphics 600, 4GB Crucial DDR4, Ocz Vertex2 50 GB, Harmony 350

    PowerEdge: Ubuntu Server 16.04 LTS / VDR 2.4.1 auf Dell PowerEdge T20, Xeon E3-1225 v3, 16GB ECC DDR3, 2x Cine S2 V6 mit Duoflex, Samsung 840 EVO 120GB, 3x WD White WD80EZAZ 8TB in SW Raid5



  • mach doch, ist doch nur ein View - es wird nur nicht zum gewünschten Ergebnis führen da im py ja die Staffel vorliegt und 1969 addiert werden um auf die Jahreszahl zu kommen


    Code
    season = str(int(event.season())+1969)


    Christian


    Im py würd ich das dann ja weglassen - hätte auch den Vorteil, dass schon im WebIf die korrekte Staffel angezeigt wird

  • Um nochmal auf meine Frage zurückzukommen:

    Was ich noch gerne hätte, wäre die Möglichkeit mir zum Testen der unterschiedlichen Sendungsarten und Modes für beliebige Sendungen ein Mockup-Event-Objekt anhand der EPG-ID aus der Datenbank zu erstellen - vielleicht kann mir jemand ein Beispiel für eine MySQL-Abfrage geben, die mir die notwendigen Felder (title, shorttext, starttime, year, category, episodname, shortname, partname, season, part, number, extracol1, extracol2, extracol3) liefert.


    Trifft z.B. so eine Abfrage die gleichen Felder wie beim event-Object, dessen Funktionen in https://projects.vdr-developer…e/lib/python.c?h=http#n14 ff. definiert werden?

    SQL
    SELECT sub_title, sub_shorttext, cnt_starttime, sub_year, sub_category, epi_episodename, epi_shortname, epi_partname, epi_season, epi_part, epi_number, epi_extracol1, epi_extracol2, epi_extracol3  FROM epg2vdr.eventsviewplain WHERE cnt_eventid='102424802';

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Habe gerade die 'Auftragshistory' getestet, bei mir geht sie.
    Habt ihr damit noch Probleme?


    Der Fehler ist bei mir nach aktuellem "git pull" behoben.

    Zitat


    Dirk, hast du da etwas behoben?


    Zitat "Ich habe aber generell was am Daumen gemacht, bitte testet jetzt nochmal. Wenn nicht, wäre es gut, wenn ihr mal ins log schaut oder in der Browserkonsole."


    Das dürfte es gefixt haben, Danke :)


    Peter

    KODI, tvh, arch x86_64, Octopus net 2 x Duoflex C/C2/T2 , NUC7i3BNH, Crucial MX300 2TB, LG LM 669S

    Linux is the best OS I have ever seen -- Albert Einstein

  • Her­vor­ra­gende Arbeit :tup Danke...


    Meinen Plan, meine Infrastruktur vollständig umzustellen, kann ich jedoch leider noch nicht ganz durchziehen.


    Auf dem Server läuft für jeden Client noch eine VDR-Instanz um folgendes zu gewährleisten:
    - Die Aufnahmeverzeichnisse sind vollständig disjunkt.
    - Jeder Client sieht nur die Timer, die von dem Client stammen oder für die epgsearch für diesen Client einen angelegt hat.


    Damit kommen wir zu den ersten Problemen:
    - Die VDR-Instanzen haben in der Tabelle vdrs alle den gleichen Namen. Das macht es etwas schwierig, eine eindeutige Zuordnung zu treffen. Eine Änderung ist zwar kurzfristig in der Tabelle möglich, aber nach dem nächsten Restart ist der Name wieder gleich.
    - Der SVDRP Port scheint immer der Standard-Port 6419 zu sein, obwohl meine Instanzen jeweils einen eigenen anderen Port haben.
    - Die IP-Adresse der Instanzen ist die IP-Adresse der Docker-Bridge und nicht die von (bei mir) eth0. Könnte eine Änderung von epg2vdr.NetDevice das Gewünschte bewirken?


    Mein Wunsch wäre nur ein einziger Aufnahmeserver. Deshalb die Fragen, ob das möglich ist?
    - Suchtimer zwar für den Aunahmeserver anlegen, aber die "Zugehörigkeit/Sichtbarkeit" für einen bestimmten Client
    - Dasselbe für Timer direkt vom Client
    - Ein Client legt einen Timer an, der wandert in den Aufnahmeserver, aber das Videoverzeichnis wird pro Client eingestellt. In recordings.py gibt es leider keine Infoirmation, welcher Client den Timer "sehen" soll. Ansonsten könnte man das da einbauen.



    Zabrimus

  • rechner:


    Hab nen neuen "Daumenhänger":


    Magazinansicht, Sendungsdetailansicht aufrufen, "Aufnahme"-Button betätigen und Timer speichern, anschließend hängt die Sendungsdetailansicht.


    chrome console sagt:



    PS: Die abgebildete Sendung wollte ich nicht wirklich aufnehmen :)

  • Kann ich bestätigen - den Fehler

    Einmal editiert, zuletzt von magicamun ()

  • Zabrimus,


    Haben die vdrs unterschiedliche Instanz-Ids? Sonst müsste man die noch zusätzlich zur Identifikation in die Tabelle übernehmen.


    Lars

  • Wenn ich Kanäle ohne EPG anzeigen lasse, kann ich aus der Programmansicht "Jetzt" nicht mit "OK"auf einen dieser Kanäle umschalten. Wenn mit Blau umgeschaltet werden soll, geht das auch nicht, da "Blau" dann erst gar nicht zur Auswahl angeboten wird (rechts unten).


    Geht jetzt mit der epg2vdr Version 1.0.22
    Danke für den fix!


  • Haben die vdrs unterschiedliche Instanz-Ids? Sonst müsste man die noch zusätzlich zur Identifikation in die Tabelle übernehmen.


    Instanz-Ids? Entweder ist es noch zu früh für mich oder .... Auf jeden Fall habe ich gerade so überhaupt keine Idee, was gemeint sein könnte.


    Kurze Zeit später...
    Der Parameter war mir bis gerade völlig unbekannt. Aber unterschiedliche Instanz-Id zu setzen ist gar kein Problem. Ich denke, das werde ich auf jeden Fall mal machen.
    Und das wäre tatsächlich ein Kriterium, um alle VDR Instanzen zu unterscheiden und Eindeutigkeit herzustellen. Klingt auf jeden Fall sehr gut.


    Zabrimus

Jetzt mitmachen!

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