]> diplodocus.org Git - flac-archive/blobdiff - flac2mp3
add todos and fix undefined release status
[flac-archive] / flac2mp3
index fd0b1487d135034ad66da50b1aec22a381df9f36..4dbb9278e99abe4704c4b4bf72f5b53c6fae0df3 100755 (executable)
--- a/flac2mp3
+++ b/flac2mp3
@@ -55,67 +55,86 @@ use warnings;
 use File::Temp;
 use FindBin;
 
-require "$FindBin::Bin/tags.pl";
+use lib $FindBin::Bin;
+
+require 'tags.pl';
 epg::flac::archive::tags->import(
     qw[
-        track_tags
-        read_tags_metaflac
-        mangle_for_file_name
-        quote
-        two_digits
-    ]);
+      track_tags
+      read_tags_metaflac
+      mangle_for_file_name
+      quote
+      two_digits
+    ]
+);
 
 sub flac2mp3 {
     my $mp3 = shift;
     my $flac = shift;
     my $tags = shift;
+
+    my @version;
+    if (defined($tags->{version})) {
+        @version = ('(' . $tags->{version} . ')');
+    }
+
     # This is an old TODO; what's wrong with --ty ?
     # TODO: Look at TDOR, TDRL, TDRC for date.
-    say(join(' ',
-             'flac',
-             '-cd',
-             quote($flac),
-             '|',
-             'lame',
-             '--id3v2-only',
-             '--id3v2-latin1',
-             '--pad-id3v2-size', 0,
-             '--preset standard',
-             '--ta',
-             quote($tags->{artist}),
-             '--tl',
-             quote($tags->{album}),
-             '--tn',
-             quote($tags->{tracknumber}),
-             '--tt',
-             quote($tags->{title}),
-             '--ty',
-             quote($tags->{date}),
-             '$pic_options',
-             #(map { ('--tv', quote("TPE2=$_")) } @{$albumartist}),
-             (map { ('--tv', quote("TPOS=$_")) } @{$tags->{discnumber}}),
-             '-',
-             quote($mp3),
-        ))
+    say(
+        join(
+            ' ',
+            'flac',
+            '-cd',
+            quote($flac),
+            '|',
+            'lame',
+            '--id3v2-only',
+            '--id3v2-latin1',
+            '--pad-id3v2-size', 0,
+            '--preset standard',
+            '--ta',
+            quote($tags->{artist}),
+            '--tl',
+            quote($tags->{album}),
+            '--tn',
+            quote($tags->{tracknumber}),
+            '--tt',
+            quote(join(' ', $tags->{title}, @version)),
+            '--ty',
+            quote($tags->{date}),
+            '$pic_options',
+
+            #(map { ('--tv', quote("TPE2=$_")) } @{$albumartist}),
+            (map { ('--tv', quote("TPOS=$_")) } @{$tags->{discnumber}}),
+            '-',
+            quote($mp3),
+        )
+    );
+}
+
+sub filename {
+    my $tags = shift;
+    mangle_for_file_name(
+        join(' ',
+            @{$tags->{ARTIST}},
+            @{$tags->{ALBUM}},
+            (map { two_digits($_) } @{$tags->{DISCNUMBER} // []}),
+            (map { two_digits($_) } @{$tags->{TRACKNUMBER} // []}),
+            @{$tags->{TITLE}},
+            @{$tags->{VERSION} // []},
+            @{$tags->{PARTNUMBER} // []},
+        )
+    ) . '.mp3';
 }
 
 sub main {
     for my $flac (@_) {
-        say('metaflac --export-picture-to=flac2mp3.cover.$$ ', quote($flac), ' && pic_options="--ti flac2mp3.cover.$$"');
-        my %tags = track_tags(read_tags_metaflac($flac));
-        flac2mp3(
-            mangle_for_file_name(
-                join(' ',
-                     $tags{artist},
-                     $tags{album},
-                     (map { two_digits($_) } @{$tags{discnumber}}),
-                     two_digits($tags{tracknumber}),
-                     $tags{title},
-                ))
-            . '.mp3',
-            $flac,
-            \%tags,
-            );
+        say('metaflac --export-picture-to=flac2mp3.cover.$$ ',
+            quote($flac), ' && pic_options="--ti flac2mp3.cover.$$"');
+
+        # TODO multi-track
+        my ($tags) = read_tags_metaflac($flac);
+        flac2mp3(filename($tags), $flac, {track_tags($tags)});
         say('unset pic_options');
     }
     say('rm -f flac2mp3.cover.$$');
@@ -124,7 +143,7 @@ sub main {
 }
 
 if (!caller) {
-    exit(main(@ARGV))
+    exit(main(@ARGV));
 }
 
 1;