Habe gerade die 'Auftragshistory' getestet, bei mir geht sie.
Habt ihr damit noch Probleme?
Dirk, hast du da etwas behoben?
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.
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.org/git/vdr-epg-da….py?h=http#n106
Deswegen habe ich das in meinem Beispiel ausgelagert (da nimmt er nur ein "X" statt einem "?"):
def format_number(number, width=1):
if number < 0: # empty int fields return -1 = na in code
return "X" * width
else:
return "{0:0{width}}".format(number, width=width)
def format_episode(prefix_list, season, part, number, desc):
element_list = [prefix_list, "S{s}E{e} - {p}. {d}".format(
s=format_number(season, 2),
e=format_number(part, 3),
p=format_number(number),
d=desc),
]
return "~".join(itertools.chain.from_iterable(element_list))
Alles anzeigen
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:
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
Das sieht so falsch in der Timerliste aus, da kannst du gar nicht anders als es korrigieren
Christian
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
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.org/git/vdr-epg-da…on.c?h=http#n14 ff. definiert werden?
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
Hervorragende Arbeit 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
Hab nen neuen "Daumenhänger":
Magazinansicht, Sendungsdetailansicht aufrufen, "Aufnahme"-Button betätigen und Timer speichern, anschließend hängt die Sendungsdetailansicht.
chrome console sagt:
Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user's experience. For more help, check https://xhr.spec.whatwg.org/.
http://vdr.fritz.box:9999/data/channellogo?maxW=70&maxH=50&id=C-9999-181-24101 Failed to load resource: the server responded with a status of 404 (Not Found)
http://vdr.fritz.box:9999/data/channellogo?maxW=70&maxH=50&id=C-9999-221-22113 Failed to load resource: the server responded with a status of 404 (Not Found)
http://vdr.fritz.box:9999/data/channellogo?maxW=70&maxH=50&id=C-9999-191-11104 Failed to load resource: the server responded with a status of 404 (Not Found)
epgd.js?1.0.34:1 error:TypeError: Cannot read property 'find' of undefined
at Object.<anonymous> (http://vdr.fritz.box:9999/epgd.js?1.0.34:1:116543)
at i (http://vdr.fritz.box:9999/common.js?1.0.34:2:27151)
at Object.j.add (http://vdr.fritz.box:9999/common.js?1.0.34:2:27450)
at Object.epgd.ajax (http://vdr.fritz.box:9999/epgd.js?1.0.34:1:24854)
at http://vdr.fritz.box:9999/epgd.js?1.0.34:1:116461
at HTMLDivElement.$win.appendTo.stop.animate.always (http://vdr.fritz.box:9999/epgd.js?1.0.34:1:11265)
at i (http://vdr.fritz.box:9999/common.js?1.0.34:2:27151)
at Object.j.fireWith [as resolveWith] (http://vdr.fritz.box:9999/common.js?1.0.34:2:27914)
at i (http://vdr.fritz.box:9999/common.js?1.0.34:3:26278)
at n.fx.tick (http://vdr.fritz.box:9999/common.js?1.0.34:3:29698)
Alles anzeigen
PS: Die abgebildete Sendung wollte ich nicht wirklich aufnehmen
Ich habe die Stelle ausfindig gemacht. Ist gefixt und schiebe ich nachher ins git.
Zusätzlich werde ich bei einem Fehler alle ggf. noch vorhande Daumen schliessen.
gruss
Dirk
Kann ich bestätigen - den Fehler
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!
Ich habe die Stelle ausfindig gemacht. Ist gefixt und schiebe ich nachher ins git.
Zusätzlich werde ich bei einem Fehler alle ggf. noch vorhande Daumen schliessen.gruss
Dirk
Ist im git
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
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!