So, nach einigem Basteln habe ich schliesslich eine Lösung finden können, die hier einwandfrei zu funktionieren scheint. :-)
Das Skript aus dem vorigen Post konnte ja die Sender-Information aus der info-Datei nicht korrekt auswerten, ausserdem musste ich feststellen, dass auch der aus der 0.8er geborgte Codeschnipsel die Liste der Noad-Sender nicht richtig auswerten kann (hier das gleiche Problem, Leerzeichen im Sendernamen stören).
Ich habe das für mich jetzt so gelöst, dass ich das ganze nochmal neu als Python-Skript geschrieben habe, damit komme ich besser zurecht und kann so beide Dateien korrekt behandeln.
Das andere, zweizeilige Start-Skript wird nicht mehr benötigt, der Aufruf erfolgt jetzt direkt aus der /usr/share/vdr/recording-hooks/10_recording.custom .
Falls jemand das auch einmal ausprobieren möchte folgt hier eine kurze Anleitung (das Python-Skript incl. einer Beispiel-10_recording.custom Datei für den Aufruf habe ich angehängt):
Bevor das Skript verwendet wird, sollte sicher gestellt werden, dass noad durch keinen anderen Aufruf gestartet wird.
Standardmässig wird dies wohl durch das Skript in /usr/share/vdr/recording-hooks/R10.noad berwerkstelligt (tatsächlich ein Link auf /etc/vdr/recording-hooks/R10.noad), also entweder den Aufruf von noad in dieser Datei auskommentieren. Es sollte auch alternativ funktionieren durch
Code:
# sudo dpkg-reconfigure easyvdr-addon-noad
und bei der Abfrage dann Auswählen von "Nein" den automatischen Start von noad zu unterbinden (ich vermute, das entfernt den Symlink nach /usr/share/vdr/recording-hooks, habe es selbst aber nicht getestet).
Am Besten danach durch eine kurze Testaufnahme bestätigen, dass noad tatsächlich nicht mehr gestartet wird.
Wenn das erledigt ist, kann das noad_on_channels.py Skript z.B. nach /usr/local/bin kopiert werden.
Das Skript muss mit zwei Parametern gestartet werden, wie sie von den VDR recording-hooks übergeben werden: der erste ist entweder "before" oder "after", je nachdem ob noad nach der Aufnahme ("after") oder im Online-Modus bereits während der Aufnahme ("before") laufen soll.
Da der von der easyvdr mitgelieferte noad z.Zt. (Anfang Sept. 2015) leider noch am Online-Modus scheitert, sollte hier zumindest vorerst (ein Fix durch die noad-Entwickler ist wohl in Arbeit, liegt aber aktuell noch nicht vor) für alle User, die noad aus den Easyvdr-Paketquellen verwenden, "after" die richtige Wahl sein.
Der zweite Parameter ist das Verzeichnis der Aufnahme, so wie z.B. /video0/Titel_der Sendung/2015-08-20.00.03.11-0.rec .
Anschliessend kann man das Skript aktivieren, indem man einen passenden Eintrag in die /usr/share/vdr/recording-hooks/10_recording.custom hinzufügt.
Für die Ausführung nach Ende der Aufnahme könnte das z.B. so aussehen:
Code:
case $1 in
before)
# do here whatever you would like to do right BEFORE
# the recording $2 STARTS
;;
after)
# do here whatever you would like to do right AFTER
# the recording $2 ENDED
# Befehl für noad f. best. Sender nach Ende der Aufnahme:
/usr/local/bin/noad_on_channels.py "$@"
;;
edited)
# do here whatever you would like to do right AFTER
# the recording $2 has been EDITED
;;
esac
Falls eine noad-Version installiert ist, die Online-Scan-fähig ist, und man noad bereits während der Aufnahme nutzen möchte, ist der Aufruf etwas komplizierter; da zum Zeitpunkt des Aufrufs das Aufnahmeverzeichnis und damit auch die darin befindliche info-Datei noch nicht existieren, muss der Aufruf mittels "at" etwas in die Zukunft verschoben werden, damit der VDR Zeit hat, Verzeichnis und info-Datei zu erstellen. Am Besten wählt man dafür 2 Minuten (1 Minute könnte sich im ungünstigsten Fall, d.h. Aufruf etwa um 19:29:59 auf 1 Sekunde (19:30:00) reduzieren).
Die 10_recording.custom könnte damit etwa so aussehen:
Code:
case $1 in
before)
# do here whatever you would like to do right BEFORE
# the recording $2 STARTS
# Befehl für noad für best. Sender Online-Scan während d. Aufnahme:
echo -n /usr/local/bin/noad_on_channels.py \"$1\" \"$2\" | at now + 2 minutes
;;
after)
# do here whatever you would like to do right AFTER
# the recording $2 ENDED
;;
edited)
# do here whatever you would like to do right AFTER
# the recording $2 has been EDITED
;;
esac
Die Backslashe vor den Anführungszeichen sind nötig, da sonst die Weitergabe der Parameter durch "at" fehl schlagen kann, falls der Sendungstitel Sonderzeichen wie Ausrufezeichen oder Apostrophe enthält (siehe meine Bemerkung wg. des mysteriösen Nicht-Startens von noad bei einigen Aufnahmen im vorigen Post).
Die beiden Parameter werden dann so an noad weiter gereicht.
Das Skript prüft dann zunächst, ob in der sysconfig die Option NOAD_ON_CHANNELS auf "yes" gesetzt ist (im OSD unter noad-Einstellungen "noad nur für definierte Sender" auf "ja" setzen), anderenfalls wird noad auf jeden Fall gestartet.
ACHTUNG: weitere Einstellungen im Setup werden in dieser Version des Skripts ignoriert!
Falls also NOAD_ON_CHANNELS="yes" ist, wird versucht, den Sender der aktuellen Aufnahme aus der info-Datei im Aufnahmeverzeichnis zu ermitteln und diesen gegen die in der Datei /var/lib/vdr/noad_channels.conf definierten Sender abzugleichen, bei einem Treffer wird noad gestartet, steht der Sender nicht in der Datei, gibt es kein noad für diese Aufnahme.
Das Format der Datei ist einfach eine durch neue Zeilen getrennte Liste von Sendernamen, wie z.B.:
Code:
CHANNELLIST="
RTL
RTL2
Super RTL
RTLNITRO
"
Bitte hierbei zu beachten: bei einigen Sendern kann der Sendername für die Aufnahme von dem im OSD gezeigten Sendernamen abweichen, konkret habe ich das beim SD-Programm von RTL bemerkt, im OSD erscheint es als "RTL Television", in der Aufnahme aber als "RTL". Wahrscheinlich liegt das daran, dass der Sender in der channels.conf mit 2 durch Komma getrennten Namen erscheint (RTL Television,RTL;RTL World:12187...). Falls also für einen gewünschten Sender kein noad ausgeführt wird, bitte zuerst prüfen, ob der Sendername korrekt in die noad_channels.conf eingetragen wurde.
Das Skript schreibt einige diagnostische Informationen in das syslog, die (hoffentlich) helfen können, bei Fehlfunktionen die Fehlerursache einzugrenzen.
So, jetzt viel Spass damit!
easyvdr-3.0; MB: Asus M2N-X Plus; DVB: TT-3200, Hauppauge NovaS2; Graka: Geforce GT1030