Bonsoir Beudbeud,
Une solution est proposée (utilisation de xargs) par pmd sur ce topic :
http://forum.ubuntu-fr.org/viewtopic.php?id=138062.
En m'inspirant de cela, j'ai bricolé un petit peu pour parvenir à une solution qui fera sans doute dresser les cheveux sur la tete des codeurs les plus chevronnés mais qui à le mérite de fonctionner (les modifs sont en gras).
EDIT : bon, en fait, les balises gras ne fonctionnent pas dans les balises codes, j'encadre donc par des lignes de # la fonction rajoutée, et je commente de plusieures # les lignes modifiées.
#!/bin/sh
#déclaration variable
i=""
EX=.wmv
EMP=Vidéos/arte
TEMP=/home/$USER/.arteplus7
##déclaration fonction
#annuler
annuler ()
{
if [ $? = 1 ]; then
rm $FXML
rm liste_emissions
rm numeros
exit
fi
}
##################################################################
format_zenity()
{
nb=1
tmp=""
for i in $(cat "numeros") ; do
if [ "$tmp" = "" ] ; then
tmp=$(echo "\"$(cat "liste_emissions" | head -$nb | tail -1 | cut -d "|" -f1)\" \"$(cat liste_emissions | head -$nb | tail -1 | cut -d "|" -f2)\" \"$(cat liste_emissions | head -$nb | tail -1 | cut -d "|" -f3)\"")
nb=$(( $nb + 1 ))
else
tmp="$tmp $(echo \"$(cat "liste_emissions" | head -$nb | tail -1 | cut -d "|" -f1)\" \"$(cat liste_emissions | head -$nb | tail -1 | cut -d "|" -f2)\" \"$(cat liste_emissions | head -$nb | tail -1 | cut -d "|" -f3)\")"
nb=$(( $nb + 1 ))
fi
done
echo "$tmp"
}
##################################################################
#choix de l'emission
choix_emission()
{
cat $FXML | grep "<index>" | sed -e 's/<index>//g' -e 's/<\/index//g' -e 's/ //g' -e 's/>//g' >numeros
nb=1
rm liste_emissions
for i in $(cat "numeros") ; do
##############titre=$(cat $FXML | grep "<bigTitle>" | sed -e 's/<bigTitle>//g' -e 's/<\/bigTitle>//g' -e 's/ //g' | head -$nb | tail -1)
date=$(cat $FXML | grep "<startDate>" | sed -e 's/<startDate>//g' -e 's/<\/startDate>//g' -e 's/\([[:digit:]][[:digit:]][[:digit:]][[:digit:]]\)-\([[:digit:]][[:digit:]]\)-\([[:digit:]][[:digit:]]*\)/\3-\2-\1/g' -e 's/T/@/g' -e 's/ //g' | head -$nb | tail -1)
url=$(cat $FXML | grep "<targetURL>" | sed -e 's/<targetURL>//g' -e 's/<\/targetURL>//g'| head -$nb | tail -1)
##############echo "$url|$titre|$date" >>liste_emissions
nb=$(( $nb + 1 ))
done
#############CHXEMI=$(format_zenity | xargs zenity --list --width=630 --height=500 \
--title="Arte+7 recorder" \
--text="Veuillez sélectionner l'émission :" \
--hide-column=1 \
--column="Url" --column="Emission" --column="Date"
);
annuler
PAGE=$CHXEMI
info_emission
}
#info emission
info_emission()
{
DATED=`cat liste_emissions | grep $CHXEMI | awk -F" " '{print $3}'`
TITREBASE=`cat liste_emissions | grep $CHXEMI | awk -F" " '{print $2}'`
RESUM=`wget -O - -q $PAGE | grep -A 2 '<p class="text">' | awk -F'<p class="info">' '{print $1}'| sed 's/<.*>/\ /g'| sed 's/^\s*//' `
zenity --question --title="Voulez-vous télécharger l'émission $TITREBASE" --text="Titre : $TITREBASE
Date : $DATED
Résumé : $RESUM"
if [ $? = 1 ]; then
choix_emission
fi
}
#création du répertoire vidéos/arte
mkdir -p $HOME/$EMP
mkdir -p $TEMP
cd $TEMP
#recuperation page arte
PARTE=`wget -O - -q http://plus7.arte.tv/ | grep xmlURL | awk -F'"' '{print $4}'`
PXML="http://plus7.arte.tv/"$PARTE
#recuperation fichier xml
wget $PXML
FXML=`echo $PARTE | awk -F"/" '{print $4}'`
#selection de l'emission
choix_emission
#Tanscription du titre
TITRE=`echo "$TITREBASE" | sed -e "s/[[:space:]]/_/g" | sed -e "s/\/$//" | sed -e "s/'/_/g" | sed -e "s/-/_/g" | sed -e "s/__/_/g" | sed -e 's/\///g'`
OUT=$TITRE
#vérification doublon
ls $HOME/$EMP/$OUT$EX >> /dev/null 2>&1
if (test $? -ne 0);
then OUT2=$OUT
else while ls $HOME/$EMP/$OUT$i$EX >> /dev/null 2>&1
do
i=$(($i+1))
if (test $? -eq 0) then OUT2=$OUT$i
fi
done
fi
# divers
TEMP=`echo "$TITRE"_temp.wmv`
# recupere dans le source le lien vers le fichier qui contient le vrai lien
wget -O - -q $PAGE | grep wmv | grep HQ >> /dev/null 2>&1
if (test $? -eq 0)
then QUAL="HQ"
else QUAL="MQ"
fi
FILE1=`wget -O - -q $PAGE | grep wmv | grep $QUAL | awk -F= '{print $2}' | awk -F\" '{print $2}' | awk -F\? '{print $1}'`
wget $FILE1 -O $TEMP
# extrait le lien mms
MMS=`cat $TEMP | grep mms | awk -F\" '{print $2}'`
#netoyage
rm $TEMP
rm $FXML
rm liste_emissions
rm numeros
#telechargement graphique et prévisualisation
(mimms $MMS $HOME/$EMP/$OUT2$EX | gawk -vRS="\r" '/^[0-9]/{print "#"$0 ; fflush();}' | zenity --progress --pulsate --title="Téléchargement de $TITREBASE $i" --text="Enregistrement de $TITREBASE $i" --auto-close --auto-kill annuler)&
sleep 30s && zenity --question --title="Lecture" --text="Voulez vous prévisualiser $TITREBASE $i?" >>/dev/null 2>&1
if (test $? -eq 0);
then totem $HOME/$EMP/$OUT2$EX
PREV=1
else
PREV=0
fi
# notif finale
wait
echo message:enregistrement de $TITREBASE $i est terminé | zenity --notification --listen --window-icon="info" | zenity --notification --window-icon="info" --text="L'enregistrement de $TITREBASE $i est terminé"
#ouverture du fichier
if (test $PREV -eq 1)
then exit
else
zenity --question --title="Lecture" --text="Voulezvous lire $TITREBASE $i?" >>/dev/null 2>&1
if (test $? -eq 0); les modifs sont en gras
then totem $HOME/$EMP/$OUT2$EX
else exit
fi
fi
J'ai d'abord fait une petite fonction "format_zenity" qui rempli une variable "tmp" de la sorte :
"liens emission 1" "titre emission 1" "date emission 1" "liens emission 2" "titre emission 2" "date emission 2" etc...
Ensuite, il faut afficher cette variable et la "piper" vers un xargs zenity.
J'ai donc également enlevé la substitution des espaces par des _ dans la recherche des titres d'emissions.
Enfin, j'ai modifié la maniere dont ta fonction "choix_emissions" écrit la liste des infos dans le fichier liste emissions (remplacement des espaces par des pipes).
Si je n'ai pas été clair dans mes explications, n'hesite pas à me demander des précisions (cependant, tout comme pmd dans le topic précedemment cité, je n'ai pas totalement saisi le fonctionnement de xargs...)
En espérant que cela puisse te dépanner...