my $date;
my @titles;
- open(TAGS, '-|', 'metaflac', '--export-vc-to=-', $fn);
+ open(TAGS, '-|', 'metaflac', '--export-vc-to=-', $fn)
+ or die("open(metaflac --export-vc-to=- $fn): $!");
while (<TAGS>) {
chomp;
push(@titles, $value);
}
}
- close(TAGS) or die("close($fn): $!");
+ close(TAGS) or die("close(metaflac --export-vc-to=- $fn): $?");
return ($artist, $album, $date, @titles);
}
my $track = shift;
my $skip_arg = shift;
my $until_arg = shift;
+ my $outfile;
- my $outfile = sprintf("$artist ($album) \%02s $title.mp3", $track);
+ # We'll be putting these in single quotes, so we need to escape
+ # any single quotes in the filename by closing the quote ('),
+ # putting an escaped quote (\'), and then reopening the quote (').
+ for ($fn, $title, $artist, $album, $date) {
+ s/'/'\\''/;
+ }
+
+ $outfile = sprintf("$artist ($album) \%02s $title.mp3", $track);
$outfile =~ s/\//_/g;
- $outfile =~ s/:/_/g;
- $outfile =~ s/'/_/g;
- $outfile =~ s/"/_/g;
- # XXX
$until_arg ||= '';
+ # XXX
system("flac -cd $skip_arg $until_arg '$fn' | lame --preset standard --tt '$title' --ta '$artist' --tl '$album' --ty '$date' --tn $track - '$outfile'");
}