You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
87 lines
2.4 KiB
87 lines
2.4 KiB
15 years ago
|
#!/usr/bin/perl
|
||
|
#
|
||
|
# usage: just start it. Then copy the files to the local database.
|
||
|
#
|
||
|
# I have a extra cddb category (x-converted) for them, becauce I'm to
|
||
|
# lazy to sort them all into the right category...
|
||
|
#
|
||
|
# make sure the output directory does *not* exist, the script refuses
|
||
|
# to work if it does (just to make sure that it does not overwrite
|
||
|
# something important)
|
||
|
#
|
||
|
# (c) 1998 Gerd Knorr <kraxel@cs.tu-berlin.de> / Copying: GNU GPL
|
||
|
#
|
||
|
|
||
|
# config: output directory
|
||
|
$dir="/tmp/cddb";
|
||
|
|
||
|
#############################################################################
|
||
|
|
||
|
$out=0;
|
||
|
open(IN,"$ENV{'HOME'}/.workmandb") ||\
|
||
|
die "open $ENV{'HOME'}/.workmandb: $!";
|
||
|
mkdir("$dir",0777) || die "mkdir $dir: $!";
|
||
|
|
||
|
while (<IN>) {
|
||
|
if (/^tracks/) {
|
||
|
if ($out) {
|
||
|
print OUT "EXTD=\n";
|
||
|
for ($i = 2, $n = 0; $i < $t[1]+2; $i++) {
|
||
|
printf OUT "EXTT%d=\n",$i-2;
|
||
|
}
|
||
|
print OUT "PLAYORDER=\n";
|
||
|
close OUT;
|
||
|
}
|
||
|
@t = split;
|
||
|
for ($i = 2, $n = 0; $i < $t[1]+2; $i++) {
|
||
|
$len = $t[$i]/75;
|
||
|
for ($quer = 0; $len > 0; $quer += $len % 10, $len /= 10) {};
|
||
|
$n += $quer + ($len % 60);
|
||
|
}
|
||
|
$m = ($t[$t[1]+2] - int($t[2]/75));
|
||
|
$id = (($n % 0xff) << 24) | ($m << 8) | $t[1];
|
||
|
$magic = sprintf("%08x",$id);
|
||
|
open(OUT,">$dir/$magic") || die "open $dir/$magic: $!";
|
||
|
$out=1;
|
||
|
}
|
||
|
|
||
|
$cdname = $1 if (/^cdname (.*)/);
|
||
|
if (/^artist (.*)/) {
|
||
|
$artist = $1;
|
||
|
|
||
|
print OUT "# xmcd 2.0 CD database file\n";
|
||
|
print OUT "#\n";
|
||
|
print OUT "# Track frame offsets:\n";
|
||
|
for ($i = 2, $n = 0; $i < $t[1]+2; $i++) {
|
||
|
print OUT "#\t$t[$i]\n";
|
||
|
}
|
||
|
print OUT "#\n";
|
||
|
print OUT "# Disc length: $t[$t[1]+2] seconds\n";
|
||
|
print OUT "#\n";
|
||
|
print OUT "# Revision: 1\n";
|
||
|
print OUT "# Submitted via: wdb2cddb 1.0\n";
|
||
|
print OUT "#\n";
|
||
|
|
||
|
print OUT "DISCID=$magic\n";
|
||
|
print OUT "DTITLE=$artist / $cdname\n";
|
||
|
print "$magic - $artist / $cdname\n";
|
||
|
$track=0;
|
||
|
}
|
||
|
if (/^track (.*)/) {
|
||
|
print OUT "TTITLE$track=$1\n";
|
||
|
$track++;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
close IN;
|
||
|
|
||
|
print OUT "EXTD=\n";
|
||
|
for ($i = 2, $n = 0; $i < $t[1]+2; $i++) {
|
||
|
printf OUT "EXTT%d=\n",$i-2;
|
||
|
}
|
||
|
print OUT "PLAYORDER=\n";
|
||
|
close OUT;
|
||
|
|
||
|
print "\n*** The CDDB files are in $dir ***\n\n";
|
||
|
|