ubuntuusers.de

TV-Skript - Zeitgesteuerte Aufnahme funktioniert nicht

Status: Gelöst | Ubuntu-Version: Nicht spezifiziert
Antworten |

Heinrich_Schwietering Team-Icon

Wikiteam
Avatar von Heinrich_Schwietering

Anmeldungsdatum:
12. November 2005

Beiträge: 11325

Wohnort: Bremen

Hi!

March hatte mich auf Skripte/TV-Skript zur Aufnahme hingewiesen; und es funktioniert auch, allerdings nur, solange ich Sofort-Aufnahmen mache. Sobald ich versuche, eine Aufnahme für später zu programmieren, bekomme ich folgende Meldung:

Status: OK
warning: commands will be executed using /bin/sh
job 11 at Thu Feb 28 11:40:00 2008
Can't open /var/run/atd.pid to signal atd. No atd running?

und im Terminal (in dem ich das Skript gestartete hatte) passiert gar nichts mehr; die Aufnahme startet auch nicht.
atd scheint der (oder das?) daemon zu at zu sein, wie ein wenig googeln hervorbringt; at allerdings lässt sich auch nicht starten; eine Eingabe im Terminal ergibt "garbled time", und sonst nicht weiter. Sollte at gleich mit dem Rechner zusammen starten?
Eine Datei /var/run/atd.pid existiert auch nicht, sodass sie natürlich nicht geöffnet werden kann; muss sie zuvor erstellt werden? Wie müsste sie aussehen?
Die at und die atd-man-pages helfen mir leider nicht weiter; der Versuch atd im Terminal zu starten führt zwar zu keiner Fehlermeldung, aber auch zu keinem Ergebniss (sprich: gelistetem Prozess) oder einer erfolgreichen zeitgesteuerten Aufnahme...

Was tun? (ok, Informatik studieren wäre eine Möglichkeit, aber vielleicht gibts ja auch andere...)

so long
Hank

pepre Team-Icon

Supporter
Avatar von pepre

Anmeldungsdatum:
31. Oktober 2005

Beiträge: 6474

Wohnort: Erlangen

Passt denn deine Systemzeit? Dh: ist sie richtig eingestellt?

Falls ja:

Läuft denn der atd? Teste das mal:

$ ps -C atd
  PID TTY          TIME CMD
 5966 ?        00:00:00 atd

Die letzte Zeile sollte so oder so ähnlich aussehen.

Falls er nicht läuft, dann installiere oder reinstalliere ihn. Das Paket heisst "at".

Mehr Info: er gehört zu den Diensten.

Heinrich_Schwietering Team-Icon

Wikiteam
(Themenstarter)
Avatar von Heinrich_Schwietering

Anmeldungsdatum:
12. November 2005

Beiträge: 11325

Wohnort: Bremen

Hi!

Systemzeit stimmt (obwohl es immer eine Abweichung um eine Stunde zu den hier im forum als post-Zeit angegebenen Zeit gibt... ist der Server in einer anderen Zeitzone als "Good Ol' Germany"?)

at war installiert, eine Meldung in dem angegeben Sinne gabs aber erst nach einer Neuinstallation, dann allerdings gleich zwei...

 ps -C atd 
  PID TTY          TIME CMD
10232 ?        00:00:00 atd
10237 ?        00:00:00 atd

;
und die Test-Aufnahme funktioniert, ich werd allerdings immer noch gewarnt, dass

warning: commands will be executed using /bin/sh

,

was ich eigentlich nicht so warnenswert finde.

Jetzt wär's für meine Bequemlickkeit noch nett, wenn ich bei der Abfrage des Speicherortes gleich auf mein /home/user/Aufnahmen/- Verzeichnis gelenkt werden könnte - kann man dem Skript das beibringen? Ich verstehe leider nix davon...

thanx!
so long
hank

pepre Team-Icon

Supporter
Avatar von pepre

Anmeldungsdatum:
31. Oktober 2005

Beiträge: 6474

Wohnort: Erlangen

Im Script in der Zeile

REC="dvb://$SENDER -of mpeg -mpegopts format=dvd -ovc copy -oac copy -frames $LENGTH -o $FILE"

