Así, este script tiene dos modos de operación: ripear el cd completo (filtrando la salida de cdda2wav --info, se detectará el número de pistas del CD y no habrá que introducirlo), o ripear algunas pistas:
Código:
#!/bin/bash # cd2file.sh - Script que ripea CDs de audio # Requiere cdda2wav, lame, oggenc # Este script: ricardo at zonasiete.org - Ricardo Cervera (lical) # Idea original: ferdy at ferdyx.org - Fernando Pereda (Ferdy) # GPL Licensed. # CONFIGURACION # DEV=/dev/cdrom # function read_track() { NUMTRACK=$1 OUTPUTF=$2 MODE=$3 if [ $MODE = "--mp3" ]; then cdda2wav -t "$NUMTRACK" -O wav -D "$DEV" -q -Q - 2>/dev/null | \ lame -q 2 - "$OUTPUTF".mp3 --quiet return $? elif [ $MODE = "--ogg" ]; then cdda2wav -t "$NUMTRACK" -O wav -D "$DEV" -q -Q - 2>/dev/null | \ oggenc -q 4 - -o "$OUTPUTF".ogg -Q return $? fi } function get_num_tracks() { SAL=`cdda2wav -J -D "$DEV" 2>&1` NUMTRACKS=`echo $SAL | sed -e 's/.*tracks:\([0-9]*\),.*/\1/g'` echo $NUMTRACKS } function uso() { echo "$0: Ripea CDs" echo "---------" echo "El primer argumento debe ser \"--mp3\" o bien " echo "\"--ogg\", indicando asi el formato de salida." echo " " echo "El segundo argumento debe ser \"--fullcd\" para" echo "ripear el CD completo. En ese caso ya estaria todo" echo "Si pretendes ripear pistas sueltas, debes ingresar" echo "como segundo argumento \"--tracks\". A continuacion" echo "se te pedira que ingreses los numeros de pista" echo "separados por espacios" echo " " echo "Ejemplos:" echo " " echo "$0 --ogg --fullcd" echo " " echo "$0 --mp3 --tracks" echo "1 3 8 11" } ## FLOW if [ "$1" = "--mp3" ]; then MOD=$1 elif [ "$1" = "--ogg" ]; then MOD=$1 else uso exit 1 fi echo "Espere, leyendo informacion del disco..." N=`get_num_tracks` echo "El CD tiene $N pistas" sleep 3 case $2 in --fullcd) TRACK_ACT=1 while [ $TRACK_ACT -le $N ]; do NAME=$TRACK_ACT if [ $NAME -lt 10 ]; then NAME="0$NAME" fi echo "Extrayendo pista $NAME ..." read_track $TRACK_ACT $NAME $MOD TRACK_ACT=$[$TRACK_ACT+1] done rm -f audio*.inf echo "Hecho." ;; --tracks) echo "Introduzca los numeros de pista: " read LIST echo "Siguiendo..." for i in $LIST; do if [ $i -gt $N ]; then exit 1 fi NAME=$i if [ $NAME -lt 10 ]; then NAME="0$NAME" fi echo "Extrayendo pista $NAME ..." read_track $i $NAME $MOD done rm -f audio*.inf echo "Hecho." ;; *) uso exit 1 ;; esac
Espero que sea útil. Claro está, se admiten mejoras
Un saludo,