Anhang: TVBrowserCron.sh
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 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 | #!/bin/bash # Skript um Aufnahmen aus dem TV-Browser zu starten, gleichzeitig mitzuschauen, oder auch nur zu schauen. # Autor Heinrich Schwietering (c) 2009, 2011 # # Im TV-Browser-Aufnahme-Plugin muss als Applikation "/bin/bash" eingetragen werden, bei den Parametern für "Aufnehmen": # # /Pfad/zum/TVBrowserCron.sh {leadingZero(start_minute, "2")} {leadingZero(start_hour, "2")} {leadingZero(start_day, "2")} {leadingZero(start_month, "2")} {isset(channel_name_external_quiet,channel_name)} {length_sec} {urlencode(title, "utf-8")} record {start_unix} # # Parameter für "Löschen": # /Pfad/zum/TVBrowserCron.sh {leadingZero(start_minute, "2")} {leadingZero(start_hour, "2")} {leadingZero(start_day, "2")} {leadingZero(start_month, "2")} {isset(channel_name_external_quiet,channel_name)} {length_sec} {urlencode(title, "utf-8")} delete VERZ=$HOME/.tvbrowser # TEST, OB EINE CRONTAB-DATEI FÜR DEN USER EXISTIERT; GFF. ERSTELLUNG EINER "DUMMY"-VERSION crontabExists=`crontab -l` length=${#crontabExists} if [ $length -eq 0 ] ; then echo "0 0 1 1 * TEST" &> $VERZ/crontabinit.txt crontab $VERZ/crontabinit.txt rm $VERZ/crontabinit.txt fi # Routine, um den Titel ohne "seltsame" Zeichen und mit Leerstellen zubekommen TITELT=$(echo ${7} | tr '+' ' ' | /bin/echo -e $(sed 's/%/\\x/g')) # Routine, um Doppelpunkte zu entfernen (da damit kein Speicherung möglich ist...) TITEL=$(echo $TITELT | /bin/echo -e $(sed 's/:/_/g')) # Wahl der Aufnahme-Art if [ "${8}" == "record" ] ; then # Zenity-Aufruf, um Auswahl festzulegen zenity --help > /dev/null || { echo "Fehler: Du benötigst \"zenity\" um dieses Skript nutzen zu können." && exit 1 ; } test ! -e /usr/bin/vlc && zenity --error --text "VLC ist nicht installiert!" && exit 1 test ! -e $VERZ/Auswahl.lst && zenity --error --text "$VERZ/Auswahl.lst wurde nicht gefunden!" && exit 1 AUSWAHL=`cat $VERZ/Auswahl.lst | zenity --list --title "Aufnehmen, Ansehen, Beides?" --column "Auswahl:"` || exit 0 test "$AUSWAHL" || { zenity --error --text "Es wurde keine Auswahl getroffen!" && exit 1 ; } #TEST, OB SENDUNG SCHON BEGONNEN HAT DIFFERENZ=$(( $(date +%s) - ${9} )) # Wenn Sendung schon begonnen hat, direkter Aufruf des Aufnahmeskriptes: if [ $DIFFERENZ -gt 0 ]; then KORRDAUER=$(( ${6} - $DIFFERENZ )) /usr/share/tvbrecordingscripts/TVAufnahme.sh ${5} "$TITEL" $KORRDAUER $AUSWAHL & else # ERSTELLEN DES CRONTAB-EINTRAGS # Erstellen der Doublette crontab -l &> $VERZ/Doublette.txt # Anhängen des Crontab-Eintrags an die Doublette echo "${1} ${2} ${3} ${4} * /usr/share/tvbrecordingscripts/TVAufnahme.sh ${5} \"$TITEL\" ${6} $AUSWAHL" >> $VERZ/Doublette.txt # Erstellen der Datei mit den Infos zum Löschen des Crontabs echo "${1} ${2} ${3} ${4} * /usr/share/tvbrecordingscripts/TVAufnahme.sh ${5} \"$TITEL\" ${6} $AUSWAHL" > $VERZ/"$TITEL-${1}-${2}-${3}-${4}".txt # Erstellen der Crontab-Datei aus der Doublette crontab $VERZ/Doublette.txt fi # CRONTAB-EINTRAG LÖSCHEN else #Prüfung, ob Eintrag bereits gelöscht ist { if [ -a $VERZ/"$TITEL-${1}-${2}-${3}-${4}".txt ] ; then crontab -l &> $VERZ/Doublette.txt # Auslesen der Infos zum Löschen DELETE=`cat $VERZ/"$TITEL-${1}-${2}-${3}-${4}".txt` # Umformen der Infos, escapen von Sonderzeichen arg=` echo "$DELETE" | sed 's:[]\[\^\$\.\*\/]:\\\\&:g' ` # Löschen des Crontabs aus der Doublette sed -ie '/^'"$arg"'$/ d' $VERZ/Doublette.txt # Hochladen der verbleibenden Crontab-Einträge crontab $VERZ/Doublette.txt # Löschen der Info-Datei rm $VERZ/"$TITEL-${1}-${2}-${3}-${4}".txt fi } fi |
korrigierte Version