die Option "-o" ändern, in zB:

-o /home/user/Aufnahme/$FILE

Heinrich_Schwietering Team-Icon

Wikiteam
(Themenstarter)
Avatar von Heinrich_Schwietering

Anmeldungsdatum:
12. November 2005

Beiträge: 11325

Wohnort: Bremen

Hi!

Na, da bin ich ja gleich an den Experten geraten! ☺
Kann ich denn vielleicht auch gleich den Dateinamen automatisch so wählen lassen, dass (so wie z.B. xine das tun sollte, wenn es denn laufen würde...) der Sendername mit Datum und Anfangszeit als Dateiname verwendet wird (so a la arte-28.02.2008-15:35.mpg)? Im Skript wird allerdings der Name ja zuerst abgefragt, und dann erst die Daten - ginge das auch anders und kombiniert/automatisiert?

Und dann noch: Weißt du vielleicht auch, warum ich Sender, die in der channels.conf ein Leerzeichen haben, ncht verwenden kann? Ich hab' die jetzt zwar alle umbenannt, aber zumindests im Wiki sieht es so aus, als ob das durchaus auch anders gehen sollte. Ich hatte zunächst Anführungszeichen verwendet, also "Das Erste", aber das war nicht von Erfolg gekrönt, jetzt verwende ich halt keine Leerzeichen mehr. Ist allerdings nicht ganz so wichtig, ich bin ja schon ganz glücklich, dass ich jetzt ohne system-crash und xine-basierte Programme aufnehmen kann (wobei ich Kaffeine eigentlich schon sehr praktisch fand)...

Noch mal Danke!

so long
Hank

pepre Team-Icon

Supporter
Avatar von pepre

Anmeldungsdatum:
31. Oktober 2005

Beiträge: 6474

Wohnort: Erlangen

Hm, schwierig, vllt so: in der Zeile

