]> pere.pagekite.me Git - homepage.git/blob - linux/cd-to-mp3.sh
Switched blog to hungry.com for now. Updated all links.
[homepage.git] / linux / cd-to-mp3.sh
1 #!/bin/sh
2 #
3 # Author: Petter Reinholdtsen <pere@td.org.uit.no>
4 # Date: 1999-02-02
5 #
6 # Convert CD music to mp3, fetching title, artist and track names from CDDB
7
8 TMPDIR=/var/tmp
9 CDDEV=/dev/cdrom
10 CDINFO=$TMPDIR/cdinfo-$$
11
12 # Fetch CD info
13 gcdplay -i -q > $CDINFO
14
15 PWD=`pwd`
16
17 TITLE=`grep 'CD TITLE:' $CDINFO|cut -d: -f2-`
18 TTITLE=`echo $TITLE|tr ' ()' '_'|sed 's/_\/_/\//'`
19
20 if test -z "$TITLE"; then
21 echo "Unable to find info on CD from cddb. Not ripping"
22 exit 1
23 fi
24
25 echo "Converting CD: $TITLE"
26
27 mkdirhier $TTITLE
28 cd $TTITLE
29
30 pid='0'
31 for track in `grep '^[0-9]*:' $CDINFO|tr -s ' ()\/' '_'|sed 's/:_/:/'`
32 do
33 t=`echo $track|cut -d: -f1`
34 WAVFILE=$TMPDIR/cdinfo-$$-track$t.wav
35 OUT1=$TMPDIR/cdinfo-$$-track$t.out
36 OUT2=$TMPDIR/cdinfo-$$-track$t-enc.out
37
38 echo "Reading track $t ($track)"
39 time nice cdda2wav -D $CDDEV -t $t $WAVFILE > $OUT1 2>&1
40 echo "waiting for encoding (pid=$pid) to end"
41 wait $pid # > /dev/null 2>&1
42 echo "Starting to encode track $t"
43 time nice l3enc $WAVFILE $track.mp3 > $OUT2 2>&1 &
44 pid=$!
45
46 # Give l3enc time to read file before removing it
47 (sleep 10; nice rm -f $WAVFILE $OUT1 $OUT2) &
48 done
49 rm -f $CDINFO
50
51 cd $PWD