97 lines
2.8 KiB
Bash
Executable File
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 !" |