]> diplodocus.org Git - flac-archive/blobdiff - fa-encode
fix some failing tests
[flac-archive] / fa-encode
index e1d3a2c2d205e77e782ad8ded522bb5c19ca6fe0..9388f07e2f91c4a3ed68835a2fe1cb22953e7dc5 100755 (executable)
--- a/fa-encode
+++ b/fa-encode
@@ -21,17 +21,39 @@ use v5.12;
 use warnings;
 
 use FindBin;
+use Pod::Usage;
 
-require "$FindBin::Bin/tags.p";
+use lib $FindBin::Bin;
+
+require 'tags.pl';
 epg::flac::archive::tags->import(
     qw[
         read_tags
         mangle_for_file_name
         quote
+        track_tags_from_disc
+        two_digits
     ]);
 
+sub filename {
+    my ($tracknumber, $tags) = @_;
+    my $title = $tags->{TITLE} // die('title required');
+    my @discnumber = @{$tags->{DISCNUMBER} // []};
+    my @partnumber = @{$tags->{PARTNUMBER} // []};
+    my @version = @{$tags->{VERSION} // []};
+    join('-',
+         (map { two_digits($_) } @discnumber),
+         two_digits($tracknumber),
+         mangle_for_file_name(join('TODO multi-title?', @$title)),
+         # TODO more than one VERSION?
+         (map { mangle_for_file_name($_) } @version),
+         @partnumber,
+        )
+        . '.flac',
+}
+
 sub main {
-    my $input_directory = shift;
+    my $input_directory = shift || pod2usage();
     my $fn = "$input_directory/tags";
     open(my $fh, '<', $fn) || die("open($fn): $!");
     my ($album, $tracks) = read_tags($fh);
@@ -63,6 +85,7 @@ sub main {
     my $dir = join('/', '..', mangle_for_file_name($artist), mangle_for_file_name($album_tag));
 
     say('set -ex');
+    say('cd ', quote($input_directory));
     say('mkdir -p ', quote($dir));
     my $tracknum = 0;
     for my $track (@$tracks) {
@@ -82,17 +105,17 @@ sub main {
             $track->{DISCNUMBER} = \@discnumber;
         }
         my $title = join(' ', @{$track->{TITLE}});
-        my $tracknum_s = sprintf('%02d', $tracknum);
         my $fn = join('/',
                       $dir,
-                      join('_',
-                           (map { sprintf('%02d', $_) } @discnumber),
-                           $tracknum_s,
-                           mangle_for_file_name($title) . '.flac',
+                      filename(
+                          $tracknum,
+                          {track_tags_from_disc($album, $tracks, $tracknum)}
                       ),
             );
         -e $fn && die("cowardly refusing to clobber $fn");
         my @pictures = ('--picture', quote('3|image/jpeg|||cover.front.jpeg')); # TODO optional
+        @pictures = ();         # XXX
+        my $tracknum_s = two_digits($tracknum);
         say(join(' ',
                  'flac -o',
                  quote($fn),