[linux] script d'enregistrement des chaines sur PC

Pour discuter de tout ce qui concerne la TV d'Orange

[linux] script d'enregistrement des chaines sur PC

Messagepar laoeur » 11 Oct 2009, 16:41

Bonjour
Voila un script shell pour enregistrer sur PC une des 17 premières chaines d'orange TV .
après configuration de Orange Tv pour votre distribution et installation de vlc

voici le script:
Code: Tout sélectionner
#! /bin/bash

#Script shell (interactif/avec arguments) pour l'enregistrement des chaines Orange TV .
#ce script permet de choisir une des 17 première chaine + en HD(TF1,France2,M6,Arte),
#Laoeur me.anouar at gmail.com                                           
#version 0.1 le 11-10-2009

#require vlc
#pour fedora (requière rpm-fusion) sudo yum install vlc
#pour ubuntu sudo apt-get vlc


function Usage(){
   echo >&2 OrangeTvRecorder: version 0.1 le 11-10-2009 developped by Laoeur
   echo >&2 Usage:
   echo >&2 "   "$0 [-h -l] -c chaine -t \"h:m\" -o \"fichier\"
   echo >&2 "   "-h : imprime cette aide et sort
   echo >&2 "   "-l : imprime la liste des chaines et sort
   echo >&2 "   "-c : numero de la chaine \[1-$maxnum\]
   echo >&2 "   "-t : temps d\'enregistrement \( h:m avec h=Nombre d\'heures et m=Nombre de min\)
   echo >&2 "   "-o : fichier d\'enregistrement
   echo >&2 Ou en interactif
   echo >&2 "   "$0
   echo
   exit 1
}

OutDir=$HOME
maxnum=21
typeset -i Tvnumb

#test et creation du dossier .orangeTv pour les
if [ ! -d $HOME/.OrangeTv/ ]
then
   mkdir -p $HOME/.OrangeTv/
fi


TvListname[1]="TF1"
TvListIP[1]="rtp://@232.0.1.17:8200"
TvListname[2]="France2"
TvListIP[2]="rtp://@232.0.1.1:8200"
TvListname[3]="France3"
TvListIP[3]="rtp://@232.0.1.2:8200"
TvListname[4]="Canal+"
TvListIP[4]="rtp://@232.0.5.1:8200"
TvListname[5]="France 5"
TvListIP[5]="rtp://@232.0.1.4:8200"
TvListname[6]="M6"
TvListIP[6]="rtp://@232.0.1.10:8200"
TvListname[7]="Arte"
TvListIP[7]="rtp://@232.0.1.5:8200"
TvListname[8]="Direct8"
TvListIP[8]="rtp://@232.0.1.19:8200"
TvListname[9]="W9"
TvListIP[9]="rtp://@232.0.1.43:8200"
TvListname[10]="TMC"
TvListIP[10]="rtp://@232.0.1.7:8200"
TvListname[11]="NT11"
TvListIP[11]="rtp://@232.0.1.20:8200"
TvListname[12]="NRJ12"
TvListIP[12]="rtp://@232.0.1.8:8200"
TvListname[13]="LCP/PS"
TvListIP[13]="rtp://@232.0.1.21:8200"
TvListname[14]="France4 "
TvListIP[14]="rtp://@232.0.1.9:8200"
TvListname[15]="BFM-Tv"
TvListIP[15]="rtp://@232.0.1.22:8200"
TvListname[16]="i-Tele"
TvListIP[16]="rtp://@232.0.5.2:8200"
TvListname[17]="Virgin17"
TvListIP[17]="rtp://@232.0.1.11:8200"
TvListname[18]="TF1-HD"
TvListIP[18]="rtp://@232.0.1.205:8200"
TvListname[19]="France2-HD"
TvListIP[19]="rtp://@232.0.1.207:8200"
TvListname[20]="M6-HD"
TvListIP[20]="rtp://@232.0.1.201:8200"
TvListname[21]="Arte-HD"
TvListIP[21]="rtp://@232.0.1.202:8200"


clear

