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.

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


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à hmm

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

H4nnibal a écrit :

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à hmm

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 smile
Nickel, même si je vais repasser sous Ubuntu d'ici peu ça me sauve la vie pour le moment 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

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

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 smile

#69 Le 07/01/2010, à 15:55

Compte anonymisé

Re : Script Nautilus pour convertir/transcoder en mp3...

Ça marche. Je sors.

Merci big_smile

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

#71 Le 07/01/2010, à 20:12

Compte anonymisé

Re : Script Nautilus pour convertir/transcoder en mp3...

Oups smile

#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