#1 Le 02/08/2007, à 02:37
- Sleipnir
Si un 'pros' à 10 mn à perdre....Besoin d'avis, bash/zenity
Bonjour,
J'aurais juste voulu avoir l'avis d'une personne qui s'y connait 'assez', pour vérifier si 'mon script' ne comporte pas de problème particuliers ( c'est mon premier script...). Si tout est ok je les posterais dans la bonne section.
C'est assez long mais c'est beaucoup de ligne pas importantes, donc assez vite analysé.
Ce script sert à regarder et enregistrer ( programmé ou direct ) avec une option de lecture différé de l'enregistrement et l'extinction du pc à la fin.
Il est séparé en 2 script, un pour la lecture, un pour l'enregistrement.
Je mets un autre script à la fin, un peu prêt pareil pour les radios françaises.
Ces scripts sont simples à l'usage, pas de 'fioritures' ! Et je pense, simplement écrit.
J'en profite pour remercier les personnes qui ont eu la patience de m'expliquer les bases, et de me donner des bouts de codes qui m'ont bien aiguillé. Marc31, Link31, coca25, alexduf et bien d'autres, m'ont permis de bien progressé, de très bon pédagogues.....;)
Le script de lecture:
#!/bin/bash
function choix ()
{
case $EMISSION in
"France 2") CHAINE=france_2 ;;
"France 3") CHAINE=france_3 ;;
"France 4") CHAINE=france_4 ;;
"France 5") CHAINE=france_5 ;;
"France o") CHAINE=france_o ;;
"Arte") CHAINE=arte;;
"NT1") CHAINE=nt1 ;;
"Direct 8") CHAINE=direct_8 ;;
"NRJ 12") CHAINE=nrj12 ;;
"TV 5") CHAINE=tv5_monde ;;
"JET") CHAINE=jet ;;
"BFM Tv") CHAINE=bfm_tv ;;
"NRJ Hits") CHAINE=nrj_hits ;;
"La chaine parlementaire") CHAINE=lcp ;;
"Liberty TV") CHAINE=liberty_tv ;;
"Euronews") CHAINE=euronews ;;
"Aljazeera") CHAINE=aljazeera ;;
"TFou") CHAINE=tfou ;;
"Beur TV") CHAINE=beur_tv ;;
"Video Click") CHAINE=video_click ;;
"KTO") CHAINE=kto ;;
" ENREGISTREMENT ?" ) bash $HOME/Tv_LeNeuf/script/TvLeNeuf1_rec.sh ;;
esac
}
curl http://televisionsurpc.neuf.fr/televisionsurpc.m3u > $HOME/Tv_LeNeuf/script/televisionsurpc.m3u
until [ "$REP" = "1" ]
do
EMISSION=`zenity --window-icon "$HOME/Tv_LeNeuf/icone/tv.png" --title "LeNeuf TV" --text "Double-Clic pour choisir\nAnnuler pour éteindre" --height=500 --width=200 --list --column " $EMISSION" " ENREGISTREMENT ?" "" "France 2" "France 3" "France 4" "France 5" "France o" "Arte" "NT1" "Direct 8" "NRJ 12" "TV 5" "JET" "BFM Tv" "NRJ Hits" "La chaine parlementaire" "Liberty TV" "Euronews" "Aljazeera" "TFou" "Beur TV" "Video Click" "KTO"`
REP=$?
choix
FLUX=$(curl `cat $HOME/Tv_LeNeuf/script/televisionsurpc.m3u | grep $CHAINE` | grep REF | cut -d "\"" -f 2 | tail -1)
killall wxvlc
if [ "$REP" = "1" ]; then
exit
fi
wxvlc $FLUX &
done
exit
Le script d'enregistrement:
#!/bin/bash
function choix ()
{
case $EMISSION in
"France 2") CHAINE=france_2 ;;
"France 3") CHAINE=france_3 ;;
"France 4") CHAINE=france_4 ;;
"France 5") CHAINE=france_5 ;;
"France o") CHAINE=france_o ;;
"Arte") CHAINE=arte;;
"NT1") CHAINE=nt1 ;;
"Direct 8") CHAINE=direct_8 ;;
"NRJ 12") CHAINE=nrj12 ;;
"TV 5") CHAINE=tv5_monde ;;
"JET") CHAINE=jet ;;
"BFM Tv") CHAINE=bfm_tv ;;
"NRJ Hits") CHAINE=nrj_hits ;;
"La chaine parlementaire") CHAINE=lcp ;;
"Liberty TV") CHAINE=liberty_tv ;;
"Euronews") CHAINE=euronews ;;
"Aljazeera") CHAINE=aljazeera ;;
"TFou") CHAINE=tfou ;;
"Beur TV") CHAINE=beur_tv ;;
"Video Click") CHAINE=video_click ;;
"KTO") CHAINE=kto ;;
esac
}
function test_chaines ()
{
case $LIST in
"REC immédiat|Lecture différée") zenity --error --title="$title" --text="Vous devez choisir une chaine" ; exit ;;
"REC immédiat") zenity --error --title="$title" --text="Vous devez choisir une chaine" ; exit ;;
"Lecture différée") zenity --error --title="$title" --text="Vous devez choisir une chaine" ; exit ;;
"") zenity --error --title="$title" --text="Vous devez choisir une chaine" ; exit ;;
"REC immédiat|Lecture différée|"*"|"*"") zenity --error --title="$title" --text="Vous avez selectionné 2 chaines" ; exit ;;
esac
}
function rec_diff_vlc ()
{
sleep $DEBUT_MN
killall wxvlc
vlc --extraintf http $FLUX --demux=dump :demuxdump-file="$HOME/Tv_LeNeuf/enregistrements/REC-"$CHAINE"-$DATE.avi" &
PID=$!
lect_diffe &
sleep $FIN_MN
wget "http://localhost:8080/requests/status.xml?command=pl_stop" -O /dev/null
sleep 2
kill $PID
kill $PID1
exit
}
function test_retour ()
{
if [ "$1" != "0" ]; then
zenity --error --title="$title" --text="Vous devez faire un choix avant de valider"
exit
fi
}
function test_vide ()
{
if [ "$1" == "" ]; then
zenity --error --title="$title" --text="Vous devez entrer une réponse"
exit
fi
}
function lect_diff_cont ()
{
if [ $LECT = "1" ]; then
echo Lecture en différée
fi
}
function lect_diffe ()
{
if [ $LECT = "1" ]; then
sleep 5
wxvlc "$HOME/Tv_LeNeuf/enregistrements/REC-"$CHAINE"-$DATE.avi" &
PID1=$!
fi
}
curl http://televisionsurpc.neuf.fr/televisionsurpc.m3u > $HOME/Tv_LeNeuf/script/televisionsurpc.m3u
TITRE="Enregistrement"
TEXT=" Chaines et options."
title="erreur"
LIST=`zenity --title "$TITRE" --window-icon "$HOME/Tv_LeNeuf/icone/tv.png" --text "$TEXT" --height=500 --width=200 --list --checklist --column "" --column "$EMISSION" TRUE "REC immédiat" TRUE "Lecture différée" FALSE "" FALSE "France 2" FALSE "France 3" FALSE "France 4" FALSE "France 5" FALSE "France o" FALSE "Arte" FALSE "NT1" FALSE "Direct 8" FALSE "NRJ 12" FALSE "TV 5" FALSE "JET" FALSE "BFM Tv" FALSE "NRJ Hits" FALSE "La chaine parlementaire" FALSE "Liberty TV" FALSE "Euronews" FALSE "Aljazeera" FALSE "TFou" FALSE "Beur TV" FALSE "Video Click" FALSE "KTO"`
test_chaines
EMISSION=`echo $LIST | awk -F"|" '{print $NF}'`
choix
LECT=`echo $LIST | grep -c 'Lecture'`
REC=`echo $LIST | grep -c 'REC'`
FLUX=$(curl `cat $HOME/Tv_LeNeuf/script/televisionsurpc.m3u | grep $CHAINE` | grep REF | cut -d "\"" -f 2 | tail -1)
if [ $REC = "1" ]; then
DATE=`date +"%x_%X"`
killall wxvlc
wxvlc $FLUX --demux=dump :demuxdump-file="$HOME/Tv_LeNeuf/enregistrements/REC-"$CHAINE"-$DATE.avi" &
PID=$!
lect_diffe &
zenity --info --window-icon "$HOME/Tv_LeNeuf/icone/rec.png" --title "Enregistrement" --text "Arrêter l'enregistrement $EMISSION ?"
kill $PID
sleep 5
kill $PID1
exit
else
DEBUT=`zenity --window-icon "$HOME/Tv_LeNeuf/icone/tv.png" --title="Départ REC" --height=100 --width=200 --entry --text="Début dans x minutes ?"`
test_retour $?
test_vide $DEBUT
FIN=`zenity --window-icon "$HOME/Tv_LeNeuf/icone/tv.png" --title="Durée REC" --height=100 --width=200 --entry --text="Durée: x minutes ?"`
test_retour $?
test_vide $FIN
DEBUT_MN=$(($DEBUT*60))
FIN_MN=$(($FIN*60))
ETEIND=$(($DEBUT+$FIN+2))
zenity --question --window-icon "$HOME/Tv_LeNeuf/icone/tv.png" --title "$TITRE" --text="L'enregistrement de $EMISSION \ncommencera dans $DEBUT mn, durera $FIN mn \n`lect_diff_cont`"
if [ $? == 1 ]; then
exit
else
zenity --question --window-icon "$HOME/Tv_LeNeuf/icone/tv.png" --title "$TITRE" --text="Voulez vous éteindre l'ordinateur à la fin de l'enregistrement ?"
if [ $? == 0 ]; then
echo "prise en charge de la coupure ordi"
gksudo "shutdown -h +$ETEIND" &
rec_diff_vlc
else
rec_diff_vlc
lect_diffe &
fi
fi
fi
exit
J'aurais quelques questions :
J'ai du code semblable entre les 2 scripts, serait-il judicieux de créer un fichier avec ce code qui serait accessible pour les 2 scripts. C'est mieux ou pas ?
Pour programmer l'enregistrement j'utilise des sleep, reglables en minutes de départ et de temps. Si je voudrais faire en heure ( 19h30 21h30 ), c'est via cron ??? (j'y ai pas encore foutu mon nez )
Est-il possible de faire passer la valeur d'une variable d'un script à l'autre ?
Je ne sais pas comment controler la selection fait pas l'utilisateur, j'arrive pas à controler l'ensemble des solutions, je ne vois pas comment faire:
function test_chaines ()
{
case $LIST in
"REC immédiat|Lecture différée") zenity --error --title="$title" --text="Vous devez choisir une chaine" ; exit ;;
"REC immédiat") zenity --error --title="$title" --text="Vous devez choisir une chaine" ; exit ;;
"Lecture différée") zenity --error --title="$title" --text="Vous devez choisir une chaine" ; exit ;;
"") zenity --error --title="$title" --text="Vous devez choisir une chaine" ; exit ;;
"REC immédiat|Lecture différée|"*"|"*"") zenity --error --title="$title" --text="Vous avez selectionné 2 chaines" ; exit ;;
esac
}
Si 2 chaines sont selectionné, ca passe a travers le controle.
Pour finir le code pour les radios fr, + quelques autres radios ( script indépendant )
#!/bin/bash
function lecture ()
{
#Selon résultat, j'assigne l'adresse du stream choisi à "ADD" et je lance vlc en arrière plan &
case $FREQ in
"Europe 1" ) ADD=$EUROPE1 ; wxvlc --volume 230 $EUROPE1 & ;;
"Europe 2" ) ADD=$EUROPE2 ; wxvlc --volume 230 $EUROPE2 & ;;
"Skyrock" ) ADD=$SKYROCK ; wxvlc --volume 230 $SKYROCK & ;;
"France Inter" ) ADD=$FRINTER ; wxvlc --volume 230 $FRINTER & ;;
"Le Mouv" ) ADD=$LEMOUV ; wxvlc --volume 230 $LEMOUV & ;;
"Chérie FM" ) ADD=$CHERIE ; wxvlc --volume 230 $CHERIE & ;;
"Nostalgie" ) ADD=$NOSTAL ; wxvlc --volume 230 $NOSTAL & ;;
"NRJ" ) ADD=$NRJ ; wxvlc --volume 230 $NRJ & ;;
"Rires et chansons" ) ADD=$RIRE ; wxvlc --volume 230 $RIRE & ;;
"France Bleu" ) ADD=$BLEU ; wxvlc --volume 230 $BLEU & ;;
"FIP" ) ADD=$FIP ; wxvlc --volume 230 $FIP & ;;
"FUN Radio" ) ADD=$FUN ; wxvlc --volume 230 $FUN & ;;
"RTL" ) ADD=$RTL ; wxvlc --volume 230 $RTL & ;;
"RTL 2" ) ADD=$RTL2 ; wxvlc --volume 230 $RTL2 & ;;
"RFM" ) ADD=$RFM ; wxvlc --volume 230 $RFM & ;;
"Oui FM" ) ADD=$OUI ; wxvlc --volume 230 $OUI & ;;
"RMC" ) ADD=$RMC ; wxvlc --volume 230 $RMC & ;;
"Scoop Lyon" ) ADD=$SCOOP ; wxvlc --volume 230 $SCOOP & ;;
"Europe 2 Nouvelle-Scene" ) ADD=$EURNV ; wxvlc --volume 230 $EURNV & ;;
"Europe 2 Rock-Classics" ) ADD=$EURRC ; wxvlc --volume 230 $EURRC & ;;
"Europe 2 Rock-Alternative" ) ADD=$EURRA ; wxvlc --volume 230 $EURRA & ;;
"Europe 2 Rock-us" ) ADD=$EURUS ; wxvlc --volume 230 $EURUS & ;;
"Europe 2 Rock-Uk" ) ADD=$EURUK ; wxvlc --volume 230 $EURUK & ;;
"Europe 2 New-wave" ) ADD=$EURNW ; wxvlc --volume 230 $EURNW & ;;
"Nostalgie Dance" ) ADD=$NOSDA ; wxvlc --volume 230 $NOSDA & ;;
"Nostalgie Us/Uk Legend" ) ADD=$NOSUSUK ; wxvlc --volume 230 $NOSUSUK & ;;
"Nostalgie Rock Legend" ) ADD=$NOSRL ; wxvlc --volume 230 $NOSRL & ;;
"Nostalgie Classique" ) ADD=$NOSCL ; wxvlc --volume 230 $NOSCL & ;;
"NRJ Hit" ) ADD=$NRJHIT ; wxvlc --volume 230 $NRJHIT & ;;
"NRJ R'n'B" ) ADD=$NRJRN ; wxvlc --volume 230 $NRJRN & ;;
"NRJ Pop" ) ADD=$NRJPOP ; wxvlc --volume 230 $NRJPOP & ;;
"NRJ Extravadance" ) ADD=$NRJEX ; wxvlc --volume 230 $NRJEX & ;;
"NRJ Music Awards" ) ADD=$NRJMA ; wxvlc --volume 230 $NRJMA & ;;
"NRJ Rock" ) ADD=$NRJRO ; wxvlc --volume 230 $NRJRO & ;;
"NRJ Rap" ) ADD=$NRJRAP ; wxvlc --volume 230 $NRJRAP & ;;
"RFM Night Fever" ) ADD=$RFMNF ; wxvlc --volume 230 $RFMNF & ;;
"SKY FM Roots-Reggae" ) ADD=$SKYRR ; wxvlc --volume 230 $SKYRR & ;;
"BIGUPRADIO Massive Dub" ) ADD=$BIGMD ; wxvlc --volume 230 $BIGMD & ;;
"BIGUPRADIO Slamming Dancehall" ) ADD=$BIGSD ; wxvlc --volume 230 $BIGSD & ;;
"BIGUPRADIO Skanskin'Ska" ) ADD=$BIGSK ; wxvlc --volume 230 $BIGSK & ;;
"BIGUPRADIO Roots-Reggae" ) ADD=$BIGRR ; wxvlc --volume 230 $BIGRR & ;;
"BIGUPRADIO Lovers Rock" ) ADD=$BIGLO ; wxvlc --volume 230 $BIGLO & ;;
"BIGUPRADIO Sweet Soca" ) ADD=$BIGSS ; wxvlc --volume 230 $BIGSS & ;;
"COCORADIO" ) ADD=$COCO ; wxvlc --volume 230 $COCO & ;;
"SPLIFFRADIO" ) ADD=$SPLIFF ; wxvlc --volume 230 $SPLIFF & ;;
"808 Live Reggaecast" ) ADD=$HUIT ; wxvlc --volume 230 $HUIT & ;;
"Pegajosa Radio Reggaeton" ) ADD=$PEGAJ ; wxvlc --volume 230 $PEGAJ & ;;
"Perreo Radio Reggaeton" ) ADD=$PERRE ; wxvlc --volume 230 $PERRE & ;;
esac
}
EUROPE1="http://213.205.96.91:9200"
EUROPE2="http://vipmms9.yacast.net/encodereurope2/.WMA"
SKYROCK="http://player.skyrock.fm/V4/skyrock/skyrock.asx"
FRINTER="mms://vip2.yacast.fr/encoderfranceinter"
LEMOUV="mms://vip2.yacast.fr/encoderlemouv"
CHERIE="mms://vip2.yacast.fr/encodercheriefm"
NOSTAL="mms://vip2.yacast.fr/encodernostalgie"
NRJ="mms://vip2.yacast.fr/encodernrj"
RIRE="http://player.rireetchansons.fr/V4/rireetchansons/rireetchansons.asx"
BLEU="mms://vip2.yacast.fr/encoderfrancebleu"
FIP="mms://vip2.yacast.fr/encoderfip"
FUN="http://radio.funradio.fr/funradio.pls"
RTL="http://radio.rtl.fr/rtl.pls"
RTL2="http://radio.rtl2.fr/playlist/rtl2_hq.pls"
RFM="mms://vip2.yacast.fr/encoderrfm"
OUI="http://broadcast.infomaniak.ch/ouifm-high.mp3.asx"
RMC="mms://vip2.yacast.fr/encoderrmc"
SCOOP="mms://stream.tv-radio.com/scooplyon-128k"
EURNV="mms://stream.tv-radio.com/nouvellescene-128k"
EURRC="mms://stream.tv-radio.com/classics-128k"
EURRA="mms://stream.tv-radio.com/alternative-128k"
EURUS="mms://stream.tv-radio.com/us80-128k"
EURUK="mms://stream.tv-radio.com/uk80-128k"
EURNW="mms://stream.tv-radio.com/newwave-128k"
NOSDA="mms://vipnrj.yacast.net/nostalgie_webradio04"
NOSUSUK="mms://vipnrj.yacast.net/nostalgie_webradio03"
NOSRL="mms://vipnrj.yacast.net/nostalgie_webradio02"
NOSCL="mms://vipnrj.yacast.net/nostalgie_webradio01"
NRJHIT="mms://vipnrj.yacast.net/nrj_webradio01"
NRJRN="mms://vipnrj.yacast.net/nrj_webradio02"
NRJPOP="mms://vipnrj.yacast.net/nrj_webradio03"
NRJEX="mms://vipnrj.yacast.net/nrj_webradio04"
NRJMA="mms://vipnrj.yacast.net/nrj_webradio05"
NRJRO="mms://vipnrj.yacast.net/nrj_webradio06"
NRJRAP="mms://vipnrj.yacast.net/nrj_webradio07"
RFMNF="mms://stream.tv-radio.com/nightfever-128k"
SKYRR="http://www.shoutcast.com/sbin/tunein-station.pls?id=8613"
BIGMD="http://www.shoutcast.com/sbin/tunein-station.pls?id=7346"
BIGSD="http://www.shoutcast.com/sbin/tunein-station.pls?id=403"
BIGSK="http://www.shoutcast.com/sbin/tunein-station.pls?id=6313"
BIGRR="http://www.shoutcast.com/sbin/tunein-station.pls?id=4971"
BIGLO="http://www.shoutcast.com/sbin/tunein-station.pls?id=7673"
BIGSS="http://www.shoutcast.com/sbin/tunein-station.pls?id=3200"
COCO="http://www.shoutcast.com/sbin/tunein-station.pls?id=130564"
SPLIFF="http://www.shoutcast.com/sbin/tunein-station.pls?id=284357"
HUIT="http://www.shoutcast.com/sbin/tunein-station.pls?id=8551"
PEGAJ="http://www.shoutcast.com/sbin/tunein-station.pls?id=338107"
PERRE="http://www.shoutcast.com/sbin/tunein-station.pls?id=264575"
#Tant que "$RES" n'est pas egal à 1 ( 1 = clic annuler )
until [ "$RES" = "1" ]
do
DATE=`date +"%x---%X"`
RADIO=`zenity --window-icon "$HOME/Radio_fr/icone/Radio.png" --title "Radio Fr" --print-column "ALL" --text "Double-Clic pour choisir\nAnnuler pour éteindre" --height=800 --width=250 --list --column "Radio" --column "Kb/s" "France Bleu" "32" "France Inter" "64" "Europe 1" "64" "Europe 2" "64" "Skyrock" "64" "RMC" "64" "FIP" "64" "Le Mouv" "96" "FUN Radio" "96" "RTL" "96" "RTL 2" "96" "RFM" "96" "Chérie FM" "128" "Nostalgie" "128" "NRJ" "128" "Rires et chansons" "128" "Oui FM" "128" "Scoop Lyon" "128" "" "" "WEBRADIOS" "" "Europe 2 Nouvelle-Scene" "128" "Europe 2 Rock-Classics" "128" "Europe 2 Rock-Alternative" "128" "Europe 2 Rock-Us" "128" "Europe 2 Rock-Uk" "128" "Europe 2 New-wave" "128" "Nostalgie Dance" "128" "Nostalgie Us/Uk Legend" "128" "Nostalgie Rock Legend" "128" "Nostalgie Classique" "128" "NRJ Hit" "128" "NRJ R'n'B" "128" "NRJ Pop" "128" "NRJ Extravadance" "128" "NRJ Music Awards" "128" "NRJ Rock" "128" "NRJ Rap" "128" "RFM Night Fever" "128" "" "" "REGGAE" "" "SKY FM Roots-Reggae" "96" "BIGUPRADIO Massive Dub" "128" "BIGUPRADIO Slamming Dancehall" "128" "BIGUPRADIO Skanskin'Ska" "128" "BIGUPRADIO Roots-Reggae" "128" "BIGUPRADIO Lovers Rock" "128" "BIGUPRADIO Sweet Soca" "128" "COCORADIO" "128" "SPLIFFRADIO" "128" "808 Live Reggaecast" "128" "Pegajosa Radio Reggaeton" "128" "Perreo Radio Reggaeton" "160"`
#j'assigne la sortie de zenity à "RES" 0 1 ou 2
RES=$?
#comme l'option "--print-column "ALL"" est ajoutée à zenity, le résultat est de la forme "radio|bit".Je découpe pour utiliser séparemment chaque élément
FREQ=$(echo $RADIO | cut -d '|' -f 1)
BIT=$(echo $RADIO | cut -d '|' -f 2)
killall wxvlc
lecture
# Si "$RES" n'est pas égal à 1 ( clic annuler premiére boite zenity ) , boite zenity en attente avec, soit enregistrer "0", soit changer de radio "1" qui réinnitialise la boucle
if [ "$RES" != "1" ]; then
zenity --window-icon "$HOME/Radio_fr/icone/Radio.png" --question --title "Radio Fr" --text "$FREQ\nEnregistrer radio clic Valider\nChanger de radio clic Annuler"
#Si la sortie de zenity "$?" = 0 ( clic valider, ici enregistrement )
if [ $? == 0 ]; then
#je coupe $FREQ en 3 pour y glisser des "-" en cas où le résultat du choix de la radio soit composé de mots avec espaces (voir "if" suivant )
FREQU1=$(echo $FREQ | cut -d ' ' -f 1)
FREQU2=$(echo $FREQ | cut -d ' ' -f 2)
FREQU3=$(echo $FREQ | cut -d ' ' -f 3)
# if nécessaire car, si $FREQ est un simple mot, il est répetté 3 fois. FREQU sert uniquement pour nommer le fichier d'enregistrement
if [ $FREQU2 = $FREQU1 ]; then
FREQU="$FREQ"
echo $FREQ
else
FREQU="$FREQU1-$FREQU2-$FREQU3"
fi
vlc --extraintf http "$ADD" --sout "#transcode{acodec=mp3,ab=$BIT,channels=2}:standard{access=file,mux=raw,dst="$HOME/Radio_fr/enregistrements/$FREQU-$BIT\K---$DATE.mp3"}" &
PID=$!
#Comme vlc est lancé en tache de fond "&", boite zenity --info en suspend pour arrêter l'enregistrement
zenity --window-icon "$HOME/Radio_fr/icone/rec.png" --title "Enregistrement" --info --text "Clic valider pour arrêter l'enregistrement\n de $FREQ ?"
#Arrêter vlc 'proprement' grace à son interface http. Vlc doit etre lancé avec "vlc --extraintf http"
wget "http://localhost:8080/requests/status.xml?command=pl_stop" -O /dev/null
#Tuer vlc
kill $PID
fi
fi
done
exit
Voila le "merdier", Je suis preneur de toutes critiques ou améliorations possibles.
Merci d'avance
Dernière modification par Sleipnir (Le 02/08/2007, à 02:40)
Hors ligne
#2 Le 02/08/2007, à 08:56
- littleblackdog
Re : Si un 'pros' à 10 mn à perdre....Besoin d'avis, bash/zenity
alors là ... je t'avoue que ça me dépasse.
mais attends.. tu cherches à savoir si ce script fonctionne ? ou s'il fonctionne sur d'autres machines que la tienne ?
ou il ne fonctionne pas et tu veux de l'aide pour le debugger ? ou tu sais qu'il fonctionne et tu veux rendre le code plus "propre" ?
si c'est un des deux premiers trucs, tu n'as qu'à écrire un tutoriel sur comment le lancer (prérequis, ce qu'on est sensé constater..) et je veux bien essayer de le tester chez moi ... mais peut-être sans vraiment comprendre ce que je ferais. ^^°
en plus un tutoriel rend ton programme bien plus accessible, si tu veux le partager, ce qui a l'air d'être le cas. et alors, je pourrais critiquer ton tutoriel en tant qu'utilisateur un peu neuneu ...
mais d'ici là, je crains de ne pas pouvoir t'aider. bonne chance.
Dernière modification par littleblackdog (Le 02/08/2007, à 08:58)
Hors ligne
#3 Le 02/08/2007, à 09:50
- Yannick_LM
Re : Si un 'pros' à 10 mn à perdre....Besoin d'avis, bash/zenity
Bon, alors, en vrac :
1.
Ton code n'est pas assez commenté.
Il faut vraiment penser à expliquer ce que fait chaque variable.
Pense à ceux qui vont relire ton code. (ce qui peut très bien être toi dans un an, quand tu n'auras plus aucune idée de la façon dont tu t'y étais pris.
Ca m'est déjà arrivé, et je te jure que c'est vraiment pas drôle...)
Pour continuer sur la forme, c'est pas mal de définir des variables pour tes messages d'erreurs, ça évite la redondance dans ton code (par exemple, tu as plusieurs fois : "Vous devez sélectionnez ..." ).
Et puis ça permet d'adapter ton script pour l'anglais plus facilement, par exemple.
C'est pas mal aussi d'éviter d'avoir des lignes interminables, pour ça, tu peux utiliser \ suivi du caractère entrée.
Par exemple :
Une commande vraiment très très longue qui ne va sûrement pas tenir sur une seule ligne\
la suite ici...
2.
Il faut réussir à avoir quelque chose de plus évolutif.
Pour l'instant, tu as des tas d'infos codées "en dur" dans ton programme.
(Par exemple les URL des radios). C'est pas terrible, parce que si elles changent, il faut que tu modifies des choses à l'intérieur de ton script.
Il vaut meiux séparer instructions et données, en somme.
Le mieux serait donc te faire un petit fichier en plus quelque part.
Là se pose la question de la façon dont tu vas effectivement stocker tes données. C'est important et ce n'est pas toujours évident. Je te laisse cherche, c'est comme ça qu'on apprend ;-)
Tu peux te poser des questions comme : comment ajouter facilement une autre chaîne, comment mettre à jour une URL, etc...
3.
Tu as tout à fait raison quand tu dis qu'il vaut mieux éviter la redondance. Si tu dois mettre à jour quelque chose, il vaut mieux pouvoir le faire une fois à un endroit que deux fois, avec le risque de compromettre la cohérence de l'ensemble.
4.
En ce qui concerne sleep. Il faut savoir qu'il n'est pas si évident que ça de compter les secondes ... En gros, tu essayes de faire du temps réel (tu veux que ça soit des vraies secondes), mais ni l'OS ni le langage ne conviennent. Je te laisse chercher des infos sur le sujet, y en a partout.
Il vaut beaucoup mieux, en termes de ressources et de précision, passer par cron, qui en plus est fait pour ça. Utilises les outils qui te sont gracieusement offerts...
En plus, c'est rigolo. ( Surtout pour le debug)
5.
Pour zenity, je n'ai pas la réponse, mais je regarde.
Sinon, tu te poses plein de bonnes questions, c'est cool !
EDIT : et oui, fais un tuto, et fais le suivre par des 'neuneus', c'est la seule façon de voir si ça marche bien, et si ton code passe sur d'autres machines que la tienne.
Dans ce cas, il faut que tu réfléchisses où stocker toutes les données qui sont pour l'instant dans $H
OME/Tv_LeNeuf ...
Dernière modification par Yannick_LM (Le 02/08/2007, à 10:01)
Trucs et astuces pour Vim
Ma web page avec des trucs dessus ...
Hors ligne
#4 Le 02/08/2007, à 11:17
- reeth
Re : Si un 'pros' à 10 mn à perdre....Besoin d'avis, bash/zenity
Pour le deuxième script (radios) je ne comprend pas pourquoi deux instances de vlc sont créées. Et où sont enregistrés les flux?? (a moins que enregistrer veuille dire lancer le flux?)
Merci en tout cas pour ton script qui a l'air cool
Hors ligne
#5 Le 02/08/2007, à 23:51
- Sleipnir
Re : Si un 'pros' à 10 mn à perdre....Besoin d'avis, bash/zenity
Pour le deuxième script (radios) je ne comprend pas pourquoi deux instances de vlc sont créées. Et où sont enregistrés les flux??
Une instance pour la lecture, une pour l'enregistrement.
J'ai fait un petit tuto, suite à vos conseils, comment installer ce script.
http://forum.ubuntu-fr.org/viewtopic.php?id=137746
Je l'ai modifier, j'ai créer un fichier supplementaire avec les adresses des radios.
C'est pas mal aussi d'éviter d'avoir des lignes interminables, pour ça, tu peux utiliser \ suivi du caractère entrée
J'ai peur de m'y perdre, si c'est pour la lecture sur les forums, personne n'a la meme résolution d'écran, donc où couper ?
2.
Il faut réussir à avoir quelque chose de plus évolutif.
Pour l'instant, tu as des tas d'infos codées "en dur" dans ton programme.
(Par exemple les URL des radios)
J'ai écouté ton conseil, maintenant le code c'est réduit pas mal ( par contre j'ai pas mis d'extension au nouveau fichier, c'est grave docteur ? ).Le seul problème, je ne suis pas arrivé à conserver des espaces dans le nom des radios, zenity me mélange tout. Maintenant les radios sont nommées 'france_inter' au lieu de 'france inter', je sais, je pinaille.....Cela m'a supprimer 6 ou 7 lignes de l'ancien script ou je decoupais et ajoutais des '-'.
.
Dans ce cas, il faut que tu réfléchisses où stocker toutes les données qui sont pour l'instant dans $H
OME/Tv_LeNeuf ...
Elles ne sont pas bien là ??? La norme voudrait quoi ? Les mettre où ?
Sinon, je vais m'atteler à cron et essayer d'améliorer le script pour la tv. Je vais quand meme le poster car il fonctionne ( chez moi en tout cas ), je l'améliorerais à mesure .
Une question qui me vient, pour la tv, comme l'adresse des flux est necessaire au 2 script, vaut mieux laisser tel quel ou créer un fichier pour chaque chaine avec le flux ? Ca ferait pas mal de fichiers, quelle solution est la meilleur ?
Bien sur, n'hésitez pas à critiquer, surtout si c'est constructif.
Hors ligne
#6 Le 03/08/2007, à 00:02
- reeth
Re : Si un 'pros' à 10 mn à perdre....Besoin d'avis, bash/zenity
Merci pour ton tuto et pour ton script, je regarderai pour celui tv
Hors ligne
#7 Le 03/08/2007, à 10:09
- Sleipnir
Re : Si un 'pros' à 10 mn à perdre....Besoin d'avis, bash/zenity
J'ai mis le script pour la tv leneuf là:
http://forum.ubuntu-fr.org/viewtopic.php?id=137758
Hors ligne
#8 Le 03/08/2007, à 10:37
- littleblackdog
Re : Si un 'pros' à 10 mn à perdre....Besoin d'avis, bash/zenity
EDIT : et oui, fais un tuto, et fais le suivre par des 'neuneus',
heu, présent !
vu pour les tutos.
j'essaye ça la semaine prochaine, quand je rentre.
Hors ligne