#1 Le 12/09/2008, à 17:00
- Se6
Script Nautilus pour convertir/transcoder en mp3...
Bonjour,
Voici un petit script pour convertir des fichiers audio (tout format pris en charge par gstreamer) en mp3 au debit de son choix.
A mettre dans ~/.gnome2/nautilus-scripts/Convertir en mp3 (et en executable..)
Apres il vous suffit dans Nautilus de selectionner les fichiers a convertir et click droit (script/Convertir en mp3)
Il n'y a pas besoin de se trouver "dans" le repertoire ou les fichiers sont.. on peut les selectionner n'importe ou.
#!/bin/bash
# dependances: zenity gstreamer-tools
LOC=$(zenity --file-selection --directory --title="Selectionner un repertoire") || exit
RATE=$(zenity --list --radiolist \
--height=400 \
--text="debit en kb/s" --title="Selection du debit mp3" \
--column="Selection" --column="Debit" \
FALSE 32 FALSE 48 FALSE 56 FALSE 64 FALSE 80 FALSE 96 FALSE 112 TRUE 128 FALSE 160 FALSE 192 FALSE 224 FALSE 256 FALSE 320 \
) || exit
IFS=$'\n'
for FILENAME in $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS
do
TARGET="$(basename $FILENAME)"
TARGET=${TARGET%.*}.mp3
if [ -e "$LOC"/"$TARGET" ]
then
zenity --error --text="Echec: $LOC"/"$TARGET existe deja."
else
{ gst-launch filesrc location="$FILENAME" ! decodebin ! audioconvert ! lame bitrate=$RATE ! filesink location="$LOC"/"$TARGET"; \
echo Termine. ; } \
| zenity --text-info --title "MP3 conversion output" --width=500 --height=500
fi
done
Edit:
Ci-dessous, version amelioree prenant en charge les sous-repertoires et les tags ID3... Lire les commentaires dans l'entete pour voir les dependances...
#!/bin/bash
#
# dependancies:
# zenity
# gstreamer0.10-plugins-ugly-multiverse
# gstreamer-tools
# the deb at http://home.wanadoo.nl/squell/id3.html for and id3 command line tool.
#
# Usage: To use in Nautilus
# You select files and directorie in Nautilus, then you right click, script/Convert to mp3...
# A first dialog will ask you where to put the converted files
# A second one will let you select the bit rate
# Then a progression bar will appear.
# A log file ~/mp3-convert.log will be created.
#
LOGFILE=~/mp3-convert.log
LOC=$(zenity --file-selection --directory --title="Directory to receive the converted audio") || exit
RATE=$(zenity --list --radiolist \
--height=400 \
--text="bitrate in kb/s" --title="Select mp3 bit rate" \
--column="Select" --column="Bit rate" \
FALSE 32 FALSE 48 FALSE 56 FALSE 64 FALSE 80 FALSE 96 FALSE 112 TRUE 128 FALSE 160 FALSE 192 FALSE 224 FALSE 256 FALSE 320 \
) || exit
(
IFS=$'\n'
TOTAL=0
NB=0
# Checking how many files there are to process
for SELECTED in $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS
do
if [ -f "$SELECTED" ]
then
let TOTAL+=1
elif [ -d "$SELECTED" ]
then
for FILENAME in $(find "$SELECTED" -type f -printf "%p\n")
do
let TOTAL+=1
done
fi
done
function audio-convert
{
echo -e "#Processing $(basename $1)"
echo "$1 -> $2"
gst-launch filesrc location="$1" ! decodebin ! audioconvert ! lame bitrate=$RATE ! filesink location="$2" 2>&1
id3 -D "$1" -1 -2 "$2" 2>&1
}
function show_progress
{
let NB+=97/TOTAL
echo $NB
}
for SELECTED in $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS
do
echo 1
if [ -f "$SELECTED" ]
then
TARGET="$(basename $SELECTED)"
TARGET=${TARGET%.*}.mp3
if [ -e "$LOC/$TARGET" ]
then
echo -e "\nWarning: $LOC/$TARGET already exist, did not overwrite it." >$LOGFILE
else
audio-convert "$SELECTED" "$LOC/$TARGET"
fi
show_progress
elif [ -d "$SELECTED" ]
then
TARGET_DIR="$LOC/${SELECTED##*/}"
if [ ! -d "$TARGET_DIR" ]
then
mkdir -p "$TARGET_DIR"
fi
for FILENAME in $(find "$SELECTED" -type f -printf "%p\n")
do
THEDIR=${FILENAME%/*}
THEDIR=${THEDIR:${#SELECTED}}
THEDIR="$TARGET_DIR$THEDIR"
if [ ! -d "$THEDIR" ]
then
mkdir -p "$THEDIR"
fi
TARGET="$(basename $FILENAME)"
TARGET=${TARGET%.*}.mp3
if [ -e "$THEDIR/$TARGET" ]
then
echo -e "\nWarning: $THEDIR/$TARGET already exist, did not overwrite it." >$LOGFILE
else
audio-convert "$FILENAME" "$THEDIR/$TARGET"
if [ ! -s "$THEDIR/$TARGET" ]
then
echo "It probably was not audio, copying instead."
rm "$THEDIR/$TARGET"
cp -a -- "$FILENAME" "$THEDIR/$(basename $FILENAME)"
fi
fi
show_progress
done
fi
done
echo 100
) | tee $LOGFILE | zenity --progress --auto-close
zenity --text-info --title='Conversion log' --filename=$LOGFILE
Dernière modification par Se6 (Le 29/10/2008, à 21:24)
Hors ligne
#2 Le 12/09/2008, à 19:41
- Stemp
Re : Script Nautilus pour convertir/transcoder en mp3...
Si je me souviens bien il y a un paquet nautilus-script-audio-convert qui doit faire ce genre de chose.
«La violence n'a jamais rien réglé» Gengis Khan 1162-1227
Blog | Crunchbang Linux | Arch Linux
Hors ligne
#3 Le 12/09/2008, à 20:54
- Se6
Re : Script Nautilus pour convertir/transcoder en mp3...
Ah merci pour l'info, je ne savais pas.
Je viens de l'essayer. Ca ne prends pas en charge le transcodage pour changer le debit mais garder le meme codec. Et comme beaucoup de scripts pour Nautilus, il faut etre dans le repertoire pour qu'il fonctionne.
Seb.
Hors ligne
#4 Le 12/09/2008, à 20:59
- Stemp
Re : Script Nautilus pour convertir/transcoder en mp3...
Puisque tu t'y connais ça serait sympa de l'améliorer non ?
Enfin je dis ça mais je n'y connais rien, donc si c'est possible ça serait cool
«La violence n'a jamais rien réglé» Gengis Khan 1162-1227
Blog | Crunchbang Linux | Arch Linux
Hors ligne
#5 Le 12/09/2008, à 21:50
- ET01
Re : Script Nautilus pour convertir/transcoder en mp3...
Bonjour,
euh... question bête j'en conviens. Je n'arrive pas à faire un chmod +x sur le fichier "Convertir en mp3" ni utiliser click droit/propriétés. Pourquoi ?
Hors ligne
#6 Le 12/09/2008, à 22:14
- Se6
Re : Script Nautilus pour convertir/transcoder en mp3...
Puisque tu t'y connais ça serait sympa de l'améliorer non ?
Oui c'est sur. Mais ca fait 1200 lignes.
euh... question bête j'en conviens. Je n'arrive pas à faire un chmod +x sur le fichier "Convertir en mp3" ni utiliser click droit/propriétés. Pourquoi ?
C'est bizarre. Comment l'as-tu cree ce fichier ?
Hors ligne
#7 Le 12/09/2008, à 22:37
- ET01
Re : Script Nautilus pour convertir/transcoder en mp3...
J'ai créé un fichier .txt et j'ai copié coller
Hors ligne
#8 Le 13/09/2008, à 14:39
- bargeot599
Re : Script Nautilus pour convertir/transcoder en mp3...
Salut,
chez moi ça marche pas...impossible de séléctionner un fichier quand la fenêtre s'ouvre...c'est comme si les fichiers étaient vérouillés..
#9 Le 13/09/2008, à 15:52
- Se6
Re : Script Nautilus pour convertir/transcoder en mp3...
J'ai créé un fichier .txt et j'ai copié coller
Aucune idee pourquoi tu n'arrives pas a le rendre executable!
chez moi ça marche pas...impossible de séléctionner un fichier quand la fenêtre s'ouvre...c'est comme si les fichiers étaient vérouillés..
C'est normal. La premiere fenetre qui s'ouvre c'est pour selectioner un repertoire ou les fichiers transcodes iront. On ne peut pas choisir un fichier, simplement un repertoire. C'est vrai que le message devrait etre plus clair.
Seb.
Dernière modification par Se6 (Le 13/09/2008, à 15:52)
Hors ligne
#10 Le 13/09/2008, à 16:49
- Ras'
Re : Script Nautilus pour convertir/transcoder en mp3...
Ah pas mal j'allais demander à quelqu'un de me faire un truc dans le genre (oui j'ai gravement la flemme et pas le temps ^^)
Est ce que ton script marche avec des arborescence de fichiers ?
Par exemple si j'ai un truc genre :
~/Musique
| Artiste A
| | Album 1
| | Album 2
|Artiste B
| | Double album
| | | CD1
| | | CD2
Et que j'applique le script sur un dossier parent ça va marcher ?
Et d'ailleurs est ce que gstreamer converti en partant du flac ?
Merci bien
Va t'faire shampouiner par le compteur_V2 en timezone[Canada/Eastern] !
Les types awesome n'ont rien à prouver. À personne.
'k bye là
Hors ligne
#11 Le 13/09/2008, à 18:36
- bargeot599
Re : Script Nautilus pour convertir/transcoder en mp3...
J'ai créé un fichier .txt et j'ai copié coller
Aucune idee pourquoi tu n'arrives pas a le rendre executable!
chez moi ça marche pas...impossible de séléctionner un fichier quand la fenêtre s'ouvre...c'est comme si les fichiers étaient vérouillés..
C'est normal. La premiere fenetre qui s'ouvre c'est pour selectioner un repertoire ou les fichiers transcodes iront. On ne peut pas choisir un fichier, simplement un repertoire. C'est vrai que le message devrait etre plus clair.
Seb.
Tain..je suis un boulet ou quoi loool ??? ça veut toujours pas marcher..pourtant j'ai bien vérifié si j'avais les paquets zenity et gstreamer-tools (j'avais pas le second, je l'ai installé mais ça a rien changé..)..à la fin j'ai une fenêtre terminé qui s'affiche mais y'a pas de fichier converti quelque soit le répertoire...
#12 Le 13/09/2008, à 19:23
- Ras'
Re : Script Nautilus pour convertir/transcoder en mp3...
fais :
bash -x nomduscript > log
après tu poste le contenu du fichier "log" (cat log pour afficher et si c'est trop long : gedit log)
Comme ça on verra d'ou vient le problème
Va t'faire shampouiner par le compteur_V2 en timezone[Canada/Eastern] !
Les types awesome n'ont rien à prouver. À personne.
'k bye là
Hors ligne
#13 Le 13/09/2008, à 19:40
- Se6
Re : Script Nautilus pour convertir/transcoder en mp3...
Apres avoir essaye le script dans Nautilus, tu fais
tail ~/.xsession-errors
pour voir quelles sont les erreurs.
Et que j'applique le script sur un dossier parent ça va marcher ?
Non. Comme il est, il faut selectionner tous les fichiers que l'on veut convertir.
Et d'ailleurs est ce que gstreamer converti en partant du flac ?
Oui.
Seb.
Hors ligne
#14 Le 13/09/2008, à 20:03
- ET01
Re : Script Nautilus pour convertir/transcoder en mp3...
Bonjour,
Pour moi, c'est comme pour bargeot599. Le "tail ~/.xsession-errors" montre qu'il ne reconnait pas la commande "gst-launch". Je viens d'installer le paquet gstreamer-tools. Cela ne marche toujours pas !
Hors ligne
#15 Le 13/09/2008, à 20:46
- Ras'
Re : Script Nautilus pour convertir/transcoder en mp3...
Alors voila une bonne idée d'évolution
Genre un exemple concret, je refais toute mon audiothèque en flac mais mon lecteur mp3 reste un lecteur mp3, au mieux si j'en change ce sera un ogg, donc ce serait bien de pouvoir copier / convertir à la volée grâce à ton script Et ce sans avoir à recréer l'arborescence à la mano...
Dis moi si ça t'interesse sinon je proposerais ça dans "Vos scripts utile", ça peut interesser un codeur amateur pour se faire un peu les pieds dessus ^^
Va t'faire shampouiner par le compteur_V2 en timezone[Canada/Eastern] !
Les types awesome n'ont rien à prouver. À personne.
'k bye là
Hors ligne
#16 Le 13/09/2008, à 21:44
- ET01
Re : Script Nautilus pour convertir/transcoder en mp3...
Bon c'est OK. Je n'ai pas l'impression d'avoir fait quelque chose de spécial, mais cela marche pour moi à présent.
Hors ligne
#17 Le 13/09/2008, à 22:01
- Se6
Re : Script Nautilus pour convertir/transcoder en mp3...
Alors voila une bonne idée d'évolution
L'idee etait de partager un script effectuant une tache precise.Faire un script generique qui reponde a tous les besoins serait futile.
Par contre ecrire un petit script pour effectuer la tache que tu decris n'est pas difficile. Tu copies d'abord toute l'arborescence; tu fais un find sur tous les fichiers flac et tu execute dessus la conversion, etc... Ca vaut vraiment la peine de prendre le temps d'apprendre bash.
Seb.
Hors ligne
#18 Le 14/09/2008, à 09:25
- Ras'
Re : Script Nautilus pour convertir/transcoder en mp3...
Je connais bash ( waw le mec qui se la joue matrix )
Non sérieux je pourrais programmer ça mais pas le temps et la flemme, donc si ça t'interesse t'aurais pu le faire, ensuite je trouve pas ça futile, je pense qu'un script comme ça est d'autant plus utile si il peut convertir des arborescence, des albums entiers qu'on n'a qu'en flac ou wma... alors que si on doit choisir les fichiers un par un c'est un peu plus lourd... enfin je suis peut être le seul à penser ça mais bon...
enfin je veux dire ça en fais pas un "générique qui répond à tous les besoins" qui imprime le journal et va chercher les pantoufle, juste un script qui converti en mp3 complet
Dernière modification par Ras' (Le 14/09/2008, à 09:28)
Va t'faire shampouiner par le compteur_V2 en timezone[Canada/Eastern] !
Les types awesome n'ont rien à prouver. À personne.
'k bye là
Hors ligne
#19 Le 14/09/2008, à 10:05
- Se6
Re : Script Nautilus pour convertir/transcoder en mp3...
Quand je disais "futile" c'etait simplement pour dire que il ne me parrait pas une bonne idee d'essayer de couvrir toutes les options possibles avec ce genre de script. L'interet d'un tel script est d'automatiser une certaine tache precise (ici c'etait qu'apres avoir selectionner un certain nombre de fichiers, de les transcoder a la volee en mp3 et de les mettre dans un autre repertoire, mon lecteur mp3 en fait). On pourrait ajouter une selection du codec a utiliser, ajouter des options d'encodage, etc... etc.. Ceci dit, oui, je vois l'interet de pouvoir selectionner un repertoire... je regarderai.
Seb.
Hors ligne
#20 Le 14/09/2008, à 11:01
- Ras'
Re : Script Nautilus pour convertir/transcoder en mp3...
Ah oui non pour l'encodage ogg, les bitrates etc ça reste de la bidouille, celui qui veut changer ça n'a qu'une ligne à changer à la imite
Mais garder l'arborescence c'est interessant pour ceux qui ont un lecteur mp3 à DD ou du moins plus gros qu'une clé-usb-mp3 et qui donc veulent garder l'arborescence artiste / album
Cool que tu regarde ça
Va t'faire shampouiner par le compteur_V2 en timezone[Canada/Eastern] !
Les types awesome n'ont rien à prouver. À personne.
'k bye là
Hors ligne
#21 Le 14/09/2008, à 11:34
- Se6
Re : Script Nautilus pour convertir/transcoder en mp3...
Ce n'est pas un ajout trivial la prise en charge d'arborescences!
En tout cas, dans le scritpt original il vaut mieux enveler la fenetre qui s'ouvre pour chaque fichier. Le script devient alors:
#!/bin/bash
# dependances: zenity gstreamer-tools
LOC=$(zenity --file-selection --directory --title="Selectionnez un repertoire cible") || exit
RATE=$(zenity --list --radiolist \
--height=400 \
--text="debit en kb/s" --title="Selection du debit mp3" \
--column="Selection" --column="Debit" \
FALSE 32 FALSE 48 FALSE 56 FALSE 64 FALSE 80 FALSE 96 FALSE 112 TRUE 128 FALSE 160 FALSE 192 FALSE 224 FALSE 256 FALSE 320 \
) || exit
IFS=$'\n'
for FILENAME in $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS
do
TARGET="$(basename $FILENAME)"
TARGET=${TARGET%.*}.mp3
if [ -e "$LOC"/"$TARGET" ]
then
zenity --error --text="Echec: $LOC"/"$TARGET existe deja."
else
gst-launch filesrc location="$FILENAME" ! decodebin ! audioconvert ! lame bitrate=$RATE ! filesink location="$LOC"/"$TARGET"
fi
done
Hors ligne
#22 Le 14/09/2008, à 19:08
- bargeot599
Re : Script Nautilus pour convertir/transcoder en mp3...
Bonjour et merci de m'aider..
ta commande Se6 me renvoie ça :
(zenity:5825): Gtk-WARNING **: Impossible de trouver le moteur de thème dans module_path : « aurora »
AVERTISSEMENT : pipeline erroné : pas d'élément « lame »
(gnome-terminal:5828): Gtk-WARNING **: Impossible de trouver le moteur de thème dans module_path : « aurora »
(gnome-terminal:5828): Gtk-WARNING **: Impossible de trouver le moteur de thème dans module_path : « aurora »
(gnome-terminal:5828): Gtk-WARNING **: Impossible de trouver le moteur de thème dans module_path : « aurora »
(gnome-terminal:5828): Gtk-WARNING **: Impossible de trouver le moteur de thème dans module_path : « aurora »
Par contre Ras', il ne trouve pas le script avec ta commande...ai-je fais une erreur ?
#23 Le 14/09/2008, à 20:20
- Ras'
Re : Script Nautilus pour convertir/transcoder en mp3...
Euh non c'est moi qui en ai fait une, enfin deux même...
D'abord il faut faire
cd /nom/du/répertoire pour aller dans le dossier ou y'a le script et après c'est pas
bash -x nomduscript > log
mais
bash -x nomduscript /fichier/en/argument &> log
Mais peut être que tu va trouver la même chose que sur xsession-errors... je sais pas trop...
Va t'faire shampouiner par le compteur_V2 en timezone[Canada/Eastern] !
Les types awesome n'ont rien à prouver. À personne.
'k bye là
Hors ligne
#24 Le 14/09/2008, à 21:35
- Se6
Re : Script Nautilus pour convertir/transcoder en mp3...
pipeline erroné : pas d'élément « lame »
Ok, il te manque les plugins gstreamer ad hoc (gstreamer-0.01-plugins-bad ou gstreamer-0.01-plugins-ugly, je ne sais plus trop). Le plus facile est sans doute d'installer ubuntu-restricted-extras qui installera tout ce qu'il faut.
Seb.
Hors ligne
#25 Le 15/09/2008, à 09:55
- bargeot5999
Re : Script Nautilus pour convertir/transcoder en mp3...
ça marche merci beaucoup ^^
Ras' ta commande créer bien le log mais à l'intérieur ça marque comme dans le terminal "convertir en mp3 : aucun fichier de ce type"
Hors ligne