Files
bin/cd2mp3
2012-12-16 18:46:30 +01:00

97 lines
2.8 KiB
Bash
Executable File

#!/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 !"