Stream Recorder

Aus TV-Browser Wiki
Version vom 21. April 2017, 21:19 Uhr von TuxNix⧼word-separator⧽⧼parentheses⧽ ⧼parentheses⧽
⧼revision-nav⧽
Wechseln zu: Navigation⧼comma-separator⧽Suche

Stream Recorder ist ein Script zur zeitgesteuerten Aufnahme von TV Livestreams aus dem TV-Browser heraus.

Vorraussetzungen

  • Internetanschluß
  • Linux Pc
  • at (Paket)
  • mencoder (Paket)

Installation

Benutzung

Das Script

<nowiki>

  1. !/bin/bash


          1. Programm: streamrecorder Version 0.1 April 1017
          1. From TuxNix Lizens GPLv3 with no garanty at all.


          1. Parameter für Tv-Browser: Aufnahme
  1. 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}"
          1. Parameter für Tv-Browser: Löschen
  1. delete {start_hour} {start_minute} {start_year} {start_month} {start_day} {end_hour} {end_minute} {end_year} {end_month} {end_day}


          1. benötigt die Programm-Pakete
  1. at
  2. mencoder


          1. User Konfiguration

recPath=~/MEDIEN/Videos/


          1. 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>