Stream Recorder
Stream Recorder ist ein Script zur zeitgesteuerten Aufnahme von TV Livestreams aus dem TV-Browser heraus.
Inhaltsverzeichnis
Vorraussetzungen
- Internetanschluß
- Linux Pc
- at (Paket)
- mencoder (Paket)
Installation
Benutzung
Das Script
<nowiki>
- !/bin/bash
- Programm: streamrecorder Version 0.1 April 1017
- From TuxNix Lizens GPLv3 with no garanty at all.
- Parameter für Tv-Browser: Aufnahme
- record {start_hour} {start_minute} {start_year} {start_month} {start_day} {end_hour} {end_minute} {end_year} {end_month} {end_day} {channel_name} "{title}" {production_year} {episode_number} "{episode}"
- Parameter für Tv-Browser: Löschen
- delete {start_hour} {start_minute} {start_year} {start_month} {start_day} {end_hour} {end_minute} {end_year} {end_month} {end_day}
- benötigt die Programm-Pakete
- at
- mencoder
- User Konfiguration
recPath=~/MEDIEN/Videos/
- Das Script
args=("$@")
operation=${args[0]}
sStunde=${args[1]} if (( ${#sStunde} < 2 )) ; then
sStunde="0"${args[1]}
fi
sMinute=${args[2]} if (( ${#sMinute} < 2 )) ; then
sMinute="0"$sMinute
fi
sJahr=${args[3]}
sMonat=${args[4]} if (( ${#sMonat} < 2 )) ; then
sMonat="0"$sMonat
fi
sTag=${args[5]} if (( ${#sTag} < 2 )) ; then
sTag="0"$sTag
fi
eStunde=${args[6]} if (( ${#eStunde} < 2 )) ; then
eStunde="0"$eStunde
fi
eMinute=${args[7]} if (( ${#eMinute} < 2 )) ; then
eMinute="0"$eMinute
fi
eJahr=${args[8]}
eMonat=${args[9]} if (( ${#eMonat} < 2 )) ; then
eMonat="0"$eMonat
fi eTag=${args[10]} if (( ${#args[10]} < 2 )) ; then
eTag="0"${args[10]}
fi
Kanal=${args[11]}
sTitel=`echo ${args[12]} | sed 's/ /_/g'`
if (( ${#args[13]} > 3 )) ; then
sProdJahr="-${args[13]}"
fi
if (( ${#args[14]} > 3 )) ; then
sEpisNr="_"${args[14]}
fi
if (( ${#args[15]} > 3 )) ; then
sEpis=`echo ${args[12]} | sed 's/ /_/g'`
fi
sName=$sTitel$sProdJahr #$sEpisNr$sEpis
echo $sName
startZeit=$sStunde:$sMinute' '$sJahr-$sMonat-$sTag endZeit=$eStunde:$eMinute' '$eJahr-$eMonat-$eTag
if [ $operation == 'record' ] ; then
if [ $Kanal == 'ARD' ] ; then stream_url='http://daserste_live-lh.akamaihd.net/i/daserste_de@91204/master.m3u8' echo "Sender: ARD" elif [ $Kanal == 'alpha' ] ; then stream_url="http://livestreams.br.de/i/bralpha_germany@119899/master.m3u8" echo "Sender: alpha" elif [ $Kanal == 'one' ] ; then stream_url="http://wdr_einsfestival-lh.akamaihd.net/i/wdr_einsfestival@328300/master.m3u8" echo "Sender: one" elif [ $Kanal == 'Tagesschau' ] ; then stream_url="http://tagesschau-lh.akamaihd.net/i/tagesschau_1@119231/master.m3u8" echo "Sender: Tagesschau" elif [ $Kanal == 'Arte' ] ; then stream_url="http://artelive-lh.akamaihd.net/i/artelive_de@393591/master.m3u8" echo "Sender: Arte" elif [ $Kanal == 'BR' ] ; then stream_url="http://livestreams.br.de/i/bfsnord_germany@119898/master.m3u8" echo "Sender: BR" elif [ $Kanal == 'DW' ] ; then stream_url="http://dwstream72-lh.akamaihd.net/i/dwstream72_live@123556/master.m3u8" echo "Sender: DW" elif [ $Kanal == 'hr' ] ; then stream_url="http://live1_hr-lh.akamaihd.net/i/hr_fernsehen@75910/master.m3u8" echo "Sender: hr" elif [ $Kanal == 'Kika' ] ; then stream_url="http://kika_geo-lh.akamaihd.net/i/livetvkika_de@75114/master.m3u8" echo "Sender: Kika" elif [ $Kanal == 'mdr' ] ; then stream_url="http://mdr_th_hls-lh.akamaihd.net/i/livetvmdrthueringen_de@106903/master.m3u8" echo "Sender: mdr" elif [ $Kanal == 'NDR' ] ; then stream_url="http://ndr_fs-lh.akamaihd.net/i/ndrfs_nds@119224/master.m3u8" echo "Sender: NDR" elif [ $Kanal == phoenix ] ; then stream_url="http://zdf0910-lh.akamaihd.net/i/de09_v1@392871/master.m3u8" echo "Sender: phoenix" elif [ $Kanal == 'rbb' ] ; then stream_url="http://rbb_live-lh.akamaihd.net/i/rbb_brandenburg@107638/master.m3u8" echo "Sender: rbb" elif [ $Kanal == '3sat' ] ; then stream_url="http://zdf0910-lh.akamaihd.net/i/dach10_v1@392872/master.m3u8" echo "Sender: 3sat" elif [ $Kanal == 'SR' ] ; then stream_url="http://live2_sr-lh.akamaihd.net/i/sr_universal02@107595/master.m3u8" echo "Sender: SR" elif [ $Kanal == 'SWR' ] ; then stream_url="http://swrbw-lh.akamaihd.net/i/swrbw_live@196738/master.m3u8" echo "Sender: SWR" elif [ $Kanal == 'WDR' ] ; then stream_url="http://wdr_fs_geo-lh.akamaihd.net/i/wdrfs_geogeblockt@112044/master.m3u8" echo "Sender: WDR" elif [ $Kanal == 'ZDF' ] ; then stream_url="http://zdf1314-lh.akamaihd.net/i/de14_v1@392878/master.m3u8" echo "Sender: ZDF" elif [ $Kanal == 'ZDFinfo' ] ; then stream_url="http://zdf1112-lh.akamaihd.net/i/de12_v1@392882/master.m3u8" echo "Sender: ZDFinfo" elif [ $Kanal == 'ZDFneo' ] ; then stream_url="http://zdf1314-lh.akamaihd.net/i/de13_v1@392877/master.m3u8" echo "Sender: ZDFneo" else echo "Abbruch: Der Sender $Kanal ist im Aufnahmeskript noch nicht gelistet" echo "Bitte Sendernamen auch in kaffeine ohne Leerzeichen eintragen" exit 1 fi
echo 'Erstelle at-Jobs' echo "mencoder $stream_url -vid 9 -oac pcm -ovc copy -o $recPath$sName.mp4" | at $startZeit echo "killall mencoder" | at $endZeit
elif [ $operation == 'delete' ] ; then
echo
Monate=([1]=Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec)
atq | grep "${Monate[${args[4]}]} ${args[5]} $sStunde:$sMinute:00 $sJahr" > atq.txt Job=`cut -f1 atq.txt` echo "Job $Job gelöscht" atrm $Job # Dies für den Fall, dass mittels kaffeine die laufende Aufnahme gestestoppt wird. # Da der Stopp Job der Prozess mencoder wird abgebrochen, sonst läuft er ewig! sysTime=`date --date='now' +%s` sTime=`date --date="$sJahr-$sMonat-$sTag $sStunde:$sMinute" +%s` if (( $sysTime > $sTime )) ; then killall mencoder echo "Die Aufnahme wurde beendet" fi atq | grep "${Monate[${args[9]}]} ${args[10]} $eStunde:$eMinute:00 $eJahr" > atq.txt Job=`cut -f1 atq.txt` echo "Job $Job gelöscht" atrm $Job
else echo 'Abbruch: Der Operator $operator ist nicht korrekt.' exit 2 fi exit 0 <\nowiki>