#!/bin/bash # # /usr/local/bin/cdtomp3 -- CD rippen # #set -x [ -f ~/.cd2mp3.conf ] && . ~/.cd2mp3.conf [ -z $cdreader ] && cdreader="/dev/cdrom" [ -z $bitrate ] && bitrate=192 [ -z $cddbdata ] && cddbdata=/tmp/cdtomp3.cddb [ -z $grabber ] && grabber='cdparanoia -q -w $(expr $i + 1) -d $cdreader -' [ -z $destdir ] && destdir=/dat/mp3Neu [ -z $prio ] && prio=10 [ -z $SVDSVDRPSEND ] && SVDRPSEND=svdrpsend.pl [ -z $LOGFILE ] && LOGFILE=/tmp/cd2mp3.log if test -f $LOGFILE; then rm $LOGFILE fi if test -s $cddbdata; then rm $cddbdata fi #internetverbindung in de gänge bringen #ping -c 2 www.heise.de #sleep 15 cddb=$(echo $(disc-cover -t cddb -D $cdreader -o "$cddbdata") | awk -F'"' '{print $2}') if test -s "$cddbdata"; then subdir=$(grep "DTITLE" "$cddbdata" | awk -F= '{print $2}' | sed "s/ /_/g" | sed "s/[^[:alnum:]_-]//g") echo "CDDB Eintrag gefunden: $subdir" $SVDRPSEND MESG "CDDB Eintrag gefunden: $subdir" else subdir="UnbekannteCd" fi if ! test -d "$destdir/$subdir"; then mkdir $destdir/$subdir fi cd $destdir/$subdir if ! test -a fifo; then mkfifo fifo fi ## Jetzt geht's los, maximal 100 Titel auf einer CD for(( i=0; i<=99; i++)) do ## Erst den Dateinamen des Tracks ermitteln if test -s "$cddbdata"; then trackname=$(grep "TITLE$(echo $(expr $i + 0))=" $cddbdata | awk -F= '{print $2}' | sed "s/ /_/g" | sed "s/[^[:alnum:]_-]//g") if ! test "$trackname"; then trackname="track" fi else trackname="track" fi ## Index hinzu; moegliche Namensgleichheiten beseitigen let "i2 = $i + 1" if [ $i2 -le 9 ] ; then index=0$i2 else index=$i2 fi trackname=$index"-$trackname" echo $trackname ## Get names for ID-Tags ################# titlename=$(grep "TITLE$(echo $(expr $i + 0))=" $cddbdata | awk -F= '{print $2}') year=$(grep "DYEAR=" $cddbdata | awk -F= '{print $2}') disktitle=$(grep "DTITLE=" $cddbdata | awk -F[=/] '{print $3}' | sed "s/^ *//") diskartist=$(grep "DTITLE=" $cddbdata | awk -F[=/] '{print $2}') #echo Jahr:$year #echo Titel:$titlename #echo Album:$disktitle #echo Interpret:$diskartist $SVDRPSEND MESG "'$trackname' wird gerippt" ## Grabber und Kodierer anwerfen ############ # Codieren beginnt sobald das erste Byte eintrifft ... nice -n $prio lame --quiet --tt "$titlename" --ta "$diskartist" --tl "$disktitle" --ty "$year" --tn "$i2" --disptime 2 -b $bitrate -m s -h fifo "$trackname".mp3 > $LOGFILE & eval "nice -n $prio $grabber" > fifo # das ist der Fall, wenn der angegebene Track existiert ... if test "$?" -ne 0; then sleep 5 # Fehlercode des Grabbers -> reale Trackzahl ueberschritten # oder Fehler des CD Laufwerks #echo "FEHLER" #echo "$trackname".mp3 rm "$trackname".mp3 break fi done rm fifo $SVDRPSEND MESG "Rippen fertig" echo "Fertig !"