FILE=`zenity --file-selection --save --confirm-overwrite --title "Name und Ort zum Speichern auswählen" --filename="$SENDER".mpg

die Option --filename in

"$SENDER"-'$(date +%F-%R)'.mpg

ändern. Da du die Uhrzeit des Aufnahmebeginns willst, und nicht die der Programmierung, muss man herumarbeiten. Evtl löst der atd den geschützten String nicht auf, dann muss man das Script umbauen. Einfach probieren. 😉

Leerzeichen sollten funktionieren, wenn die Variable in /home/user/Aufnahme/$FILE in Anführungszeichen gesetzt wird:

/home/user/Aufnahme/"$FILE"

Heinrich_Schwietering Team-Icon

Wikiteam
(Themenstarter)
Avatar von Heinrich_Schwietering

Anmeldungsdatum:
12. November 2005

Beiträge: 11325

Wohnort: Bremen

Hi!

Hab's einfach mal durch Umstellen ausprobiert, so dass jetzt zuerst das Datum und die Zeit abgefragt werden, und dann erst der Name ; in der entsprechenden Zeile hab' ich dann

FILE=`zenity --file-selection --save --confirm-overwrite --title "Name und Ort zum Speichern auswählen" --filename="$SENDER" - "$DAY" - "$TIME".mpg` || exit 0


stehen, und es scheint zu funktionieren - dachte ich...

Sender: arte
Begin: 28.02.2008, 15:41 Uhr
Dauer: 10 Minuten, 15000 Einzelbilder
Dateiname: /home/heinrich/Videos/arte-28.02.2008-15:41.mpg

Status: OK
warning: commands will be executed using /bin/sh
job 19 at Thu Feb 28 15:41:00 2008

gibt mir das letzte Info-Fenster aus - cool, dachte ich...
aber nur die Anzeige dazu scheint zu funktionieren; aufgenommen wird dann wohl doch nicht...Die jeweilige Jobnummer verschwindet zwar aus der Liste, die ich mit atq aufrufe, aber es passiert nix... Na, da muss ich wohl noch ein bißchen rumprobieren. Auch das mit dem Standard-Verzeichnis (Variable -o) läuft leider noch nicht...

Aber auch deien Idee mit

"$SENDER"-'$(date +%F-%R)'.mpg


funktioniert nicht; als Name wird dann eben z.B. Arte-$(date +%F-%R)'.mgp ausgegeben.

Na, ich versuch mich mal weiter daran...

so long
Hank

Edit: Und jetzt klappts doch - ohne den Versuch, auch den Speicherort automatisch zu verändern.
Das Skript sieht jetzt so aus:

#!/bin/bash
## Author stw0815
## http://forum.ubuntuusers.de/topic/70377/
MCD=/usr/bin/mencoder
zenity --help > /dev/null || { echo "Fehler: Du benötigst \"zenity\" um dieses Script nutzen zu können." && exit 1 ; }
test -e $MCD || { zenity --error --text "Fehler: Du benötigst \"mencoder\" um dieses Script nutzen zu können." && exit 1 ; }
test ! -e ~/.mplayer/channels.conf && zenity --error --text "~/.mplayer/channels.conf wurde nicht gefunden" && exit 1
SENDER=`cat ~/.mplayer/channels.conf | cut -d ":" -f 1 | zenity --list --title "Bitte Sender auswählen" --column "Sender:"` || exit 0
test "$SENDER" || { zenity --error --text "Es wurde kein Sender ausgewählt." && exit 1 ; }
DAUER=`zenity --entry --title "Dauer" --entry-text "60" --text "Bitte die Aufnahmedauer in Minuten eingeben"` || exit 0
LENGTH=$(($DAUER*60*25))
test "$LENGTH" -lt 1 && zenity --error --text "Die Aufnahmedauer ist fehlerhaft." && exit 1
zenity --question --text "Soll die Aufnahme sofort gestartet werden?" && eval "$MCD" "$REC" && exit 0
DAY=`zenity --calendar --title "Aufnahmedatum" --text "Bitte das Datum der Aufnahme festlegen"` || exit 0
TIME=`zenity --entry --title "Aufnahmestart (HH:MM)" --text "Bitte den Startzeitpunkt der Aufnahme festlegen" --entry-text "$(date --date="5 minutes" +%H:%M)"` || exit 0
FILE=`zenity --file-selection --save --confirm-overwrite --title "Name und Ort zum Speichern auswählen" --filename="$SENDER"-"$DAY"-"$TIME".mpg` || exit 0
REC="dvb://$SENDER -of mpeg -mpegopts format=dvd -ovc copy -oac copy -frames $LENGTH -o $FILE"
echo "$MCD $REC" | at $TIME $DAY &> /tmp/recerror
test $? -gt 0 && zenity --error --text "$(cat /tmp/recerror)" && rm /tmp/recerror && exit 1
zenity --info --text "Sender: $SENDER\nBegin: $DAY, $TIME Uhr\nDauer: $DAUER Minuten, $LENGTH Einzelbilder\nDateiname: $FILE\n\nStatus: OK\n$(cat /tmp/recerror)"
test -e /tmp/recerror && rm /tmp/recerror

Vielleicht krieg' ich das mit dem Ort ja auch noch hin...

edit 2
Na, erstmal zurück mit die jungen Pferde... die Sofort-Aufnahme läuft jetzt mit der Umstellung nicht mehr, da dann kein Dateiname existiert... ist eben alles nicht so einfach...

so long
Hank

Heinrich_Schwietering Team-Icon

Wikiteam
(Themenstarter)
Avatar von Heinrich_Schwietering

Anmeldungsdatum:
12. November 2005

Beiträge: 11325

Wohnort: Bremen

Hi!

Inzwischen habe ich das Skript soweit umgemodelt, dass es jetzt das tut, was ich will: Die Aufnahme mit dem Dateinamen "Sender"-"Datum"-"Uhrzeit".mpg abzuspeichern, und das in meinem bevorzugten Ordner /home/user/Aufnahmen. Die Option "Sofortaufnahme" in stw0815s Original-Skript aus dem Skripte/TV-Skript habe ich dabei weggelassen; aber durch das Einsetzen des Standardstarts auf die aktuelle Zeit ist die Sofortaufnahme durch einfaches Durchklicken der abgefragten Optionen möglich; die Aufnahme sollte dann auch sofort nach dem letzten Info-Kasten beginnen.

Das ganze sieht jetzt so aus:

#!/bin/bash
## Author stw0815; revised by Heinrich Schwietering
## http://forum.ubuntuusers.de/topic/70377/; http://forum.ubuntuusers.de/topic/155644
MCD=/usr/bin/mencoder
zenity --help > /dev/null || { echo "Fehler: Du benötigst \"zenity\" um dieses Script nutzen zu können." && exit 1 ; }
test -e $MCD || { zenity --error --text "Fehler: Du benötigst \"mencoder\" um dieses Script nutzen zu können." && exit 1 ; }
test ! -e ~/.mplayer/channels.conf && zenity --error --text "~/.mplayer/channels.conf wurde nicht gefunden" && exit 1
SENDER=`cat ~/.mplayer/channels.conf | cut -d ":" -f 1 | zenity --list --title "Bitte Sender auswählen" --column "Sender:"` || exit 0
test "$SENDER" || { zenity --error --text "Es wurde kein Sender ausgewählt." && exit 1 ; }
DAUER=`zenity --entry --title "Dauer" --entry-text "60" --text "Bitte die Aufnahmedauer in Minuten eingeben"` || exit 0
LENGTH=$(($DAUER*60*25))
test "$LENGTH" -lt 1 && zenity --error --text "Die Aufnahmedauer ist fehlerhaft." && exit 1
DAY=`zenity --calendar --title "Aufnahmedatum" --text "Bitte das Datum der Aufnahme festlegen"` || exit 0
TIME=`zenity --entry --title "Aufnahmestart (HH.MM)" --text "Bitte den Startzeitpunkt der Aufnahme festlegen" --entry-text "$(date --date="0 minutes" +%H.%M)"` || exit 0
FILE=`zenity --file-selection --save --confirm-overwrite --title "Name und Ort zum Speichern auswählen" --filename=/home/user/Aufnahmen/"$SENDER"-"$DAY"-"$TIME".mpg` || exit 0
REC="dvb://$SENDER -of mpeg -mpegopts format=dvd -ovc copy -oac copy -frames $LENGTH -o $FILE"
echo "$MCD $REC" | at $TIME $DAY &> /tmp/recerror
test $? -gt 0 && zenity --error --text "$(cat /tmp/recerror)" && rm /tmp/recerror && exit 1
zenity --info --text "Sender: $SENDER\nBegin: $DAY, $TIME Uhr\nDauer: $DAUER Minuten, $LENGTH Einzelbilder\nDateiname: $FILE\n\nStatus: OK\n$(cat /tmp/recerror)"
test -e /tmp/recerror && rm /tmp/recerror

Die relevanten Stellen hab' ich noch mal gelb unterlegt: lässt man die "0 minutes" stehen, gehts sofort los, wird die Zeit bei der Zenity-Abfrage geändert, gibts zeitgesteuerte Aufnahmen.
Beim "--filename" kann jeder das eigene bevorzugte Verzeichnis im eigenen Skript einsetzen, sodass das lästige Rumsuchen, wenn eh' alle Aufnahmen in einem Ordner landen sollen, entfällt - kann natürlich trotzdem weiterhin geändert werden.
Coole Sache, das Skript! Dank an stw0815!

so long
Hank

Luflee

Avatar von Luflee

Anmeldungsdatum:
13. Juli 2007

Beiträge: Zähle...

Hallo Hank,

leider lese ich Deinen Post etwas spät, ich bin nur noch selten hier unterwegs. Schön zu sehen, dass das Skript doch noch seine Anhänger hat und dass es noch weiter entwickelt wird.

Die Entstehung geht auf den Thread http://forum.ubuntuusers.de/topic/70377/ zurück. Interessant ist hier noch der Beitrag bzw. das Skript von tawk. Dabei wird alternativ Mplayer für die Aufnahme des TS verwendet.

Wenn Du Lust hast, kannst Du auch dein komplettes Skript ins WIKI einbauen. Sind ein paar sinnvolle Ergänzungen vorhanden.

Wenn ich nochmal dazu komme, werde ich das Skript von tawk als Ergänzung auf die WIKI-Seite setzen. Im Forum gehen solche Dinge sonst irgendwann verloren.

Grüße

Antworten |