#!/usr/bin/perl -w use strict; use XML::XPath; use XML::XPath::XMLParser; my ($grab, $debug, $year, $genre, $album, $perf, $xp) = (0, 0, 0, 0, 0, 0, 0); if ($#ARGV < 0) { push @ARGV, "--vbr-new -V 2 -b 32"; } sub grab { system "cdda2wav -B -L 1 -D /dev/hdd"; } sub pr_deb { if ($debug) { print shift; } } sub parse_cddb { open CDDB, "audio.cddb"; while () { if (/^DYEAR=/) { ($year) = /^DYEAR=(.*)$/; } elsif (/^DGENRE=/) { ($genre) = /^DGENRE=(.*)$/; } } close CDDB; pr_deb "year: $year\ngenre: $genre\n"; } sub parse_cdindex { $xp = XML::XPath->new(filename => 'audio.cdindex'); my $cdinfo = $xp->find('/CDInfo'); $album = $xp->findvalue('//Title'); $cdinfo = $xp->find('//SingleArtistCD', $cdinfo); $perf = $xp->findvalue('//Artist', $cdinfo); } grab if $grab; parse_cddb; parse_cdindex; open SEZNAM, ">seznam.txt" or die "cannot create a file"; print SEZNAM "$perf - $album" . ($year ? " ($year)" : "") . "\n\n"; my $num = 1; for my $file (<*.wav>) { my ($mp3file) = $file =~ /^(.*)\.wav$/; my $title = $xp->findvalue("//Track[\@Num=$num]/Name"); print SEZNAM "$num. $title\n"; my $sys = "lame @ARGV --id3v2-only --ta '$perf' --tl '$album' " . "--tt '$title' --tn $num" . ($year ? " --ty $year": "") . ($genre ? " --tg '$genre'": "") . " $file $mp3file.mp3"; pr_deb "$sys\n"; system $sys; $num++; } close SEZNAM; 0;