summaryrefslogtreecommitdiffstats
path: root/src/vfs/extfs/helpers/audio.in
blob: 05c8c65a44879863da6c1c6111e44145b1efcafb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#! /bin/sh
#
# Written by Pavel Machek
# CDDB support by Adam Byrtek
#
# (C) 2000 The Free Software Foundation.
#

set -e

CDDB_SERVER="http://freedb.freedb.org"
CDDB_HANDSHAKE="hello=user+localhost+mc+1.0&proto=1"
CDDB_TIMEOUT=20 # in seconds

audiofs_list()
{
    DATE=`date +"%b %d %H:%M"`
    echo "-r--r--r-- 1 0 0 0 $DATE CDDB"
    cdparanoia -Q -d "$1" 2>&1 | grep '^[ 0-9][ 0-9][ 0-9]\.' | while read A B C
    do
	A=`echo "$A" | sed -e 's/\.//' -e 's/^\(.\)$/0\1/'`
	SIZE=`expr 44 + $B \* 2352`
	echo "-r--r--r-- 1 0 0 $SIZE $DATE track-${A}.wav"
    done
}

audiofs_copyout()
{
    if [ x"$2" = x"CDDB" ]; then
        DISCID=`cd-discid "$1" | tr " " "+"`
	if [ -z "$DISCID" ]; then
	    exit 1
	fi
        RESPONSE=`wget -q -T $CDDB_TIMEOUT -O - "$CDDB_SERVER/~cddb/cddb.cgi?cmd=cddb+query+$DISCID&$CDDB_HANDSHAKE" | tee "$3" | @AWK@ '/^200/ { print $2,$3; }'`
	wget -q -T $CDDB_TIMEOUT -O - "$CDDB_SERVER/~cddb/cddb.cgi?cmd=cddb+read+$RESPONSE&$CDDB_HANDSHAKE" | grep -v "^#" >> "$3"
    else
        TRACK=`echo "$2" | sed 's/track-0*//' | sed 's/\.wav//'`
        cdparanoia -q -d "$1" "$TRACK" "$3" >/dev/null
    fi
}

if [ ! -b "$2" ]
then
    BASE="/dev/cdrom"
else
    BASE="$2"
fi

case "$1" in
  list) audiofs_list "$BASE"; exit 0;;
  copyout) audiofs_copyout "$BASE" "$3" "$4"; exit 0;;
esac
exit 1