Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 04/11/2008, à 12:38

gtkshroom

[Bash] Zenity et les barres de progression.

Bonjour,

Je m'initie à l'écriture de petits scripts en Bash, et j'utilise également les fonctions de Zenity pour rendre mes scripts plus graphique. Autant dire que je suis encore novice en la matière. Je tente en ce moment de modifier un code d'un programme existant(m2tstoavi pour être plus précis) afin de lui faire afficher une barre de progression par l'intermédiaire de Zenity(Manuel), mais je ne sais pas trop comment m'y prendre, surtout au niveau de la syntaxe. Voici le code modifié, dont le résultat n'aboutit à rien pour le moment:

#!/bin/csh

#The scripts and instructions in this package are free to use and
#redistribute AT YOUR OWN RISK!!  Standard disclaimers apply.
#NO WARRANTY!
(
echo "# Loading *.MTS file..."
if ( $#argv == "0" ) then
	echo usage: $0 filename.m2ts ...
	exit
else
	set files=($*)
endif
echo "# Setting path..."
set path = ( . $path )

echo "# Loading conversion programs..."
echo using:
which xporthdmv || exit
which ldecod || exit
which ffmpeg || exit

echo "# Starting conversion..."
echo $0 Starting.
echo " "
foreach file ($files)
	if ( ! -f $file ) then
		echo file $file not found
		exit
	endif

	set filebase=`basename $file | sed s/\.m2ts// | sed s/\.MTS//`
	set audiofile=/tmp/$filebase".ac3"
	set videofifo=/tmp/$filebase".yuv"
	set outputfile=$filebase".avi"
        
        echo "# Converting video..."
	if ( ! -f $audiofile ) then
		echo xporthdmv -h $file 1 1 1
		     xporthdmv -h $file 1 1 1 && mv bits0001.mpa $audiofile
	else
		echo $audiofile already exists, not creating it.
	endif

	#mkfifo $videofifo

	if ( ! -f $videofifo ) then
		echo ldecod -i bits0001.mpv -o $videofifo
	     	#ldecod -i bits0001.mpv -o $videofifo & 
	     	ldecod -i bits0001.mpv -o $videofifo
	else
		echo $videofifo already exists, not creating it.
	endif

	if ( ! -f $outputfile ) then
		echo mencoder $videofifo -demuxer rawvideo -rawvideo w=1440:h=1080 -aspect 16:9 -ofps 29.97 \
			      -audiofile $audiofile \
			      -oac copy  -ovc lavc \
			      -o $outputfile

		     mencoder $videofifo -demuxer rawvideo -rawvideo w=1440:h=1080 -aspect 16:9 -ofps 29.97 \
			      -audiofile $audiofile \
			      -oac copy -ovc lavc \
			      -o $outputfile
	else
		echo $outputfile exists, not creating it.
	endif
end

#echo To remove temporary files: rm -f /tmp/*.ac3 /tmp/*.yuv
echo "# Ending conversion..."
rm -f ./dataDec.txt ./log.dec bits0001.mpv $videofifo $audiofile
echo $0 complete.
) |
zenity --progress \
    --title="Converting m2ts to AVI" \
    --text="Starting M2TStoAVI..." \
    --percentage=0

if [ "$?" = -1 ] ; then
  zenity --error \
    --text="Conversion aborted."
  exit
endif

L'exemple dans le manuel de Zenity montre que le premier bloc doit être encadré par des parenthèses, ensuite il faut placer "|" et terminer par le bloc de la barre de progression. Seulement dans ce script ça ne fonctionne pas, l'erreur en sortie dans le terminal quand le script commence par "(" est:

Too many ('s

Je vous remercie d'avance pour votre aide. smile

Hors ligne

#2 Le 04/11/2008, à 14:40

AnsuzPeorth

Re : [Bash] Zenity et les barres de progression.

bjr,

Le message d'erreurs te dit que tu as une/des parenthèse en trop.
Regarde bien, juste avant la boite zenity que tu as ajouté,il y a une parenthèse seule, je ne pense pas qu'elle est sa place.

Sinon regarde la pour la barre de progression zenity
http://forum.ubuntu-fr.org/viewtopic.php?id=142895

Une petite recherche te donne souvent la reponse sur ce forum.

J'ajoute que si tu compte faire des scripts avec un GUI, regarde du coté d'autoglade, c'est loin devant zenity pour les boites de dialogues, tu peux créer une interface au petits oignons.

2 petits exemples sur le blog que je vient de créer: http://script-bash-autoglade.blogspot.com/
Je vais surement faire un petit tuto, mais c'est tellement simple que je me demande si c'est nécessaire.

#3 Le 04/11/2008, à 20:51

gtkshroom

Re : [Bash] Zenity et les barres de progression.

Merci pour les indications.

Pour les boutons sous glade, j'ai regardé ton script de StrockMDP et j'ai compris pour les signaux à récupérer en sortie dans le script, par contre avec ma progress bar, comment dois-je exprimer l'information(ici du texte) à afficher dans la progress bar de la boîte de dialogue dans le script? Là, j'ai seulement les echo "# blabla" que zenity est censé récupérer dans sa progress bar.

Merci.

Hors ligne

#4 Le 05/11/2008, à 00:52

AnsuzPeorth

Re : [Bash] Zenity et les barres de progression.

Je te parlais d'autoglade en général. Il n'a malheureusement pas encore tout de fonctionnel.
Pour la barre de progression, je pense pas que cela pourra fonctionner avec autoglade.
Pareillement, les listes ne sont tjrs pas en fonction (prochaine version, d'ici peu).

Autoglade permet tout de même de faire des boites de dialogues vraiment fonctionnel, et si j'en fait la pub, c'est que je pense que cette application a vraiment de l'avenir, et plus on est a l'utiliser, plus les mises a jours et nouvelles fonctions seront disponibles.

L'adresse du blog du concepteur: http://dtmilano.blogspot.com/

Tout ce qui concerne autoglade, les liens vers l'application et des tutos s'y trouvent.

Tout ceux qui veulent un joli GUI pour leurs scripts bash, allez y, foncez....

#5 Le 05/11/2008, à 14:49

gtkshroom

Re : [Bash] Zenity et les barres de progression.

Oui , Autoglade me servira dans plein d'autres petites applications, c'est effectivement très pratique et plus confortable que Zenity pour le design des boîtes gtk en tout genre.

Donc, je vais essayer de caser un zenity --progress dans ce script, seule contrainte, je ne peux que en placer pour une seule instruction neutral. Je n'arrive pas à réuinir toutes les étapes en un bloc, à la limite le démarrage des applications ou la suppression du logfile, je peux m'en passer, c'est juste pour le déroulement de la conversion que je souhaiterais afficher une barre de progression.

Je vais continuer à regarder mais si vous aviez d'autres conseils, je suis preneur. Merci. smile

Hors ligne