#!/bin/bash # # Autore: Maurizio (aka farthest) # Licenza: GPL 2 or later # # Dipendenze: # zenity # lame # mac # mppdec # mplayer # flac # faad # oggdec oggenc --> package: vorbis-tools formati_supportati() { case $FORMATO in aac) SUPPORTO=yes FORMATOFILE=[Aa][Aa][Cc] ;; ape) SUPPORTO=yes FORMATOFILE=[Aa][Pp][Ee] ;; flac) SUPPORTO=yes FORMATOFILE=[Ff][Ll][Aa][Cc] ;; mp2) SUPPORTO=yes FORMATOFILE=[Mm][Pp]2 ;; mp3) SUPPORTO=yes FORMATOFILE=[Mm][Pp]3 ;; mpc) SUPPORTO=yes FORMATOFILE=[Mm][Pp][Cc] ;; ogg) SUPPORTO=yes FORMATOFILE=[Oo][Gg][Gg] ;; wav) SUPPORTO=yes FORMATOFILE=[Ww][Aa][Vv] ;; wave) FORMATO=wav SUPPORTO=yes FORMATOFILE=[Ww][Aa][Vv][Ee] ;; wma) SUPPORTO=yes FORMATOFILE=[Ww][Mm][Aa] ;; *) SUPPORTO=no ;; esac } ## 2aac() { faac -q $QUALITA -o "in formato .$FORMATO_CONVERSIONE/$FILE_CONVERTITO" "$WAVFILE" || echo "Errore del comando:faac -q $QUALITA -o 'in formato .$FORMATO_CONVERSIONE/$FILE_CONVERTITO' '$WAVFILE' ." >> /tmp/audioconvert.log } 2ape() { mac "$WAVFILE" "in formato .$FORMATO_CONVERSIONE/$FILE_CONVERTITO" -c$QUALITA || echo "Errore del comando: mac '$WAVFILE' 'in formato .$FORMATO_CONVERSIONE/$FILE_CONVERTITO' -c$QUALITA ." >> /tmp/audioconvert.log } 2flac() { flac -f --compression-level-$QUALITA "$WAVFILE" -o "in formato .$FORMATO_CONVERSIONE/$FILE_CONVERTITO" || echo "Errore del comando: flac --compression-level-$QUALITA '$WAVFILE' -o 'in formato .$FORMATO_CONVERSIONE/$FILE_CONVERTITO' ." >> /tmp/audioconvert.log } 2mp3() { lame -m auto --preset $QUALITA "$WAVFILE" "in formato .$FORMATO_CONVERSIONE/$FILE_CONVERTITO" || echo "Errore del comando: lame -m auto --preset $QUALITA '$WAVFILE' 'in formato .$FORMATO_CONVERSIONE/$FILE_CONVERTITO' ." >> /tmp/audioconvert.log } 2mpc() { mppenc --$QUALITA "$WAVFILE" "in formato .$FORMATO_CONVERSIONE/$FILE_CONVERTITO" || echo "Errore del comando: mppenc --$QUALITA '$WAVFILE' 'in formato .$FORMATO_CONVERSIONE/$FILE_CONVERTITO' ." >> /tmp/audioconvert.log } 2ogg() { oggenc "$WAVFILE" -q $QUALITA -o "in formato .$FORMATO_CONVERSIONE/$FILE_CONVERTITO" || echo "Errore del comando: oggenc '$WAVFILE' ${OGGTAGS[@]} -q $QUALITA -o 'in formato .$FORMATO_CONVERSIONE/$OGGFILE' ." >> /tmp/audioconvert.log } 2wav(){ cp "$FILE_CONVERTITO" "in formato .$FORMATO_CONVERSIONE/" 2>> /tmp/audioconvert.log } ## wma2wav() { mplayer "$FILE" -ao pcm:file="$WAVFILE" 2>> /tmp/audioconvert.log } mpc2wav() { mppdec "$FILE" "$WAVFILE" 2>> /tmp/audioconvert.log } ape2wav() { mac "$FILE" "$WAVFILE" -d || echo "Errore del comando: mac '$FILE' '$WAVFILE' -d." >> /tmp/audioconvert.log } flac2wav() { flac -f -d "$FILE" -o "$WAVFILE" || echo "Errore del comando: flac -d '$FILE' -o '$WAVFILE'." >> /tmp/audioconvert.log } ogg2wav() { oggdec "$FILE" -o "$WAVFILE" || echo "Errore del comando: oggdec '$FILE' -o '$WAVFILE'." >> /tmp/audioconvert.log } aac2wav() { faad -o "$WAVFILE" "$FILE" || echo "Errore del comando: faad -o '$WAVFILE' '$FILE'." >> /tmp/audioconvert.log } mp32wav() { lame --decode "$FILE" "$WAVFILE" || echo "Errore del comando: lame --decode '$FILE' '$WAVFILE'." >> /tmp/audioconvert.log } mp22mp3(){ lame -m auto --mp2input --preset $QUALITA "$FILE" "in formato .$FORMATO_CONVERSIONE/$FILE_CONVERTITO" || echo "Errore del comando: lame -m auto --mp2input [ "$FORMATO" != wav ]--preset $QUALITA '$FILE' 'in formato .$FORMATO_CONVERSIONE/$FILE_CONVERTITO' ." >> /tmp/audioconver.log } interruzione(){ zenity --title=Audioconvert --error --text="Script interrotto." kill $$ } ## principale PERCORSO="`echo $NAUTILUS_SCRIPT_CURRENT_URI| sed "s&^file://&&"`" [ -n "$PERCORSO" ] && cd "$PERCORSO" if [ $# -eq 0 ]; then zenity --title=Audioconvert --error --text="Seleziona almeno un file." exit 1 fi FORMATO_CONVERSIONE=`zenity --title=Audioconvert --list --text="Scelti il formato di conversione:" --radiolist --column=Selez. --column=Formato false aac false ape false flac false mp3 false mpc false ogg false wav || interruzione` SECONDA_CONVERSIONE=2$FORMATO_CONVERSIONE case "$FORMATO_CONVERSIONE" in aac) QUALITA=`zenity --list --text="Scegli la qualita'." --radiolist --column=Selez. --column=Livello false 100 false 200 true 300 false 400 false 500 || interruzione`;; ape) QUALITA=`zenity --list --text="Scegli la qualita'." --radiolist --column=Selez. --column=Livello false 1000 false 2000 true 3000 false 4000 false 5000 || interruzione`;; flac) QUALITA=`zenity --list --text="Scegli la qualita'." --radiolist --column=Selez. --column=Livello false 0 false 1 false 2 false 3 false 4 false 5 false 6 false 7 true 8 || interruzione`;; mp3) QUALITA=`zenity --list --text="Scegli la qualita'." --radiolist --column=Selez. --column=Livello true medium false standard false extreme false insane || interruzione`;; mpc) QUALITA=`zenity --list --text="Scegli la qualita'." --radiolist --column=Selez. --column=Livello false thumb false radio true standard false xtreme || interruzione`;; ogg) QUALITA=`zenity --list --text="Scegli la qualita'." --radiolist --column=Selez. --column=Livello false " -1" false 0 false 1 false 2 false 3 false 4 false 5 false 6 true 7 false 8 false 9 false 10 || interruzione`;; wav) echo "NESSUNA QUALITA'!";; *) zenity --title=Audioconvert --error --text="Attenzione, non hai selezionato nessun formato di conversione." exit 1 ;; esac while [ $# -gt 0 ]; do if [ ! -d "in formato .$FORMATO_CONVERSIONE" ]; then mkdir "in formato .$FORMATO_CONVERSIONE" fi FILE="$1" FORMATO=`echo "$FILE" | awk -F "." '{ print $NF }' | tr "[:upper:]" "[:lower:]"` formati_supportati if [ $SUPPORTO == yes -a ! -d "$FILE" ]; then WAVFILE=$(echo "$FILE" | sed -e s/""$FORMATOFILE""$/wav/) if [ "$FORMATO" != $FORMATO_CONVERSIONE ]; then FILE_CONVERTITO=$(echo "$FILE" | sed -e s/""$FORMATOFILE""$/"$FORMATO_CONVERSIONE"/) if [ "$FORMATO" == mp2 -a ! -e "in formato .$FORMATO_CONVERSIONE/$FILE_CONVERTITO" ]; then mp22mp3 elif ! [ -e "in formato .$FORMATO_CONVERSIONE/$FILE_CONVERTITO" ]; then [ "$FORMATO" != wav ] && "$FORMATO"2wav $SECONDA_CONVERSIONE else echo ""Il file in formato .$FORMATO_CONVERSIONE/$FILE_CONVERTITO" e' gia' esistente." >> /tmp/audioconvert.log fi rm -f "$WAVFILE" 2>> /tmp/audioconvert.log fi else echo "ERRORE!\nIl formato di '$FILE' non è supportato dallo script. :-(" >> /tmp/audioconvert.log fi shift done if [ -s /tmp/audioconvert.log ]; then echo "Lo script e' terminato!" >> /tmp/audioconvert.log cat /tmp/audioconvert.log | zenity --title="Errore - Audioconvert" --text-info rm -f /tmp/audioconvert.log else zenity --title=Audioconvert --info --text="Lo script e' terminato!" fi exit 0