Automator et script shell

olof

Membre actif
23 Avril 2002
770
103
51
Neuchâtel
www.olofweb.com
Salut à tous,

je découvre automator et le premier processus que j'aimerais faire est un processus qui convertit des fichiers .aif en .mp3. Pour cela, j'aimerais utiliser l'application lame. Dans le terminal, je fais comme ça :

lame -h fichier.aif fichier.mp3

Quelqu'un a une idée comment je pourrais integrer ça avec automator ?

J'ai essayé avec l'action 'Exécuter un script shell', dans la commande j'ai mis

/usr/local/bin/lame -h

et j'ai coché 'Utiliser l'entrée comme arguments'.

L'action se lance, l'application lame tourne quelques secondes (je vérifie avec top) et s'arrête. Par contre, le processus autmoator continue de tourner. Le mp3 créé fait environ 600 ko. Il est audible mais pas complet...


Une idée ???


Merci !
 
Déjà, il me paraît préférable de créer un vrai script (fichier exécutable avec shebang
#!/bin/sh
en première ligne et tout le toutim) qui te permettra ainsi de débugger plus facilement.

De vérifier les paramètres et d'écriture dans un fichier de log.
 
Salut bompi et merci pour ta réponse.

J'ai fait le script suivant (/Users/olof/bin/lame.sh) :

#!/bin/bash

/usr/local/bin/lame -h $1 - > /Users/olof/test.mp3



Ca donne exactement la même chose qu'avant. Mon mp3 fait moins d'un Mo et automator continue de tourner (je dois terminer l'action manuelement)...

J'ai jeter un oeil aux fichiers de log (/var/log/), mais sans rien trouver.

Comment est-ce que je pourrais voir ce qu'il ne va pas ?!?!
 
Ce que je voulais dire quant aux logs est qu'avec ton script tu peux renvoyer dans un fichier log les messages de lame ou tout autre chose.

Par exemple après la commande lame tu peux ajouter quelque chose comme :

myresult=$?
if [*${myresult} -ne 0 ] ; then
echo "lame [$1] : code erreur $result" >> /var/log/mylog.log
else
echo "lame [$1] : OK" >> /var/log/mylog.log
fi

Comme ça tu peux déjà vérifier que lame est sorti correctement ou non.

Je n'ai pas lame installé chez moi donc je ne connais pas ses paramètres : peut-être y en a-t-il un qui permet d'avoir des messages en cas de pépin, par exemple, ou une option du genre '-v' (verbose mode).
 
Ah ! Stop ! J'ai trouvé !

Par défaut, lame affiche des information pendant l'encodage (temps restant, fréquence, ..., ..., ...). Avec l'option -S (silent), il n'affiche plus rien et là, ça fonctionne.

Par contre, j'ai beau sélectionner plusieurs fichiers, il m'en convertit un seul !!!

J'en suis donc arrivé à la conclusion que automator n'appelle mon script qu'une seule fois, avec autant de paramètres qu'il y a de fichiers !!!

Voici donc à quoi ressembe mon script :

Bloc de code:
#!/bin/bash

while [ $# -ne 0 ]
   do
      /usr/local/bin/lame -S -h $1 $1.mp3
      shift
   done

Merci pour le coup de main !
 
olof a dit:
Ah ! Stop ! J'ai trouvé !

Par défaut, lame affiche des information pendant l'encodage (temps restant, fréquence, ..., ..., ...). Avec l'option -S (silent), il n'affiche plus rien et là, ça fonctionne.

Par contre, j'ai beau sélectionner plusieurs fichiers, il m'en convertit un seul !!!

J'en suis donc arrivé à la conclusion que automator n'appelle mon script qu'une seule fois, avec autant de paramètres qu'il y a de fichiers !!!…

Je n'ai jamais utilisé lame. Mais pour ne pas risquer d'avoir un fichier.aif.mp3, ne faudrait-il pas corriger ainsi:
Bloc de code:
#!/bin/bash

while [ $# -ne 0 ]
   do
      /usr/local/bin/lame -S -h `basename $1 .aif` $1.mp3
      shift
   done

Je fais cette suggestion par analogie avec ImageMagick où il est parfois utile d'utiliser basename.