#1 Le 06/06/2008, à 20:59
- Ghost33
Création d'un script pour la conversion audio
Salut salut
Je souhaiterais créer un script mais j'aimerais un peu d'aide...
Voila comment je veux faire.
Au lancement du script, je veux qu'une boite de dialogue me demande quel type de conversion je veux faire (ogg en mp3, mp3 en ogg etc etc).
Ensuite une seconde boite de dialogue s'ouvre me demandant de selectionner les fichiers à convertir (le tri sera fait pour ne sortir que les fichiers dont l'extension correspond au choix (si je veux convertir du OGG en Mp3, je veux ne pouvoir selectionnner que des OGG).
Enfin, je veux que la conversion s'opére.
Pour ce faire je vais utiliser Zenity, seulement je découvre tout juste !
Ma grosse interrogation c'est de savoir comment enregistrer les variable "nom de fichier" et les réutiliser pour la conversion.
Merci pour votre aide
Ma musique ici => https://nicolas-merle.bandcamp.com/
Hors ligne
#2 Le 09/06/2008, à 05:35
- luron
Re : Création d'un script pour la conversion audio
Est-ce que tu as un début de code à proposer? Ça serait ainsi plus facile de savoir comment aider.
Hors ligne
#3 Le 09/06/2008, à 17:34
- luron
Re : Création d'un script pour la conversion audio
Ensuite une seconde boite de dialogue s'ouvre me demandant de selectionner les fichiers à convertir (le tri sera fait pour ne sortir que les fichiers dont l'extension correspond au choix (si je veux convertir du OGG en Mp3, je veux ne pouvoir selectionnner que des OGG).
[...]
Pour ce faire je vais utiliser Zenity
Je me demande si c'est possible de faire ça avec zenity. Pour afficher une boîte de dialogue permettant de choisir des fichiers, il faut utiliser l'option --file-selection, mais je ne suis pas certain que c'est possible de filtrer selon le type de fichiers. Sur http://library.gnome.org/users/zenity/stable/zenity-file-selection-options.html.fr il ne me semble y avoir rien permettant de faire ça.
C'est possible cependant avec kdialog, par exemple
kdialog --multiple --getopenfilename ~/Bureau/ "application/ogg audio/mpeg"
Sur http://www.linux.com/feature/114156 on peut voir quelques exemples de commandes avec zenity et kdialog. Sur http://techbase.kde.org/index.php?title=Development/Tutorials/Shell_Scripting_with_KDE_Dialogs on peut voir beaucoup d'exemples avec kdialog.
Hors ligne
#4 Le 09/06/2008, à 18:01
- Ghost33
Re : Création d'un script pour la conversion audio
En fait j'ai trouvé une solution plus simple, je vais traiter les dossiers en entier et pour cela j'utilise l'option --directory.
J'ai un petit soucis, j'affecte donc le résultat de ma commande zenity --file-selection à la variable $DOSSIER.
Ensuite je vais faire un "CD $DOSSIER", seulement, comme certains dossiers sont nommés avec des espaces, il faut que je traite ma variable $DOSSIER en remplaçant les espaces par des "\ " ou en précédant les espaces par "\".
Je compte donc utiliser la commande sed, pour cela je fais :
export DOSSIER=`zenity --file-selection --directory --title="selectionner un dossier à traiter"`
DOSSIER=`echo $DOSSIER |sed -e 's##\ #g'`
cd $DOSSIER
Seulement, j'ai en retour :
sed: -e expression n°1, caractère 0: pas d'expression régulière précédente
Si je tape dans mon script :
export DOSSIER=`zenity --file-selection --directory --title="selectionner un dossier à traiter"`
DOSSIER=`echo $DOSSIER |sed -e 's# #\ #g'`
cd $DOSSIER
J'ai en retour (le dossier selectionné est nommé "a compilation") :
cd: /media/disk/Mp3/a: Aucun fichier ou dossier de ce type
Dernière modification par Ghost33 (Le 09/06/2008, à 18:04)
Ma musique ici => https://nicolas-merle.bandcamp.com/
Hors ligne
#5 Le 09/06/2008, à 18:08
- Ghost33
Re : Création d'un script pour la conversion audio
En fait c'est le caractére "\" qui ne passe pas puisque si je remplace ce caractére par un autre ça marche (enfin, ça me met que le repertoire est untrouvable forcément !)
Ma musique ici => https://nicolas-merle.bandcamp.com/
Hors ligne
#6 Le 09/06/2008, à 18:18
- luron
Re : Création d'un script pour la conversion audio
Tu peux tout simplement entourer avec des guillemets ta variable. Par exemple
cd "$DOSSIER"
Hors ligne
#7 Le 09/06/2008, à 18:35
- Ghost33
Re : Création d'un script pour la conversion audio
Ok merci, comme on dit, pourquoi faire simple quand on peut faire compliqué lol
Ma musique ici => https://nicolas-merle.bandcamp.com/
Hors ligne
#8 Le 09/06/2008, à 18:54
- Ghost33
Re : Création d'un script pour la conversion audio
Voila déja ce que ça donne :
#!/bin/bash
# conversion de fichiers audio
# Selection d'un dossier
export DOSSIER=`zenity --file-selection --directory --title="selectionner un dossier à traiter"`
cd "$DOSSIER"
## Affichage de la liste des actions
ACT=$(zenity --list --radiolist --width=500 --height=447 \
--title "Sélectionner l'opérations à effectuer" \
--text="Veuillez sélectionnez l'opérations à effectuer :" \
--column="À faire ?" --column="Description" \
FALSE "Installation des paquets" \
TRUE "Conversion OGG en MP3" \
FALSE "Conversion MP3 en OGG" \
FALSE "Conversion MPC en Wav" \
FALSE "Conversion Wav en MP3" \
FALSE "Conversion Wav en OGG" \
FALSE "Conversion OGG en Wav" \
FALSE "Conversion Wma en MP3" );
if [ "${PIPESTATUS[0]}" != "0" ]; then
exit
fi
## Install
echo "$ACT" | grep "Installation des paquets" >/dev/null
if [ "$?" = 0 ] ; then
sudo apt-get install lame vorbis-tools mpg123 mplayer sox libsox-fmt-all
fi
## Conversion OGG en MP3
echo "$ACT" | grep "Conversion OGG en MP3" >/dev/null
if [ "$?" = 0 ] ; then
mkdir mp3;
for i in *.ogg; do new_name=`echo "$i" | sed s/.ogg/.mp3/g`; ogg123 -d wav -f - "$i" | lame -h - > mp3/"$new_name"; done
fi
## Conversion MP3 en OGG
echo "$ACT" | grep "Conversion MP3 en OGG" >/dev/null
if [ "$?" = 0 ] ; then
mkdir ogg; for i in *.mp3; do new_name=`echo "$i" | sed s/.mp3/.ogg/g`; mpg123 -b 10000 -s "$i" | sox -t raw -r 44100 -s -w -c2 - ogg/temp.wav; oggenc ogg/temp.wav -o ogg/"$new_name"; done; rm -f ogg/temp.wav
fi
## Conversion MPC en Wav
echo "$ACT" | grep "Conversion MPC en Wav" >/dev/null
if [ "$?" = 0 ] ; then
mkdir wav; for i in *.mpc; do new_name=`echo "$i" | sed s/.mpc/.wav/g`; mppdec-static "$i" wav/"$new_name"; done
fi
## Conversion Wav en MP3
echo "$ACT" | grep "Conversion Wav en MP3" >/dev/null
if [ "$?" = 0 ] ; then
mkdir mp3; for i in *.wav; do new_name=`echo "$i" | sed s/.wav/.mp3/g`; lame --abr 160 "$i" "new_name" ; done
fi
## Conversion Wav en OGG
echo "$ACT" | grep "Conversion Wav en OGG" >/dev/null
if [ "$?" = 0 ] ; then
for i in *.wav; do oggenc -q 6 $i ; done
fi
## Conversion OGG en Wav
echo "$ACT" | grep "Conversion OGG en Wav" >/dev/null
if [ "$?" = 0 ] ; then
mkdir wav ; for i in *.ogg; do new_name=`echo "$i"| sed s/.ogg/.wav/g`; ogg2wav "new_name" ; done
fi
## Conversion WmA en MP3
echo "$ACT" | grep "Conversion Wma en MP3" >/dev/null
if [ "$?" = 0 ] ; then
mkdir mp3 ; for i in *.wma ; do mplayer -vo null -vc dummy -af resample=44100 -ao pcm:waveheader "$i" && lame -m j -h --vbr-new -b 192 audiodump.wav -o "`basename "$i" .wma`.mp3"; done; rm -f audiodump.wav ; mv *.mp3 mp3/
fi
## FIN
zenity --info --title="Fin des opérations !" --text="Les opérations demandées sont terminées. Bonne journée !"
Je souhaiterais maintenant afficher des barres de défilement par exemple pour la premiére série de conversion :
if [ "$?" = 0 ] ; then
mkdir mp3;
for i in *.ogg; do new_name=`echo "$i" | sed s/.ogg/.mp3/g`;
ogg123 -d wav -f - "$i" | lame -h - > mp3/"$new_name";
done
fi
Je ne sais pas où le mettre, j'ai essayé mais la barre ne progresse pas et le bouton annuler de la boite de dialogue n'a aucun effet...
Dernière modification par Ghost33 (Le 09/06/2008, à 18:56)
Ma musique ici => https://nicolas-merle.bandcamp.com/
Hors ligne
#9 Le 09/06/2008, à 23:19
- Ghost33
Re : Création d'un script pour la conversion audio
J'ai pas mal avancé dites moi ce que vous en pensez...
Voici le script que je mets dans /usr/bin :
#!/bin/bash
# conversion de fichiers audio
# Selection d'un dossier
export DOSSIER=`zenity --file-selection --directory --title="selectionner un dossier à traiter"`
cd "$DOSSIER"
## Affichage de la liste des actions
ACT=$(zenity --list --radiolist --width=500 --height=447 \
--title "Sélectionner l'opérations à effectuer" \
--text="Veuillez sélectionnez l'opérations à effectuer :" \
--column="À faire ?" --column="Description" \
FALSE "Installation des paquets" \
TRUE "Conversion OGG en MP3" \
FALSE "Conversion MP3 en OGG" \
FALSE "Conversion MPC en Wav" \
FALSE "Conversion Wav en MP3" \
FALSE "Conversion Wav en OGG" \
FALSE "Conversion OGG en Wav" \
FALSE "Conversion Wma en MP3" );
if [ "${PIPESTATUS[0]}" != "0" ]; then
exit
fi
## Install
echo "$ACT" | grep "Installation des paquets" >/dev/null
if [ "$?" = 0 ] ; then
sudo apt-get install lame vorbis-tools mpg123 mplayer sox libsox-fmt-all
fi
## Conversion OGG en MP3
echo "$ACT" | grep "Conversion OGG en MP3" >/dev/null
if [ "$?" = 0 ] ; then
FICHIERS=`ls *.ogg | wc -l`
COMPTEUR=0
INCREMENT=$[100/$FICHIERS]
mkdir mp3;
(
for i in *.ogg;
do new_name=`echo "$i" | sed s/.ogg/.mp3/g`;
ogg123 -d wav -f - "$i" | lame -h - > mp3/"$new_name";
COMPTEUR=$[$COMPTEUR+$INCREMENT];
echo $COMPTEUR;
done
)|((
zenity --progress \
--title="Conversion"\
--text="Conversion de "$FICHIERS" fichiers"\
--auto-close\
--percentage=$COMPTEUR
)|(
if [ "$?" = -1 ] ; then
zenity --error \
--text="conversion annulée."
fi
))
fi
## Conversion MP3 en OGG
echo "$ACT" | grep "Conversion MP3 en OGG" >/dev/null
if [ "$?" = 0 ] ; then
FICHIERS=`ls *.mp3 | wc -l`
COMPTEUR=0
INCREMENT=$[100/$FICHIERS]
mkdir ogg;
(
for i in *.mp3;
do new_name=`echo "$i" | sed s/.mp3/.ogg/g`;
mpg123 -b 10000 -s "$i" | sox -t raw -r 44100 -s -w -c2 - ogg/temp.wav;
oggenc ogg/temp.wav -o ogg/"$new_name";
COMPTEUR=$[$COMPTEUR+$INCREMENT];
echo $COMPTEUR;
done
)|
zenity --progress \
--title="Conversion"\
--text="Conversion de "$FICHIERS" fichiers"\
--auto-close\
--percentage=$COMPTEUR;
rm -f ogg/temp.wav
fi
## Conversion MPC en Wav
echo "$ACT" | grep "Conversion MPC en Wav" >/dev/null
if [ "$?" = 0 ] ; then
FICHIERS=`ls *.mpc | wc -l`
COMPTEUR=0
INCREMENT=$[100/$FICHIERS]
mkdir wav;
(
for i in *.mpc;
do new_name=`echo "$i" | sed s/.mpc/.wav/g`;
mppdec-static "$i" wav/"$new_name";
COMPTEUR=$[$COMPTEUR+$INCREMENT];
echo $COMPTEUR;
done
)|
zenity --progress \
--title="Conversion"\
--text="Conversion de "$FICHIERS" fichiers"\
--auto-close\
--percentage=$COMPTEUR
fi
## Conversion Wav en MP3
echo "$ACT" | grep "Conversion Wav en MP3" >/dev/null
if [ "$?" = 0 ] ; then
FICHIERS=`ls *.wav | wc -l`
COMPTEUR=0
INCREMENT=$[100/$FICHIERS]
mkdir mp3;
(
for i in *.wav;
do new_name=`echo mp3/"$i" | sed s/.wav/.mp3/g`;
lame --abr 160 "$i" "$new_name";
COMPTEUR=$[$COMPTEUR+$INCREMENT];
echo $COMPTEUR;
done
)|
zenity --progress \
--title="Conversion"\
--text="Conversion de "$FICHIERS" fichiers"\
--auto-close\
--percentage=$COMPTEUR
fi
## Conversion Wav en OGG
echo "$ACT" | grep "Conversion Wav en OGG" >/dev/null
if [ "$?" = 0 ] ; then
FICHIERS=`ls *.wav | wc -l`
COMPTEUR=0
INCREMENT=$[100/$FICHIERS]
mkdir ogg;
(
for i in *.wav;
do new_name=`echo ogg/"$i" | sed s/.wav/.ogg/g`
oggenc -q 6 "$i" -o "$new_name";
COMPTEUR=$[$COMPTEUR+$INCREMENT];
echo $COMPTEUR;
done
)|
zenity --progress \
--title="Conversion"\
--text="Conversion de "$FICHIERS" fichiers"\
--auto-close\
--percentage=$COMPTEUR
fi
## Conversion OGG en Wav
echo "$ACT" | grep "Conversion OGG en Wav" >/dev/null
if [ "$?" = 0 ] ; then
FICHIERS=`ls *.ogg | wc -l`
COMPTEUR=0
INCREMENT=$[100/$FICHIERS]
mkdir wav;
(
for i in *.ogg;
do new_name=`echo "$i"| sed s/.ogg/.wav/g`;
sox "$i" wav/"$new_name";
COMPTEUR=$[$COMPTEUR+$INCREMENT];
echo $COMPTEUR;
done
)|
zenity --progress \
--title="Conversion"\
--text="Conversion de "$FICHIERS" fichiers"\
--auto-close\
--percentage=$COMPTEUR
fi
## Conversion WmA en MP3
echo "$ACT" | grep "Conversion Wma en MP3" >/dev/null
if [ "$?" = 0 ] ; then
FICHIERS=`ls *.wma | wc -l`
COMPTEUR=0
INCREMENT=$[100/$FICHIERS]
mkdir mp3;
(
for i in *.wma;
do mplayer -vo null -vc dummy -af resample=44100 -ao pcm:waveheader "$i" && lame -m j -h --vbr-new -b 192 audiodump.wav -o "`basename "$i" .wma`.mp3";
COMPTEUR=$[$COMPTEUR+$INCREMENT];
echo $COMPTEUR;
done
)|
zenity --progress \
--title="Conversion"\
--text="Conversion de "$FICHIERS" fichiers"\
--auto-close\
--percentage=$COMPTEUR;
rm -f audiodump.wav;
mv *.mp3 mp3/
fi
## FIN
zenity --info --title="Fin des opérations !" --text="Les opérations demandées sont terminées !"
On peut aussi mettre une variante dans /home/~/gnome2/nautilus-scripts/ :
#!/bin/bash
# conversion de fichiers audio
## Affichage de la liste des actions
ACT=$(zenity --list --radiolist --width=500 --height=447 \
--title "Sélectionner l'opérations à effectuer" \
--text="Veuillez sélectionnez l'opérations à effectuer :" \
--column="À faire ?" --column="Description" \
FALSE "Installation des paquets" \
TRUE "Conversion OGG en MP3" \
FALSE "Conversion MP3 en OGG" \
FALSE "Conversion MPC en Wav" \
FALSE "Conversion Wav en MP3" \
FALSE "Conversion Wav en OGG" \
FALSE "Conversion OGG en Wav" \
FALSE "Conversion Wma en MP3" );
if [ "${PIPESTATUS[0]}" != "0" ]; then
exit
fi
## Install
echo "$ACT" | grep "Installation des paquets" >/dev/null
if [ "$?" = 0 ] ; then
sudo apt-get install lame vorbis-tools mpg123 mplayer sox libsox-fmt-all
fi
## Conversion OGG en MP3
echo "$ACT" | grep "Conversion OGG en MP3" >/dev/null
if [ "$?" = 0 ] ; then
FICHIERS=`ls *.ogg | wc -l`
COMPTEUR=0
INCREMENT=$[100/$FICHIERS]
mkdir mp3;
(
for i in *.ogg;
do new_name=`echo "$i" | sed s/.ogg/.mp3/g`;
ogg123 -d wav -f - "$i" | lame -h - > mp3/"$new_name";
COMPTEUR=$[$COMPTEUR+$INCREMENT];
echo $COMPTEUR;
done
)|((
zenity --progress \
--title="Conversion"\
--text="Conversion de "$FICHIERS" fichiers"\
--auto-close\
--percentage=$COMPTEUR
)|(
if [ "$?" = -1 ] ; then
zenity --error \
--text="conversion annulée."
fi
))
fi
## Conversion MP3 en OGG
echo "$ACT" | grep "Conversion MP3 en OGG" >/dev/null
if [ "$?" = 0 ] ; then
FICHIERS=`ls *.mp3 | wc -l`
COMPTEUR=0
INCREMENT=$[100/$FICHIERS]
mkdir ogg;
(
for i in *.mp3;
do new_name=`echo "$i" | sed s/.mp3/.ogg/g`;
mpg123 -b 10000 -s "$i" | sox -t raw -r 44100 -s -w -c2 - ogg/temp.wav;
oggenc ogg/temp.wav -o ogg/"$new_name";
COMPTEUR=$[$COMPTEUR+$INCREMENT];
echo $COMPTEUR;
done
)|
zenity --progress \
--title="Conversion"\
--text="Conversion de "$FICHIERS" fichiers"\
--auto-close\
--percentage=$COMPTEUR;
rm -f ogg/temp.wav
fi
## Conversion MPC en Wav
echo "$ACT" | grep "Conversion MPC en Wav" >/dev/null
if [ "$?" = 0 ] ; then
FICHIERS=`ls *.mpc | wc -l`
COMPTEUR=0
INCREMENT=$[100/$FICHIERS]
mkdir wav;
(
for i in *.mpc;
do new_name=`echo "$i" | sed s/.mpc/.wav/g`;
mppdec-static "$i" wav/"$new_name";
COMPTEUR=$[$COMPTEUR+$INCREMENT];
echo $COMPTEUR;
done
)|
zenity --progress \
--title="Conversion"\
--text="Conversion de "$FICHIERS" fichiers"\
--auto-close\
--percentage=$COMPTEUR
fi
## Conversion Wav en MP3
echo "$ACT" | grep "Conversion Wav en MP3" >/dev/null
if [ "$?" = 0 ] ; then
FICHIERS=`ls *.wav | wc -l`
COMPTEUR=0
INCREMENT=$[100/$FICHIERS]
mkdir mp3;
(
for i in *.wav;
do new_name=`echo mp3/"$i" | sed s/.wav/.mp3/g`;
lame --abr 160 "$i" "$new_name";
COMPTEUR=$[$COMPTEUR+$INCREMENT];
echo $COMPTEUR;
done
)|
zenity --progress \
--title="Conversion"\
--text="Conversion de "$FICHIERS" fichiers"\
--auto-close\
--percentage=$COMPTEUR
fi
## Conversion Wav en OGG
echo "$ACT" | grep "Conversion Wav en OGG" >/dev/null
if [ "$?" = 0 ] ; then
FICHIERS=`ls *.wav | wc -l`
COMPTEUR=0
INCREMENT=$[100/$FICHIERS]
mkdir ogg;
(
for i in *.wav;
do new_name=`echo ogg/"$i" | sed s/.wav/.ogg/g`
oggenc -q 6 "$i" -o "$new_name";
COMPTEUR=$[$COMPTEUR+$INCREMENT];
echo $COMPTEUR;
done
)|
zenity --progress \
--title="Conversion"\
--text="Conversion de "$FICHIERS" fichiers"\
--auto-close\
--percentage=$COMPTEUR
fi
## Conversion OGG en Wav
echo "$ACT" | grep "Conversion OGG en Wav" >/dev/null
if [ "$?" = 0 ] ; then
FICHIERS=`ls *.ogg | wc -l`
COMPTEUR=0
INCREMENT=$[100/$FICHIERS]
mkdir wav;
(
for i in *.ogg;
do new_name=`echo "$i"| sed s/.ogg/.wav/g`;
sox "$i" wav/"$new_name";
COMPTEUR=$[$COMPTEUR+$INCREMENT];
echo $COMPTEUR;
done
)|
zenity --progress \
--title="Conversion"\
--text="Conversion de "$FICHIERS" fichiers"\
--auto-close\
--percentage=$COMPTEUR
fi
## Conversion WmA en MP3
echo "$ACT" | grep "Conversion Wma en MP3" >/dev/null
if [ "$?" = 0 ] ; then
FICHIERS=`ls *.wma | wc -l`
COMPTEUR=0
INCREMENT=$[100/$FICHIERS]
mkdir mp3;
(
for i in *.wma;
do mplayer -vo null -vc dummy -af resample=44100 -ao pcm:waveheader "$i" && lame -m j -h --vbr-new -b 192 audiodump.wav -o "`basename "$i" .wma`.mp3";
COMPTEUR=$[$COMPTEUR+$INCREMENT];
echo $COMPTEUR;
done
)|
zenity --progress \
--title="Conversion"\
--text="Conversion de "$FICHIERS" fichiers"\
--auto-close\
--percentage=$COMPTEUR;
rm -f audiodump.wav;
mv *.mp3 mp3/
fi
## FIN
zenity --info --title="Fin des opérations !" --text="Les opérations demandées sont terminées !"
Je rencontre deux "problémes"...
- Le premier c'est que lorsque je clique sur annuler dans ma boite de dialogue "progression", cela ferme la boite de dialogue mais la conversion du fichier en cours ne s'arrête pas.
- Le second c'est que mon fichier convertis n'est plus taggué...
Ma musique ici => https://nicolas-merle.bandcamp.com/
Hors ligne
#10 Le 10/06/2008, à 11:28
- soupaloignon
Re : Création d'un script pour la conversion audio
Sympa ton script. Tu as prévu de gérer le format FLAC aussi ?
==> Libérez les huitres du bassin d'Arcachon <==
Hors ligne
#11 Le 10/06/2008, à 17:12
- Ghost33
Re : Création d'un script pour la conversion audio
Merci, le FLAC je ne sais pas, je n'ai jamais utilisé ce format...
Ma musique ici => https://nicolas-merle.bandcamp.com/
Hors ligne
#12 Le 12/06/2008, à 22:58
- soupaloignon
Re : Création d'un script pour la conversion audio
Un très bon format de compression audio sans perte
http://fr.wikipedia.org/wiki/Free_Lossless_Audio_Codec
==> Libérez les huitres du bassin d'Arcachon <==
Hors ligne