#!/usr/bin/perl
$t="";
$a="";
$da="";
$l="";
$f="";

$n=1;

$r=44100;
$kb=128000;
$x=1152;

while(<>) {
	chomp;
	if(/^\s*TITLE "(.*)"/){
		($t=$1)=~s/\xa0/ /g;
		$t=~s/^\s+|\s+$//g;
	}elsif(/^\s*PERFORMER "(.*)"/){
		$a=$1;
	}elsif(/^\s*FILE "(.*)"/){
		$f=$1;
		if((my $g=$f)=~s/\s/%/g){
			rename($f,$g);
			$f=$g;
		}
		#print ">$f< >$_> >$r< >$kb<\n";
		open(F,'-|',"mp3check","-c",$f) || die "$!";
		$_=readline(F);
		close(F);
		chomp;
		@F=split;
		if($F[1] eq "48"){$r=48000;}
		$kb=int($F[2])*1000;
		open(F,'-|',"mp3check","-d",$f) || die "$!";
		@times=<F>;
		close(F);
		map(chomp,@times);
		splice(@times,0,1);
		for(@times){s/^\s*(\d+).*/\1/;}
		#print(join(', ',@times)."\n");
		$da=$a;
		$l=$t;
	}elsif(/^\s*INDEX 01 (\d\d):(\d\d):(\d\d)/){
		if($a eq ""){$a=$da;}
		$frame=int(((($1*60+$2)*75+$3)*$r+(1152*75/2))/75/1152);
		if(@cmd){
			$n++;
			@cmd=(@cmd,"count=".($times[$frame]-$oldcount));
			system {$cmd[0]} @cmd;
			print join(' ',@cmd2),"\n";
			system {$cmd2[0]} @cmd2;
		}
		$file="$a - $t.mp3";
		$file =~ s/[\000-\037\/\200-\237]/_/g;
		@cmd=("dd","bs=1","obs=65536","if=$f","of=$file","skip=$times[$frame]");
		@cmd2=("mp3info", "-t", $t, "-a", $a, "-l", $l, "-n", $n, $file);
		$oldcount=$times[$frame];
		if($1 eq "1"){
			$a="";
			$t="";
		}
	}
}
print join(' ',@cmd),"\n";
system {$cmd[0]} @cmd;
print join(' ',@cmd2),"\n";
system {$cmd2[0]} @cmd2;
