]> diplodocus.org Git - flac-archive/blobdiff - flac2mp3
Account for two Qobuz oddities in flac2mp3.
[flac-archive] / flac2mp3
index c1e09445d77cf83db9bb0c098928d747305cb901..d82e61d3db6916dd944e294ca73e13cf8ecb09b2 100755 (executable)
--- a/flac2mp3
+++ b/flac2mp3
@@ -62,15 +62,29 @@ epg::flac::archive::tags->import(
         read_tags
         mangle_for_file_name
         quote
+        two_digits
     ]);
 
 sub flac2mp3 {
-    my %a = @_;
-    my $quoted_flac = quote($a{flac});
+    my $quoted_flac = quote(shift);
+    my $tags = shift;
+    my ($artist, $album, $date, $discnumber) = disc_tags(%$tags);
 
-    say('if metaflac --export-picture-to=flac2mp3.cover.$$ ', $quoted_flac, '; then');
-    say('    pic_options="--ti flac2mp3.cover.$$"');
-    say('fi');
+        # TODO resurrect whole-disc FLAC?
+        # Stupid hack: only a single-track file should have the
+        # TRACKNUMBER tag, so use it if set for the first pass through
+        # the loop.  At the end of the loop, we'll set $track for the
+        # next run, so this continues to work for multi-track files.
+                # if track == None:
+                #     track = 1
+                # else:
+                #     track = int(track)
+
+    my $tracknumber = epg::flac::archive::tags::one(TRACKNUMBER => $tags);
+    my $title = epg::flac::archive::tags::one(TITLE => $tags);
+    # TODO restore PARTNUMBER and VERSION next time i need them
+
+    say('metaflac --export-picture-to=flac2mp3.cover.$$', " $quoted_flac && pic_options=", '"--ti flac2mp3.cover.$$"');
 
     # This is an old TODO; what's wrong with --ty ?
     # TODO: Look at TDOR, TDRL, TDRC for date.
@@ -85,33 +99,32 @@ sub flac2mp3 {
              '--pad-id3v2-size', 0,
              '--preset standard',
              '--ta',
-             quote($a{artist}),
+             quote($artist),
              '--tl',
-             quote($a{album}),
+             quote($album),
              '--tn',
-             quote($a{track}),
+             quote($tracknumber),
              '--tt',
-             quote($a{title}),
+             quote($title),
              '--ty',
-             quote($a{date}),
+             quote($date),
              '$pic_options',
-             (map { ('--tv', quote("TPE2=$_")) } @{$a{albumartist}}),
-             (map { ('--tv', quote("TPOS=$_")) } @{$a{discnumber}}),
+             #(map { ('--tv', quote("TPE2=$_")) } @{$albumartist}),
+             (map { ('--tv', quote("TPOS=$_")) } @{$discnumber}),
              '-',
              quote(
                  mangle_for_file_name(
                      join(' ',
-                          $a{artist},
-                          $a{album},
-                          (map { sprintf('%02d', $_) } @{$a{discnumber}}),
-                          $a{track},
-                          $a{title},
+                          $artist,
+                          $album,
+                          (map { two_digits($_) } @{$discnumber}),
+                          two_digits($tracknumber),
+                          $title,
                      ))
                  . '.mp3'
              )
         ));
     say('unset pic_options');
-    say('rm -f flac2mp3.cover.$$');
 }
 
 sub read_tags_metaflac {
@@ -130,32 +143,9 @@ sub read_tags_metaflac {
 sub main {
     for my $fn (@_) {
         my ($tags) = read_tags_metaflac($fn);
-        my ($album, $artist, $date, $discnumber) = disc_tags($tags);
-
-        # TODO resurrect whole-disc FLAC?
-        # Stupid hack: only a single-track file should have the
-        # TRACKNUMBER tag, so use it if set for the first pass through
-        # the loop.  At the end of the loop, we'll set $track for the
-        # next run, so this continues to work for multi-track files.
-                # if track == None:
-                #     track = 1
-                # else:
-                #     track = int(track)
-        {
-            my $tracknumber = epg::flac::archive::tags::one(TRACKNUMBER => $tags);
-            my $title = epg::flac::archive::tags::one(TITLE => $tags);
-            # TODO restore PARTNUMBER and VERSION net time i need them
-            flac2mp3(
-                artist => $artist,
-                album => $album,
-                date => $date,
-                discnumber => $discnumber,
-                track => $tracknumber,
-                title => $title,
-                flac => $fn,
-                )
-        }
+        flac2mp3($fn, $tags);
     }
+    say('rm -f flac2mp3.cover.$$');
 
     return 0;
 }