#51 Le 02/04/2009, à 07:29
- Se6
Re : Script Nautilus pour convertir/transcoder en mp3...
Salut,
Plus precisement, le code est:
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
L'idee etant que si ce n'est pas de l'audio, le resultat de la conversion sera un fichier de taille 0. Donc il va le retirer et copier le fichier source qui n'est pas de l'audio.
Ca marche bien chez moi avec des fichiers txt, jpg etc...
Seb.
Hors ligne
#52 Le 02/04/2009, à 07:47
- Ras'
Re : Script Nautilus pour convertir/transcoder en mp3...
ah tiens oui j'avais lu en diagonale (il est tôt)
Ben en tout cas chez moi ça marche pas... Je vais étudier ça
EDIT :
Voilà une session de test.
Dans mon dossier ~/Musique j'ai mis un dossier test contenant une chanson en flac et une image et un dossier trest/test contenant la même chanson et la même image (on s'en fout c'est pour des tests)
Au final :
_les chansons sont bien converties.
_la photo qui était dans le dossier test est bien convertie
_la photo qui était dans le dossier trest/test à été renommée en mp3 est n'est plus lisible (même après renommage en jpg)
Celà dit, si je ne transcode que le dossier trest/test, alors la photo est correctement copiée.
Conclusion : ce bug ne concerne que les transcodage de multiples dossiers, lorsque ceux ci ont une arborescence (ce qui est toujours le cas chez moi :\)
Dernière modification par Ras' (Le 02/04/2009, à 08:01)
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
#53 Le 02/04/2009, à 10:42
- Se6
Re : Script Nautilus pour convertir/transcoder en mp3...
Je viens d'essayer avec des sous-repertoires, et ca marche chez moi.
Seb.
Voici la derniere version du script que j'ai:
#!/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
CODER=$(zenity --list --radiolist \
--height=400 \
--text="Audio coders avaible" --title="Select one:" \
--column="" --column="" \
TRUE mp3 FALSE flac \
) || exit
if [[ $CODER == mp3 ]]
then
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
fi
(
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"
if [[ $CODER == mp3 ]]
then
gst-launch filesrc location="$1" ! decodebin ! audioconvert ! lame bitrate=$RATE ! filesink location="$2" 2>&1
elif [[ $CODER == flac ]]
then
gst-launch filesrc location="$1" ! decodebin ! audioconvert ! flacenc quality=8 ! filesink location="$2" 2>&1
fi
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)"
if [[ $CODER == mp3 ]]
then
TARGET=${TARGET%.*}.mp3
elif [[ $CODER == flac ]]
then
TARGET=${TARGET%.*}.flac
fi
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)"
if [[ $CODER == mp3 ]]
then
TARGET=${TARGET%.*}.mp3
elif [[ $CODER == flac ]]
then
TARGET=${TARGET%.*}.flac
fi
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
Hors ligne
#54 Le 02/04/2009, à 12:19
- Ras'
Re : Script Nautilus pour convertir/transcoder en mp3...
J'ai compris ^^
En fait j'utilise un script modifié, qui, entre autre, transfert les idtags sur le fichier converti.
Sauf que je ne supprimais pas les variables liées aux idtags une fois la chanson convertie et retaggée, du coup quand venait le moment de la jaquette, les tags de la dernière chanson convertie étaient enregistrés dedans... et le fichier faisais alors une petite centaine de ko...
Donc la solution c'est d'effacer les variables liés aux idtags après la conversion dans mon script (unset variable)
J'ai modifié mon post pour mettre le script correct, qui fonctionne apparement :
http://forum.ubuntu-fr.org/viewtopic.php?pid=2232095#p2232095
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
#55 Le 04/04/2009, à 15:42
- H4nnibal
Re : Script Nautilus pour convertir/transcoder en mp3...
Salut,
Vraiment bien comme idée de script, c'est exactement ce qu'il me faut.
Par contre, ça marche pas chez moi.
J'ai cette erreur quand je lance la conversion :
AVERTISSEMENT : pipeline erroné : pas d'élément « lame »
Je suis sous debian lenny, donc, pas de gstreamer0.10-plugins-ugly-multiverse.
J'ai installé les plugins bad, ugly, ffmpeg, base et good et J'ai essayé d'installer la dernière version de lame (compilation la version du site de l'auteur), ça corrige pas le problème.
J'ai bien installé le paquet gstreamer-tools.
Vous pouvez m'aider ? je sais pas trop quoi faire là
Dernière modification par H4nnibal (Le 05/04/2009, à 10:14)
/* No comment*/
Hors ligne
#56 Le 03/07/2009, à 11:12
- Feral
Re : Script Nautilus pour convertir/transcoder en mp3...
Juste merci,
C'est un assez lent (manque de puissance peut-etre...) comme conversion mais ca marche tres bien chez moi!
Hors ligne
#57 Le 25/08/2009, à 07:42
- Ras'
Re : Script Nautilus pour convertir/transcoder en mp3...
Salut,
Vraiment bien comme idée de script, c'est exactement ce qu'il me faut.
Par contre, ça marche pas chez moi.
J'ai cette erreur quand je lance la conversion :AVERTISSEMENT : pipeline erroné : pas d'élément « lame »
Je suis sous debian lenny, donc, pas de gstreamer0.10-plugins-ugly-multiverse.
J'ai installé les plugins bad, ugly, ffmpeg, base et good et J'ai essayé d'installer la dernière version de lame (compilation la version du site de l'auteur), ça corrige pas le problème.
J'ai bien installé le paquet gstreamer-tools.Vous pouvez m'aider ? je sais pas trop quoi faire là
Exactement pareil depuis ma conversion :\
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
#58 Le 03/09/2009, à 06:00
- Ras'
Re : Script Nautilus pour convertir/transcoder en mp3...
Up ?
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
#59 Le 16/09/2009, à 15:03
- Se6
Re : Script Nautilus pour convertir/transcoder en mp3...
Desole les gars, j'utilise toujours ce script sous Ubuntu sans probleme.
Manifestement sous Lenny, gstreamer ne connait pas l'element lame. Vous avez installe le paquet gstreamer0.10-lame ?
Je n'ai jamais utilise Debian, je ne peux pas vraiment vous aider plus.
Seb.
Dernière modification par Se6 (Le 18/10/2009, à 11:46)
Hors ligne
#60 Le 17/10/2009, à 18:33
- Ras'
Re : Script Nautilus pour convertir/transcoder en mp3...
Yes, c'était ça
Nickel, même si je vais repasser sous Ubuntu d'ici peu ça me sauve la vie pour le moment
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
#61 Le 06/01/2010, à 18:13
- arnaud_d
Re : Script Nautilus pour convertir/transcoder en mp3...
Bonjour,
Je trouve ce script très utile, par contre ce qui m'intéresse c'est de passer de OGG à MP3 en gardant les tags. id3 ne lit pas les tags Vorbis, je suis en train d'essayer de proposer une solution en utilisant vorbiscomment mais je ne suis pas trop un pro en shell. En effet, je ne vois pas d'autre solution que d'utiliser vorbiscomment pour récuperer les tags (là où je galère c'est sur l'analyse/regex sur la sortie de cette commande...
Hors ligne
#62 Le 06/01/2010, à 19:07
- Ras'
Re : Script Nautilus pour convertir/transcoder en mp3...
Personnellement, le script que j'utilise (donc avec id3) copie bien les script au moment de l'encodage en mp3, je viens de tester à l'instant sur un fichier ogg et sur un fichier flac et je n'ai eu aucun problème pour les deux.
Après ça dépend peut être de la version des tags... je sais pas avec quoi je peux regarder ça et j'ai un tout petit peu la flemme de chercher...
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
#63 Le 06/01/2010, à 21:23
- Se6
Re : Script Nautilus pour convertir/transcoder en mp3...
Ca ne marche pas non plus chez moi. Ca marche pour toi Ras car ta version du script est differente et tu lis explicitement les tags ogg et flac...
Arnaud, regarde le script de Ras...
Seb.
Hors ligne
#64 Le 06/01/2010, à 21:40
- Se6
Re : Script Nautilus pour convertir/transcoder en mp3...
Voici une version incluant les modifs de Ras et qui semble marcher:
#!/bin/bash
#!/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
CODER=$(zenity --list --radiolist \
--height=400 \
--text="Audio coders avaible" --title="Select one:" \
--column="" --column="" \
TRUE mp3 FALSE flac FALSE wav\
) || exit
if [[ $CODER == mp3 ]]
then
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
fi
(
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 is_ogg
{
file -b "$1" | grep 'Vorbis' || echo $1 | grep -i '\.ogg$'
}
function is_flac
{
file -b "$1" | grep 'FLAC' || echo $1 | grep -i '\.flac$'
}
function get_metatags
{
if (is_ogg "$1")
then
artist_name=`ogginfo "$1" | grep ARTIST | cut -d \= -f 2`
album_name=`ogginfo "$1" | grep ALBUM | cut -d \= -f 2`
song_name=`ogginfo "$1" | grep TITLE | cut -d \= -f 2`
track_number=`ogginfo "$1" | grep TRACKNUMBER | cut -d \= -f 2`
fi
if (is_flac "$1")
then
artist_name=`metaflac --show-tag=artist "$1" | cut -d \= -f 2`
album_name=`metaflac --show-tag=album "$1" | cut -d \= -f 2`
song_name=`metaflac --show-tag=title "$1" | cut -d \= -f 2`
track_number=`metaflac --show-tag=tracknumber "$1" | cut -d \= -f 2`
fi
}
function write_tags
{
if [ "$artist_name" ]
then
id3 -a "$artist_name" $1
unset artist_name
fi
if [ "$album_name" ]
then
id3 -A "$album_name" $1
unset album_name
fi
if [ "$song_name" ]
then
id3 -t "$song_name" $1
unset song_name
fi
if [ "$track_number" ]
then
id3 -T "$track_number" $1
unset track_number
fi
}
function audio-convert
{
echo -e "#Processing $(basename $1)"
echo "$1 -> $2"
if [[ $CODER == mp3 ]]
then
gst-launch filesrc location="$1" ! decodebin ! audioconvert ! lame bitrate=$RATE ! filesink location="$2" 2>&1
elif [[ $CODER == flac ]]
then
gst-launch filesrc location="$1" ! decodebin ! audioconvert ! flacenc quality=8 ! filesink location="$2" 2>&1
elif [[ $CODER == wav ]]
then
gst-launch filesrc location="$1" ! decodebin ! audioconvert ! wavenc ! filesink location="$2" 2>&1
fi
if (is_ogg "$1") || (is_flac "$1")
then
get_metatags $1
write_tags $2
else
id3 -D "$1" -1 -2 "$2" 2>&1
fi
# autre possibilite a essayer:
# gst-launch filesrc location="$1" ! id3demux ! id3mux ! filesink location="$2"
}
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)"
if [[ $CODER == mp3 ]]
then
TARGET=${TARGET%.*}.mp3
elif [[ $CODER == flac ]]
then
TARGET=${TARGET%.*}.flac
elif [[ $CODER == wav ]]
then
TARGET=${TARGET%.*}.wav
fi
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)"
if [[ $CODER == mp3 ]]
then
TARGET=${TARGET%.*}.mp3
elif [[ $CODER == flac ]]
then
TARGET=${TARGET%.*}.flac
elif [[ $CODER == wav ]]
then
TARGET=${TARGET%.*}.wav
fi
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 06/01/2010, à 21:47)
Hors ligne
#65 Le 07/01/2010, à 06:49
- Ras'
Re : Script Nautilus pour convertir/transcoder en mp3...
Ah oui j'utilise ma version, ça me paraissait évident c'est pour ça que je ne l'ai pas mentionné ^^
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
#66 Le 07/01/2010, à 09:11
- Compte anonymisé
Re : Script Nautilus pour convertir/transcoder en mp3...
C'est vachement utile mais ça marche pas chez moi .
1
#Processing 06 - *******.ogg
/home/toto/Bureau/*********/06 -**********.ogg -> /home/toto/Bureau/********/06 - ********.mp3
/home/toto/.gnome2/nautilus-scripts/Convertir en mp3: line 52: gst-launch : commande introuvable
/home/toto/.gnome2/nautilus-scripts/Convertir en mp3: line 53: id3 : commande introuvable
97
100
Avec les modifs de Raf j'ai ça
home/toto/.gnome2/nautilus-scripts/Convertir en mp3: line 120: gst-launch : commande introuvable
Ogg data, Vorbis audio, stereo, 44100 Hz, ~160000 bps, created by: Xiph.Org libVorbis I
Ogg data, Vorbis audio, stereo, 44100 Hz, ~160000 bps, created by: Xiph.Org libVorbis I
97
100
Et avec le tout premier script j'ai le droit à un
Termine.
seulement...
Dernière modification par titou345 (Le 07/01/2010, à 09:15)
#67 Le 07/01/2010, à 10:16
- Se6
Re : Script Nautilus pour convertir/transcoder en mp3...
Titou,
Lis l'entete du fichier...
===
# 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.
===
Il faut donc que tu installes d'abord tout ca....
Seb.
Hors ligne
#68 Le 07/01/2010, à 15:49
- Compte anonymisé
Re : Script Nautilus pour convertir/transcoder en mp3...
Ok j'suis en mode boulet. J'étais mal réveillé. Je te tiens au courant
#69 Le 07/01/2010, à 15:55
- Compte anonymisé
Re : Script Nautilus pour convertir/transcoder en mp3...
Ça marche. Je sors.
Merci
#70 Le 07/01/2010, à 19:59
- Ras'
Re : Script Nautilus pour convertir/transcoder en mp3...
Avec les modifs de Raf
Et relis mon pseudo aussi
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
#71 Le 07/01/2010, à 20:12
- Compte anonymisé
Re : Script Nautilus pour convertir/transcoder en mp3...
Oups
#72 Le 08/01/2010, à 16:38
- tocks
Re : Script Nautilus pour convertir/transcoder en mp3...
Merci pour ton script, mais j'ai une erreur sur les tags a partir de fichier flac
Définition du pipeline à PAUSED...
Le pipeline est en phase de PREROLL...
Le pipeline a terminé la phase PREROLL...
Passage du pipeline à la phase PLAYING...
New clock: GstSystemClock
EOS reçu de l'élément « pipeline0 ».
Execution ended after 9511724959 ns.
Définition du pipeline à PAUSED...
Définition du pipeline à READY (prêt)...
Définition du pipeline à NULL...
Libération du pipeline (FREE)...
id3: invalid option -- 'D'
usage: id3 -[tTaAycg] `text' file1 [file2...]
id3 -d file1 [file2...]
id3 -l file1 [file2...]
id3 -L
id3 -v
-t Modifies a Title tag
-T Modifies a Track tag
-a Modifies an Artist tag
-A Modifies an Album tag
-y Modifies a Year tag
-c Modifies a Comment tag
-g Modifies a Genre tag
-l Lists an ID3 tag
-L Lists all genres
-R Uses an rfc822-style format for output
-d Deletes an ID3 tag
-h Displays this help info
-v Prints version info
97
100
Ps: ajout intéressant faire tourner le programme sur plusieurs coeur pour aller plus vite.
Merci encore
Hors ligne