X-Git-Url: https://diplodocus.org/git/flac-archive/blobdiff_plain/771827160b4deb3a842551b4363d2ff6a8c90617..f939ddf8a554a1f938a510d46648935d6463408b:/flac2mp3 diff --git a/flac2mp3 b/flac2mp3 index 65e3f8f..21cf9c5 100755 --- a/flac2mp3 +++ b/flac2mp3 @@ -85,6 +85,11 @@ sub get_decode_args { push(@args, $arg); } + # If no cue sheet, stick a dummy in here. + if (@args == 0) { + @args = ([]); + } + return @args; } @@ -99,6 +104,7 @@ sub get_tags { my $artist; my $album; my $date; + my $discnum; my $track; open(TAGS, '-|', 'metaflac', '--export-vc-to=-', $fn) @@ -114,6 +120,8 @@ sub get_tags { $album = $value; } elsif (/^DATE=/i) { $date = $value; + } elsif (/^DISCNUMBER=/i) { + $discnum = int($value); } elsif (/^ARTIST\[/i) { push(@$artists, $value); } elsif (/^TRACKNUMBER=/i) { @@ -127,7 +135,12 @@ sub get_tags { } 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 { @@ -143,10 +156,10 @@ 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; @@ -184,6 +197,7 @@ sub flac2mp3 { 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", @@ -204,8 +218,11 @@ MAIN: { 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 @@ -215,7 +232,7 @@ MAIN: { 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; } }