if [ $# -eq "0" ]
then
   noarg=0;

   count=1
   for i in "${TvListname[@]}"
   do
      echo $count":"  $i
      count=$(($count + 1))
   done

   echo
   echo Choisir le numero de la chaine a enregistrer:

   while read Tvnumb
   do
      if [ "$Tvnumb" -eq "0" ]; then
         echo Choisir un numero entre [1-$maxnum]: [ENTRER pour valider, Ctrl+C pour annuler]
      else
    
         if [  $Tvnumb  -lt $maxnum ]
         then
            break;
         else
            echo Choisir un numero entre [1-$maxnum]: [ENTRER pour valider, Ctrl+C pour annuler]
         fi

      fi
   done

   now=`date '+%d-%m-%y_%H-%M'`
   fileoutput="$OutDir/${TvListname[$Tvnumb]}-$now.ts"
   echo "Choisir le fichier de sortie [$fileoutput]:"
   read filen

   if [ "X"$filen != "X" ]
   then
      fileoutput="$filen"
      if [ -f $fileoutput ]
      then
          echo le fichier de sortie existe il sera remplacer [Ctrl+C pour annuler]!
         read X
      fi
   fi

   echo Entrer le temps d\'enregistrement [h:m]
   read timec
   timec=`echo $timec | awk 'BEGIN { FS = ":" } ; { sec=$1*3600+$2*60; print sec }'`
   echo Enregistrement de la chaine "${TvListname[$Tvnumb]}" vers $fileoutput pendant $timec"s"

   echo "Appuiez sur [Enter] pour valider ou Q pour annuler"
   read comm

   if ( [ "X"$comm == "XQ" ] || [ "X"$comm == "Xq" ] )
   then
      echo Enregistrement annule!
      exit
   fi

else
   noarg=1;
   hflag="false"
   listtv="false"
   while [ $# -gt 0 ]
   do
       case "$1" in
      -h)   hflag="true" ; shift;;
      -l)   listtv="true"; shift;;
      -d)   daterec="$2"; shift;;
      -t)   timec="$2"; shift;;
      -o)   fileoutput="$2"; shift;;
      -c)   Tvnumb="$2"; shift;;
      --)   shift; break;;
      -*)   Usage;;
      *)   break;;      # terminate while loop
       esac
       shift
   done

   
   if [ $listtv == "true" ]
   then
      echo >&2 OrangeTvRecorder: version 0.1 le 11-10-2009 developped by Laoeur
      echo Liste des chaines:
      count=1
      for i in "${TvListname[@]}"
      do
         echo "   "$count":"  $i
         count=$(($count + 1))
      done
      exit 1
   fi

   if ( [ "X"$fileoutput == "X" ] || [ "X"$Tvnumb == "X" ] || [ "X"$timec == "X" ] || [ $hflag == "true" ] )
   then
      Usage;
   fi

   timec=`echo $timec | awk 'BEGIN { FS = ":" } ; { sec=$1*3600+$2*60; print sec }'`
   if [ "X"$daterec != "X" ]
   then
      
      echo Oups!! pas encore implementer!
      exit -1
   else
      echo Enregistrement de "${TvListname[$Tvnumb]}" vers $fileoutput pendant $timec"s"
   fi
fi

cvlc --run-time $timec --file-caching=0 --play-and-exit --deinterlace-mode=mean ${TvListIP[$Tvnumb]} --video-filter deinterlace --sout file/ts:$fileoutput > /dev/null 2>&1 &
pid=$!

echo Afin d\'arreter le processus avant la fin de l\'enregistrement \"kill -9 $pid\"

if [ $noarg -eq "0" ]
then
   echo Voulez vous regarder l\'enregistrement? [O/n] \(n\'est pas conseille pour les vieilles becannes\)
   read comm
   if ( [ "X"$comm == "XO" ] || [ "X"$comm == "Xo" ] )
   then
      sleep 3
      vlc $fileoutput > /dev/null 2>&1 &
   fi
fi   


enregistrez le sous OrangeTvRecorder.sh et executez:
sh OrangeTvRecorder.sh -h
voici la sortie:
Code: Tout sélectionner
OrangeTvRecorder: version 0.1 le 11-10-2009 developped by Laoeur
Usage:
   OrangeTvRecorder.sh [-h -l] -c chaine -t "h:m" -o "fichier"
   -h : imprime cette aide et sort
   -l : imprime la liste des chaines et sort
   -c : numero de la chaine [1-21]
   -t : temps d'enregistrement ( h:m avec h=Nombre d'heures et m=Nombre de min)
   -o : fichier d'enregistrement
Ou en interactif
   OrangeTvRecorder.sh


Ps: utilisable avec cron pour la programmation quotidienne

mise a jour: option --file-caching=0 regle un probleme de vitesse pour les Chaines HD
Dernière édition par laoeur le 11 Oct 2009, 20:30, édité 4 fois.
laoeur
 
Messages: 19
Inscription: 09 Aoû 2008, 08:03

Messagepar superdupont » 11 Oct 2009, 16:58

intéressant...mais pour que ce soit plus utile, serait-il possible de programmer l'heure d'un enregistrement (à la manière de fricorder) ?
parce que là, on fait la meme chose directement avec vlc sans script/avec l'interface graphique, soit en appuyant sur le fameux bouton rouge pour enregistrement immédiat, soit en choisissant diffuser+choix de fichier en sortie pour enregistrer le flux où on veut.

ah, et il me semble qu'inclure les chaines HD serait pas un luxe 8)
en formatant à votre sauce, ça devrait donner :

TvListname[18]="TF1 HD"
TvListIP[18]="rtp://@232.0.1.205:8200"
TvListname[19]="France2 HD"
TvListIP[19]="rtp://@232.0.1.207:8200"
TvListname[20]="M6 HD"
TvListIP[20]="rtp://@232.0.1.201:8200"
TvListname[21]="Arte HD"
TvListIP[21]="rtp://@232.0.1.202:8200"


et oui il y a cron, mais puisqu'il y a script, autant qu'il pose la question de l'horaire/la date aussi.
C'est des suggestions d'amateur très peu moyennement éclairé, hein, j'ai jamais conçu aucun script, meme si je vois à peu près comment ça marche. Bonne continuation (si vous le sentez :wink: )
superdupont
 
Messages: 8
Inscription: 08 Oct 2009, 21:44

Messagepar laoeur » 11 Oct 2009, 17:03

merci pour la liste des HD, je les rajoute

le script je l'utilise plutot pour enregistrer une chaine lorsque je regarde une autre avec vlc

pour l'enregistrement programmé, je passe par cron en utilisant ce meme script.
laoeur
 
Messages: 19
Inscription: 09 Aoû 2008, 08:03


Retourner vers La TV Orange

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 17 invités

cron