#1 Le 12/01/2013, à 23:30
- globideuh
[script/bash] filtrer les chaines en doublons dans la playlist free tv
Bonjour,
Je regarde la télé sur mon pc à l'aide du multipost de free avec vlc, ça m’embêtais un peu d'avoir plusieurs fois la même chaîne dans la playlist lorsque plusieurs qualités sont disponibles pour la chaîne. Au début, j'avais un script qui filtrait seulement les chaînes en qualité standard, mais du coup je n'avais pas toutes les chaînes (certaines n'ont que la qualité basse, ou que la hd).
J'ai donc fais un autre script, à l'état de quick and dirty (mais bon ça fait ce que je lui demande) pour le moment afin d'avoir uniquement la qualité que je préfère (standard > basse > hd > auto) pour une chaîne. La chaîne n’apparaît donc qu'une fois dans la playlist.
Au cas où ça intéresse quelqu'un, je le poste ici, parce que j'ai pas trouvé grand chose d'équivalent (je n'ai pas cherché beaucoup non plus)
#!/bin/bash
#donne un int par qualite (plus c'est petit, plus c'est preferable)
function getqual {
case $QUAL in
"standard")
NQUAL=1
;;
"bas débit")
NQUAL=2
;;
"HD")
NQUAL=3
;;
"auto")
NQUAL=4
;;
esac
}
#suppression de la playlist si existante
if [ -f playlist.m3u ]
then
rm playlist.m3u
fi
#recuperation playlist original
wget http://mafreebox.freebox.fr/freeboxtv/playlist.m3u
CNQUAL=5
COPYNEXT=0
#ajout de l'entete
echo "#EXTM3U" > pl.tmp
#filtrage
while read line
do
if [ $COPYNEXT == 0 ]
then
if [ $(echo $line | cut -d: -f1) == "#EXTINF" ]
then
RUNNING=$(echo $line | cut -d"," -f2 | cut -d"-" -f1 | tr -d [:space:])
if [ "$RUNNING" == "$CURRENT" ]
then #chaine en cours de traitement
CNQUAL=$NQUAL
QUAL=$(echo $line | cut -d"(" -f2 | cut -d")" -f1)
getqual
if [ $CNQUAL -ge $NQUAL ]
then
LINE1=$line
COPYNEXT=1
fi
else #nouvelle chaine
echo $LINE1 >> pl.tmp
echo $LINE2 >> pl.tmp
LINE1=$line
QUAL=$(echo $line | cut -d"(" -f2 | cut -d")" -f1)
getqual
COPYNEXT=1
CURRENT=$RUNNING
fi
fi
else
LINE2=$line
COPYNEXT=0
fi
done < playlist.m3u
rm playlist.m3u
mv pl.tmp playlist.m3u
#lancement de vlc
vlc playlist.m3u
Pour le moment, le seul problème que j'ai vu (dû à l'implémentation) est que la dernière chaîne de la playlist original n'est pas affichée.
Voilà, franchement améliorable, mais ça fonctionne. Pour modifier les préférences sur la qualité, il suffit de modifier les int dans la fonction getqual (plus c'est petit, mieux c'est).
A plus,
globideuh.
Hors ligne