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


«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 smile


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

Se6 a écrit :

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 wink


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 smile

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 wink 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 lol )
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 wink

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

Cool que tu regarde ça smile


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