# Automator et script shell



## olof (2 Mai 2005)

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 !


----------



## bompi (2 Mai 2005)

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.


----------



## olof (5 Mai 2005)

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 ?!?!


----------



## bompi (5 Mai 2005)

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).


----------



## olof (5 Mai 2005)

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 :


```
#!/bin/bash

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

Merci pour le coup de main !


----------



## FjRond (7 Mai 2005)

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.
> 
> ...



Je n'ai jamais utilisé lame. Mais pour ne pas risquer d'avoir un fichier.aif.mp3, ne faudrait-il pas corriger ainsi:

```
#!/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.


----------

