push(@args, $arg);
}
+ # If no cue sheet, stick a dummy in here.
+ if (@args == 0) {
+ @args = ([]);
+ }
+
return @args;
}
my $artist;
my $album;
my $date;
+ my $discnum;
my $track;
open(TAGS, '-|', 'metaflac', '--export-vc-to=-', $fn)
$album = $value;
} elsif (/^DATE=/i) {
$date = $value;
+ } elsif (/^DISCNUMBER=/i) {
+ $discnum = int($value);
} elsif (/^ARTIST\[/i) {
push(@$artists, $value);
} elsif (/^TRACKNUMBER=/i) {
}
close(TAGS) or die("close(metaflac --export-vc-to=- $fn): $?");
- return ($artist, $album, $date, $track);
+ # If no TITLEs, stick a dummy in here.
+ if (@$titles == 0) {
+ push(@$titles, undef);
+ }
+
+ return ($artist, $album, $date, $discnum, $track);
}
sub arg {
sub flac2mp3 {
my $fn = shift;
- my $title = shift;
- my $artist = shift;
- my $album = shift;
- my $date = shift;
+ my $title = (shift or 'unknown');
+ my $artist = (shift or 'unknown');
+ my $album = (shift or 'unknown');
+ my $date = (shift or 'unknown');
my $track = int(shift);
my $skip_arg = shift;
my $until_arg = shift;
arg('--ty', \$date);
arg('--tn', \$track);
+ $skip_arg ||= '';
$until_arg ||= '';
run_or_die(join(' ', "flac $flac_options -cd $skip_arg $until_arg '$fn'",
" | lame $lame_options $title $artist $album $date $track",
for my $fn (@ARGV) {
my @args = get_decode_args($fn);
my (@artists, @titles);
- my ($artist, $album, $date, $track) = get_tags($fn, \@artists,
- \@titles);
+ my ($artist, $album, $date, $discnum, $track) = get_tags($fn, \@artists,
+ \@titles);
+
+ # lame doesn't seem to support disc number.
+ defined($discnum) and $album .= " (disc $discnum)";
# Stupid hack: only a single-track file should have the
# TRACKNUMBER tag, so use it if set for the first pass through
for my $i (0..$#titles) {
flac2mp3($fn, $titles[$i], ($artists[$i] or $artist), $album, $date,
- $track, (defined($args[$i]) and @{$args[$i]} or ''));
+ $track, @{$args[$i]});
$track = $i + 2;
}
}