Heinrich_Schwietering
Wikiteam
Anmeldungsdatum: 12. November 2005
Beiträge: 11288
|
Hi! Die Karte kam schneller als erwartet; und da hab' ich doch gleich mal wieder rumgebastelt... Ergebnis: Jetzt kann man bei dem Skript die Dauer der Aufnahme festlegen, und muss nicht mehr die Endzeit mit ggf. Datum des nächsten Tages angeben. Allerdings hab' ich es etwas anders gelöst als baumeisterschramm. Den Ansatz mit dem "SLEEP" fand ich zwar auch interessant, aber bei mir hat das nicht funktioniert; irgendwas hab' ich da wohl falsch gemacht... Könntest du deine Version hier mal als Ganzes posten? Mein Version sieht jetzt so aus: 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 | #!/bin/bash
## Author stw0815; revised by Heinrich Schwietering
## http://forum.ubuntuusers.de/topic/70377/; http://forum.ubuntuusers.de/topic/155644
MCD=/usr/bin/tvmplayer
USER=~/Videos
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 \"tvmplayer\" um dieses Script nutzen zu können. Dazu ggf. erst mplayer installieren, dann mit root-Rechten die Datei /usr/bin/mplayer kopieren und als /usr/bin/tvmplayer abspeichern" && 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 ; }
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="30 seconds" +%H.%M)"` || exit 0
DAUER=`zenity --entry --title "Dauer" --entry-text "90" --text "Bitte die Aufnahmedauer in Minuten eingeben"` || exit 0
LENGTH=$(($DAUER*60))
FILE=`zenity --file-selection --save --confirm-overwrite --title "Name und Ort zum Speichern auswählen" --filename=/"$USER"/"$SENDER"-"$DAY"-"$TIME".TS` || exit 0
REC="dvb://\"$SENDER\" -dumpstream -dumpfile \"$FILE\""
echo "$MCD $REC" | at $TIME $DAY &> /tmp/recerror
test $? -gt 0 && zenity --error --text "$(cat /tmp/recerror)" && rm /tmp/recerror && exit 1
echo "killall $MCD" | at "$(date --date="$LENGTH seconds" +%H.%M) " &> /tmp/recerror1
test $? -gt 0 && zenity --error --text "$(cat /tmp/recerror1)" && rm /tmp/recerror1 && exit 1
zenity --info --text "Sender: $SENDER\nBegin: $DAY, $TIME Uhr\nDauer: $DAUER Minuten, Dateiname: $FILE\n\nStatus: OK\n$(cat /tmp/recerror)\n$(cat /tmp/recerror1)\n\nTermin mit \"atq\" im Terminal überprüfbar;\n\mit \"atrm 'jobnr'\" löschbar!"
test -e /tmp/recerror && rm /tmp/recerror
test -e /tmp/recerror1 && rm /tmp/recerror1
|
Und über Verstellen der Systemzeit hab' ich dann schon vor Mitternacht getestet, dass es auch über die "Tagesgrenze" hinaus funktioniert 😉 so long hank
|
baumeisterschramm
Anmeldungsdatum: 17. April 2008
Beiträge: Zähle...
|
Hallo, ich benutze das Skript um sich wiederholende Sendungen aufzunehmen. Darum habe ich die Dialoge zur Sender-, Zeit- usw. -Auswahl weggelassen. Hier beispielsweise das Skript, mit dem ich RTL-aktuell aufnehme.
#!/bin/bash
# SKRIPT FÜR TV-AUFNAHME
### VARIABLEN
CP="/bin/cp";
ECHO="/bin/echo";
FIND="/usr/bin/find";
SUDO="/usr/bin/sudo";
ZENITY="/usr/bin/zenity";
MPLAYER="/usr/bin/mplayer";
TVREC="/usr/bin/tvrec";
SLEEP="/bin/sleep";
KILL="/usr/bin/killall";
DATE=`/bin/date '+%Y-%m-%d'`;
### KONFIGURATION - DATEN FÜR AUFNAHME
DATA_PATH="/home/share/TV-Aufnahmen";
NAME="RTLaktuell";
SENDER="RTL Television";
DAUER="1320";
FILEAGE="+1";
### LOS GEHTS
# ÜBERPRÜFE, OB VERZEICHNIS VORHANDEN
if ! [ -d $DATA_PATH ] ; then
$ECHO ''$NAME' konnte nicht aufgenommen werden, da das angegebene Verzeichnis '$DATA_PATH' nicht existiert!'
$SUDO -H -u chrisch $ZENITY --error --text ''$NAME' konnte nicht aufgenommen werden, da das angegebene Verzeichnis '$DATA_PATH' nicht existiert!' --title 'Aufnahme non '$NAME''
exit
fi
# AUFNAHME STARTEN
while ! [ -f "$DATA_PATH/$NAME $DATE.ts" ]
do
$TVREC dvb://"$SENDER" -dumpstream -dumpfile "$DATA_PATH/$NAME $DATE.ts" &
$ECHO 'Start der TV-Aufnahme von '$Name''
$SLEEP 3
done
# AUFNAHME BEENDEN
$SLEEP $DAUER
$KILL $TVREC
$ECHO 'Ende der TV-Aufnahme von '$Name''
### ALTE AUFNAHMEN LÖSCHEN
$SLEEP 30
$FIND $DATA_PATH -name "$NAME*.*" -type f -mtime $FILEAGE -delete
$ECHO 'Alte TV-Aufnahmen wurden erfolgreich gelöscht'
exit 0
|
Heinrich_Schwietering
Wikiteam
Anmeldungsdatum: 12. November 2005
Beiträge: 11288
|
Hi! Danke, so wird es mir etwas klarer... Habe bei meinem "verbesserten" skript gerade festgestellt, dass es so nicht funktioniert, weil der Endzeitpunkt vom Zeitpunkt der Programmierung berechnet wird, nicht vom Zeitpunkt des tatsächlichen Aufnahmestarts... Muss ich also noch mal beigehen... 😳 so long hank
|
Heinrich_Schwietering
Wikiteam
Anmeldungsdatum: 12. November 2005
Beiträge: 11288
|
Hi! Anscheinend funktioniert das mit dem sleep-Befehl nicht in Verbindung mit den at-Jobs (oder ich bin zu blöd dazu)... Nach längerem (Ver-)Suchen hab' ich es aber doch noch ohne sleep mit dem at-Befehl hinbekommen (siehe man at ; und wer lesen kann ist klar im Vorteil: die Zeit muss vor dem Datum stehen, und erst dann kann etwas dazu addiert werden... 😕 ). Jetzt geht das Skript also (hoffentlich wirklich 😉 ) auch bei Programmierungen über Mitternacht hinaus, ohne dass dazu der neue Tag extra angebene werden muss; allerdings muss dazu die Aufnahmelänge in Minuten noch selbst ausgerechnet werden. Wie allerdings "regelmäßige" Aufnahmen programmiert werden könnten, weiß ich auch nicht; vielleicht versuche ich mich nochmal daran... mit cron? Hier zumindest erstmal das "aktualisierte" Skript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 | #!/bin/bash
## Author stw0815; revised by Heinrich Schwietering
## http://forum.ubuntuusers.de/topic/70377/; http://forum.ubuntuusers.de/topic/155644
MCD=/usr/bin/tvmplayer
USER=~/Videos
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 \"tvmplayer\" um dieses Script nutzen zu können. Dazu ggf. erst mplayer installieren, dann mit root-Rechten die Datei /usr/bin/mplayer kopieren und als /usr/bin/tvmplayer abspeichern" && 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 ; }
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="30 seconds" +%H.%M)"` || exit 0
DAUER=`zenity --entry --title "Dauer" --entry-text "3" --text "Bitte die Aufnahmedauer in Minuten eingeben"` || exit 0
FILE=`zenity --file-selection --save --confirm-overwrite --title "Name und Ort zum Speichern auswählen" --filename=/"$USER"/"$SENDER"-"$DAY"-"$TIME".TS` || exit 0
REC="dvb://\"$SENDER\" -dumpstream -dumpfile \"$FILE\""
echo "$MCD $REC" | at $TIME $DAY &> /tmp/recerror
test $? -gt 0 && zenity --error --text "$(cat /tmp/recerror)" && rm /tmp/recerror && exit 1
echo "killall $MCD" | at $TIME $DAY+$DAUER minutes &> /tmp/recerror1
test $? -gt 0 && zenity --error --text "$(cat /tmp/recerror1)" && rm /tmp/recerror1 && exit 1
zenity --info --text "Sender: $SENDER\nBeginn: $DAY, $TIME Uhr\nDauer: $DAUER Minuten, Dateiname: $FILE\n\nStatus: OK\n$(cat /tmp/recerror)\n$(cat /tmp/recerror1)\n\n\nTermin mit \"atq\" im Terminal überprüfbar;\n\mit \"atrm 'jobnr'\" löschbar!"
test -e /tmp/recerror && rm /tmp/recerror
test -e /tmp/recerror1 && rm /tmp/recerror1
|
so long hank
|
baumeisterschramm
Anmeldungsdatum: 17. April 2008
Beiträge: 17
|
Hallo, ja mit cron. Ich mache das zumindest so. Mein Skript wird z.B. jeden pünktlich 18:44 Uhr zu den Nachrichten aufgerufen.
Das sleep nicht mit at funktioniert wusste ich nicht - wieder was dazu gelernt.
|
Heinrich_Schwietering
Wikiteam
Anmeldungsdatum: 12. November 2005
Beiträge: 11288
|
Hi! baumeisterschramm schrieb: ja mit cron. Ich mache das zumindest so. Mein Skript wird z.B. jeden pünktlich 18:44 Uhr zu den Nachrichten aufgerufen.
Das sleep nicht mit at funktioniert wusste ich nicht - wieder was dazu gelernt.
Vielleicht hab' ich mich auch nur ungeschickt angestellt; ich wollte die Ausführung des sleep-Befehls auch zu einem bestimmten, mit einem at-Befehl festgelegten Zeitpunkt ausführen lassen (also die Aufnahme starten, dann quasi zum selben Zeitpunkt das skript für die Zeit der Aufnahme "schlafen" schicken, wie in deiner Version eben; aber sleep scheint da Priorität zu haben, jedenfalls "schlief" das Skript sofort die angegebene Zeit, um mir dann mitzuteilen, dass ein in Vergangenheit liegender Job nicht ausgeführt werden könne... Daher hab' ich dann auch sleep verzichtet. Wenn du deine einzelnen "fertigen" Skripte immer mit einem Cron-Job aufrufst, ist das natürlich auch regelmäßig machbar; nur geht das mit "meinem" Skript nicht so ohne weiteres. Vielleicht sollte ich mir mal anschauen, wie Kaffeine oder Me TV das regelmäßige Aufnehmen regeln... so long hank
|
Heinrich_Schwietering
Wikiteam
Anmeldungsdatum: 12. November 2005
Beiträge: 11288
|
Hi! at funktioniert doch mit sleep zusammen; die auszuführenden Befehle lassen sich koppeln, indem man sie in Klammern zusammenpackt, also z.B. | (echo sleep 1 && echo "DISPLAY=$DISPLAY $PLAYER $FILE") | at $TIME $DAY &> /tmp/recerror2
|
Mit meiner neusten Version kann jetzt gewählt werden, ob man während des Aufzeichenes gleich mitanschauen möchte; dazu wird der GNOME-MPlayer gestartet. Die Variabeln am Anfang kann man sich entsprechend der eigenen Bedürfnisse anpassen; meist ist ": 0,0 " das richtige Display, wenn nicht mehrere Bildschirme verwendet werden. Bei den Playern ggf. ausprobieren, ob sie das gespeicherte Format beherrschen; VLC hat erstaunlicherweise Probleme damit. 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41 | #!/bin/bash
## Author stw0815; revised by Heinrich Schwietering
## http://forum.ubuntuusers.de/topic/70377/; http://forum.ubuntuusers.de/topic/155644
MCD=/usr/bin/tvmplayer
PLAYER=/usr/bin/gnome-mplayer
USER=~/Videos
DISPLAY=:0.0
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 \"tvmplayer\" um dieses Script nutzen zu können. Dazu ggf. erst mplayer installieren, dann mit root-Rechten die Datei /usr/bin/mplayer kopieren und als /usr/bin/tvmplayer abspeichern" && 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 ; }
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="30 seconds" +%H.%M)"` || exit 0
DAUER=`zenity --entry --title "Dauer" --entry-text "3" --text "Bitte die Aufnahmedauer in Minuten eingeben"` || exit 0
FILE=`zenity --file-selection --save --confirm-overwrite --title "Name und Ort zum Speichern auswählen" --filename=/"$USER"/"$SENDER"-"$DAY"-"$TIME".TS` || exit 0
WATCH=`zenity --entry --title="Gleichzeitig ansehen?" --entry-text="ja" --text="Soll gleichzeitig mitgeschaut werden?"`
REC="dvb://\"$SENDER\" -dumpstream -dumpfile \"$FILE\""
if [ "$WATCH" = "ja" ]; then
echo "$MCD $REC" | at $TIME $DAY &> /tmp/recerror
test $? -gt 0 && zenity --error --text "$(cat /tmp/recerror)" && rm /tmp/recerror && exit 1
echo "killall $MCD" | at $TIME $DAY+$DAUER minutes &> /tmp/recerror1
test $? -gt 0 && zenity --error --text "$(cat /tmp/recerror1)" && rm /tmp/recerror1 && exit 1
(echo sleep 1 && echo "DISPLAY=$DISPLAY $PLAYER $FILE") | at $TIME $DAY &> /tmp/recerror2
test $? -gt 0 && zenity --error --text "$(cat /tmp/recerror2)" && rm /tmp/recerror2 && exit 1
zenity --info --text "Sender: $SENDER\nBeginn: $DAY, $TIME Uhr\nDauer: $DAUER Minuten, Dateiname: $FILE\n\nStatus: OK\n$(cat /tmp/recerror)\n$(cat /tmp/recerror1)\n$(cat /tmp/recerror2)\n\nTermin mit \"atq\" im Terminal überprüfbar;\n\mit \"atrm 'jobnr'\" löschbar!"
test -e /tmp/recerror && rm /tmp/recerror
test -e /tmp/recerror1 && rm /tmp/recerror1
test -e /tmp/recerror2 && rm /tmp/recerror2
fi
if [ "$WATCH" != "ja" ]; then
echo "$MCD $REC" | at $TIME $DAY &> /tmp/recerror
test $? -gt 0 && zenity --error --text "$(cat /tmp/recerror)" && rm /tmp/recerror && exit 1
echo "killall $MCD" | at $TIME $DAY+$DAUER minutes &> /tmp/recerror1
test $? -gt 0 && zenity --error --text "$(cat /tmp/recerror1)" && rm /tmp/recerror1 && exit 1
zenity --info --text "Sender: $SENDER\nBeginn: $DAY, $TIME Uhr\nDauer: $DAUER Minuten, Dateiname: $FILE\n\nStatus: OK\n$(cat /tmp/recerror)\n$(cat /tmp/recerror1)\n\n\nTermin mit \"atq\" im Terminal überprüfbar;\n\mit \"atrm 'jobnr'\" löschbar!"
test -e /tmp/recerror && rm /tmp/recerror
test -e /tmp/recerror1 && rm /tmp/recerror1
fi
|
so long hank
|
Heinrich_Schwietering
Wikiteam
Anmeldungsdatum: 12. November 2005
Beiträge: 11288
|
Hi! Warum ist das jetzt plötzlich im Archiv??? IMHO geht das noch. so long hank
|
Heinrich_Schwietering
Wikiteam
Anmeldungsdatum: 12. November 2005
Beiträge: 11288
|
Hi! Geht unter Precise, hab das wieder aus dem Archiv geholt. @ frustschieber Soweit ich mich erinnere, soll, wenn ein Artikel mit Ende des Supports ungetestet wird, mit dem Entfernen des Getestet-Tags eine Notiz in der Diskussion des Artikels erstellt werden, damit sich ggf. jemand darum kümmern kann... In Zukunft bitte so handhaben - Danke! so long hank
|
frustschieber
Ehemalige
Anmeldungsdatum: 4. Januar 2007
Beiträge: 4259
|
Heinrich Schwietering schrieb: Hi! Warum ist das jetzt plötzlich im Archiv??? IMHO geht das noch.
weit 6 Mo ungetestet. Gruss "ungetestete Artikel sind für keine aktuelle Ubuntu-Version getestet. Falls sie das nach 6 Monaten immer noch sind, werden die Anleitungen archiviert."
aus: http://wiki.ubuntuusers.de/ubuntuusers/intern/Wiki-Team/Arbeitsablauf#Pflege-des-Wikis
|
Heinrich_Schwietering
Wikiteam
Anmeldungsdatum: 12. November 2005
Beiträge: 11288
|
Hi! Ja,schon klar... Mein Fehler, ich dachte,ich hätte das schon unter Lucid verwendet, stand aber wohl nicht drin. Trotzdem wäre ein Hinweis im Diskussionsthread nicht verkehrt; die jetzige Änderung/Verschiebung hab ich gar nicht über das Abo des Artikel bekommen. Müssen wir mal checken, ob die Benachrichtigungen nicht klappen, oder die Benachrichtigung nicht mehr fasst, weil ich ja nicht Archiv/Skripte/TV-Skript abonniert hatte 😉. so long hank
|
holgiB
Anmeldungsdatum: 11. November 2008
Beiträge: 528
|
Hallo, ich hoffe ihr seht mir nach, dass ich diese alte Diskussion wieder "hochhole", aber da ich aktuell mit meinem Raspi und effizienter Aufnahme von einer externen DVB-S2 Box experimentiere, frage ich mich, ob es nicht Sinn macht das TV Script generell zu überarbeiten. Die Methode mit MPlayer und -dumpstream funktioniert wunderbar, aber man wirft quasi alle restlichen Anteile des Transport Streams weg. Also im Zweifelsfall zum Beispiel AC3 Audiospuren, Untertitel, usw. Verwendet man GnuTV, so bleibt zumindest der Stream komplett, aber der Ressourcenbedarf ist nicht ganz ohne. Auf ner kleinen Stromsparbüchse wie dem Raspi landet man mit GnuTV bei 30-40%. Auf einen leistungsstärkeren System ist das natürlich kein großes Problem. Ich habe nachgeforscht und im Getoo Wiki ein schickes Shellscript gefunden, welches SZAP und dd kombiniert und so mit minimalem Ressourcenverbrauch den kompletten Stream auf die Platte schreibt. Auf meinem HTPC (Intel E4500) liegt laut Top die CPU Auslastung bei etwas über 1% ☺ Das Shellscript schlägt für mich somit sowohl MPlayer als auch GnuTV ☺ Wäre eine Überarbeitung des TV Scriptes noch interessant ? Oder sind inzwischen alle (ausser mir ☺) zu TVHeadend, VDR oder ähnlichen Lösungen abgewandert ? LG,
Holgi
|
Heinrich_Schwietering
Wikiteam
Anmeldungsdatum: 12. November 2005
Beiträge: 11288
|
Hi! Nur zu! Ich verwende das Skript allerdings auch nicht mehr, was aber daran liegt, dass ich wg. Mediathek etc. sowieso so gut wie nichts mehr aufzeichne 😉 so long hank
|
holgiB
Anmeldungsdatum: 11. November 2008
Beiträge: 528
|
Hi, klar, Mediathek ist auch (eine) meiner Quellen. Genauso wie Youtube, usw.
Hm....ich denke, dass ich bei Gelegenheit mal das TVScript anpassen werde und die angepasste Version dann hier veröffentliche bzw. im Wiki einpflege ☺ Gruß,
Holger
|
Heinrich_Schwietering
Wikiteam
Anmeldungsdatum: 12. November 2005
Beiträge: 11288
|
Hi! Mit dem EOL von precise jetzt ungetestet! so long hank
|