RAI e LINUX


Installare tutto il necessario (arch) 
yaourt -S ffmpeg curl rtmpdump w3m zenity yad medit

Installare tutto il necessario (debian)
1. aggiungere la repository
sudo apt-add-repository ppa:webupd8team/y-ppa-manager

2.aggiornare i contenuti di tutte le repository (passaggio obbligato)
sudo apt-get update

3. installare il programma
sudo apt-get install ffmpeg curl rtmpdump w3m zenity yad medit

nel caso la repository desse errore nella fase di aggiornamento eliminarla con il comando 
sudo apt-add-repository -r ppa:webupd8team/y-ppa-manager

dopo aver installato il necessario


1.creare un nuovo file chiamato raitv nella cartella /usr/bin scrivendo nel terminale
sudo medit /usr/bin/raitv

2.incollare all'interno le seguenti struzioni (copiare tutto fino alla scritta done)
#!/bin/bash
## Rai-Mobile
# Copyleft 2012 gajm/lihin
# Released under WTFPL v2.0
## Set Player
player="ffplay -autoexit"
# Relinker iPhone/iPad
live_chan='Rai1@http://mediapolis.rai.it/relinker/relinkerServlet.htm?cont=1182259
Rai2@http://mediapolis.rai.it/relinker/relinkerServlet.htm?cont=308718
Rai3@http://mediapolis.rai.it/relinker/relinkerServlet.htm?cont=308709
Rai4@http://mediapolis.rai.it/relinker/relinkerServlet.htm?cont=746966
Rai5@http://mediapolis.rai.it/relinker/relinkerServlet.htm?cont=395276
Raimovie@http://mediapolis.rai.it/relinker/relinkerServlet.htm?cont=747002
Raipremium@http://mediapolis.rai.it/relinker/relinkerServlet.htm?cont=746992
Raigulp@http://mediapolis.rai.it/relinker/relinkerServlet.htm?cont=746953
Raiyoyo@http://mediapolis.rai.it/relinker/relinkerServlet.htm?cont=746899
Raistoria@http://mediapolis.rai.it/relinker/relinkerServlet.htm?cont=746990
Raiscuola@http://mediapolis.rai.it/relinker/relinkerServlet.htm?cont=747011
Rainews@http://mediapolis.rai.it/relinker/relinkerServlet.htm?cont=489110
Raisport1@http://mediapolis.rai.it/relinker/relinkerServlet.htm?cont=358025
Raisport2@http://mediapolis.rai.it/relinker/relinkerServlet.htm?cont=358071'
live_list=`echo "$live_chan" | cut -d'@' -f1`
rep_list='RaiUno
RaiDue
RaiTre
RaiCinque'
rep_date=`for i in {1..7}; do date -d "$i day ago" +%Y-%m-%d" "%A; done`
aspect_ratio='originale
4:3
16:9'
function raimobile(){
   yad --width=200 --form --title="Rai-Mobile" --text="Scegli cosa vuoi vedere:" --item-separator="\n" --field="Rai Live:CB" "$live_list" --field="RaiReplay:CB" "$rep_list" --field="Data:CB" "$rep_date" --field="Aspect:CB" "$aspect_ratio" --field "Televideo - Programmi":BTN "chromium-browser -e http://www.televideo.rai.it/televideo/pub/solotesto.jsp?pagina=501" --button="gtk-cancel:1" --button="_Diretta:100" --button="_Replay:200" > /tmp/raimob-param
   case $? in
      100) railive ;;
      200) raireplay ;;
      *) exit ;;
   esac
}
function railive(){
   live_chan_ch=`cut -d'|' -f1 /tmp/raimob-param`
   relinker=`echo "$live_chan" | grep "$live_chan_ch" | cut -d'@' -f2`
   stream_rel=`curl -I "$relinker"  | grep 'Location: ' | awk '{print $2}'`
   if [ "$stream_rel" == "" ]; then
      yad --title="Error" --window-icon="dialog-error" --image="dialog-error" --text="ERRORE:\nStream non disponibile " --button="gtk-ok:0"
      continue
   fi
   qual_level=`curl "$stream_rel" | grep -v \# | sed 's/\r//'`
   qual_ch=`echo "$qual_level" | yad --list --height=250 --width=500 --title "Raalcuni elementii-Mobile - Diretta $live_chan_ch" --text="Seleziona lo stream da usare:" --column="Streams"`
   if [[ $? -ne 0 || "$qual_ch" == "" ]]; then continue; fi
   if [ X"$(echo "$qual_ch" | grep 'http://')" == "X" ]; then
      ## TODO Caratteristica del formato (format=m3u8-aapl)?
      stream_base_url=`echo "$stream_rel" | awk -F"[Mm]anifest" '{print $1}'`
      ## Stiamo usando yad... bisogna eliminare "|" alla fine di "$qual_ch".
      stream="$stream_base_url${qual_ch%?}"
   else
      stream="${qual_ch%?}"
   fi
   aspect=`cut -d'|' -f4 /tmp/raimob-param`
   if [ "$aspect" == "originale" ]; then
   $player -window_title "Diretta - $live_chan_ch" "$stream"
   else
      $player -window_title "Diretta - $live_chan_ch" -vf setdar="$aspect" "$stream"
   fi
}
function raireplay(){
   rep_chan_ch=`cut -d'|' -f2 /tmp/raimob-param`
   rep_date_ch=`cut -d'|' -f3 /tmp/raimob-param | cut -d' '  -f1`
   wget -q http://www.rai.tv/dl/portale/html/palinsesti/replaytv/static/"$rep_chan_ch"_"${rep_date_ch//-/_}".html -O /tmp/rairep-idx
   grep -B1 '"t":' /tmp/rairep-idx | awk 'NR%3!=0 && NR%3!=2' | cut -d'"' -f2 > /tmp/rairep-tmp-hour
   grep '"t":' /tmp/rairep-idx | cut -d'"' -f4 > /tmp/rairep-tmp-title
   grep '"i":' /tmp/rairep-idx | cut -d'"' -f4 | awk '{print "id"$0}' > /tmp/rairep-tmp-idx_num
   grep '"urlTablet":' /tmp/rairep-idx | cut -d'"' -f4 > /tmp/rairep-tmp-ipad
   grep '"urlSmartPhone":' /tmp/rairep-idx | cut -d'"' -f4 > /tmp/rairep-tmp-iphone
   grep '"h264":' /tmp/rairep-idx | cut -d'"' -f4 > /tmp/rairep-tmp-android
   paste -d'|' /tmp/rairep-tmp-hour /tmp/rairep-tmp-title /tmp/rairep-tmp-idx_num /tmp/rairep-tmp-iphone /tmp/rairep-tmp-ipad /tmp/rairep-tmp-android > /tmp/rairep-param
   rm /tmp/rairep-tmp-*
   prog_ch=`grep -v '|||' /tmp/rairep-param | awk -F'|' '{print $1" - "$2" - "$3}' | yad --list --height=500 --width=450 --title "Replay - $rep_chan_ch - $rep_date_ch" --text="Seleziona il programma:" --column="Programmi"`
   if [[ $? -ne 0 || "$prog_ch" == "" ]]; then continue; fi
   prog_id="${prog_ch##*id}"
   ## Non può sbagliare il grep dell'id, l'output è tipo "12345|"
   prog_param=`grep "id$prog_id" /tmp/rairep-param`
   rm /tmp/rairep-* && touch /tmp/rairep-stream
   ## Stream HLS akami "http://rai-i.akamaihd.net/[...].10.00_,600,800,1200,1500,.mp4.csmil/master.m3u8"
   iph_adap_stream=`echo "$prog_param" | awk -F'|' '{print $4}'`
   if [ X"$iph_adap_stream" != "X" ]; then
      iph_res=`echo "$iph_adap_stream" | grep -o ',[^,]*' | grep -v m3u8 | cut -d',' -f2`
      echo "$iph_res" | while read line; do
         iph_stream=`echo "$iph_adap_stream" | sed "s/\(,\)..*\(,\)/\1$line\2/"`
         echo "iPhone-$line|$iph_stream" > /tmp/rairep-stream
      done
   fi
   ipa_adap_stream=`echo "$prog_param" | awk -F'|' '{print $5}'`
   if [ X"$ipa_adap_stream" != "X" ]; then
      ipa_res=`echo "$ipa_adap_stream" | grep -o ',[^,]*' | grep -v m3u8 | cut -d',' -f2`
      echo "$ipa_res" | while read line; do
         ipa_stream=`echo "$ipa_adap_stream" | sed "s/\(,\)..*\(,\)/\1$line\2/"`
         echo "iPad-$line|$ipa_stream" >> /tmp/rairep-stream
      done
   fi
   ## Stream .mp4 non adattivo
   and_relinker=`echo "$prog_param" | awk -F'|' '{print $6}'`
   and_stream=`curl -I "$and_relinker" | grep 'Location: ' | awk '{print $2}' | sed 's/\r//'`
   if [ X"$and_stream" != "X" ]; then
      echo "Android-h264|$and_stream" >> /tmp/rairep-stream
   fi
   stream_ch=`cat /tmp/rairep-stream | yad --list --height=300 --width=500 --title "Replay - ${prog_ch%- id*}- $rep_date_ch" --text="Seleziona lo stream da usare:" --column="Streams"`
   if [[ $? -ne 0 || "$stream_ch" == "" ]]; then continue; fi
   stream=`echo "$stream_ch" | awk -F'|' '{print $2}'`
   aspect=`cut -d'|' -f4 /tmp/raimob-param`
   if [ "$aspect" == "originale" ]; then
   $player -window_title "Replay - ${prog_ch%- id*}- $rep_date_ch" "$stream"
   else
      $player -window_title "Replay - ${prog_ch%- id*}- $rep_date_ch" -vf setdar="$aspect" "$stream"
   fi
   rm /tmp/rairep-*
}
while [ $? -eq 0 ]; do
   raimobile
done

3. dopo aver incollato le istruzioni,  salvare il file raitv
cliccare tasto salva di medit

4. rendere il file eseguibile 
sudo chmod +x /usr/bin/raitv

5. creare file RaiTv.desktop 
sudo medit /usr/share/applications/RaiTv.desktop

6. scrivere od incollare al suo interno
[Desktop Entry]
Version=1.0
Terminal=false
Icon=tvtime
Type=Application
Categories=Qt;AudioVideo;Video;Player;
Exec=raitv
Name=RaiTv

7. Salvare 
cliccare tasto salva di medit

8. Rendere il file creato eseguibile con il seguente comando da terminale
sudo chmod +x /usr/share/applications/RaiTv.desktop

Ora eseguirlo digitando 
raitv 
nel terminale 
o
spostando il file RaiTv.desktop dalle applicazioni sulla dock Plank!

N.B. Questa guida costituisce un promemoria e deriva da informazioni varie prese in rete.