]> diplodocus.org Git - flac-archive/blobdiff - flac2mp3
Add DISCNUMBER support.
[flac-archive] / flac2mp3
index 65e3f8f91d60163cce302e5f7d5cbc57048ba051..ab83c9f9528110eeab7a55fcc6b7ba8e10d63ea0 100755 (executable)
--- 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,7 @@ sub get_tags {
     }
     close(TAGS) or die("close(metaflac --export-vc-to=- $fn): $?");
 
-    return ($artist, $album, $date, $track);
+    return ($artist, $album, $date, $discnum, $track);
 }
 
 sub arg {
@@ -184,6 +192,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 +213,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 +227,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;
         }
     }