[ubuntu-it] Script per convertire intere directory da MP3 a OGG

Riccardo Bachis cravenroad17 a tiscali.it
Sab 4 Nov 2006 15:20:30 GMT


Max @ GMail ha scritto:
> Salve a tutti
> Il mio pallino per il FOSS sta raggiungendo proporzioni "impegnative",
> anche oltre le mie capacità.
>
> Vi chiederei una mano per costruire uno script per convertire intere
> directory concatenate di MP3 in OGG... Non avendo tanto spazio nell'HD
> sarebbe l'ideale se una volta terminata la conversione di ogni singolo
> file in OGG, l'originale in MP3 venisse cancellato.
>
>   
ciao, ho riadattato per l'occasione uno script che avevo fatto per
convertire altri file.
Accetta 2 opzioni:
-r fa la scansione ricorsiva delle directory (se non indicato si ferma
al primo livello di directory)
-d cancella i file mp3 originali (che altrimenti vengono mantenuti)
Infine richiede che gli passi la directory
Esempio:
sh mp32oggrec -dr /opt/mp3
Spero ti serva
ciao

Ecco il codice:

#!bin/bash

function usage(){
    echo "usage: $0 [-r] [-d] directory"
    exit 1
}

if [ $# -lt 1 ]
then
    usage
fi

convert="mp32ogg"
recursive=0
delete=0

while getopts "rd" opt
do
    case $opt in
        r  ) recursive=1 ;;
        d  ) convert="mp32ogg --delete"
             delete=1 ;;
        \? ) usage
             exit 2 ;;
    esac
done
shift $(($OPTIND -1))
directory=$1

if [ ! -d $directory -o ! -w $directory ]
then
    echo "Directory inesistente o permessi insufficienti"
    exit 2
fi

initial_dir=/var/www
find_command="find $directory"
if [ $recursive -lt 1 ]
then
    find_command="find $directory -maxdepth 1"
fi

for i in $( $find_command -iname "*.mp3" )
do
    if [ -f $i ]
    then
        _file=$( basename $i )
        _dir=${i%$_file}
        if [ $_dir != $initial_dir ]
        then
            builtin cd $_dir
            initial_dir=$_dir
        fi
        ogg_file=${i%.*}
        echo "################### Converting $i to ${ogg_file}.ogg"
        $convert $i
        echo -n "################## ${ogg_file}.ogg created "
        if [ $delete -gt 0 ]
        then
            echo "and $i deleted"
        else
            echo
        fi
    fi
done





Maggiori informazioni sulla lista ubuntu-it