]> diplodocus.org Git - flac-archive/blobdiff - fa-mp3cd
fix tests after shortening CD filenames
[flac-archive] / fa-mp3cd
index 72efdcfe4f08ab9fd5d7f8b17c77cdfbb87f9578..2840016d4a6b9712423889d775b04f3e423bad5b 100755 (executable)
--- a/fa-mp3cd
+++ b/fa-mp3cd
@@ -85,11 +85,10 @@ use v5.12;
 use warnings;
 use FindBin;
 
-# TODO  eval hack
-eval {
-    require "$FindBin::Bin/flac2mp3";
-    #require "$FindBin::Bin/tags.pl";
-};
+use lib $FindBin::Bin;
+
+require 'flac2mp3';
+require 'tags.pl';
 epg::flac::archive::tags->import(
     qw[
         track_tags
@@ -99,26 +98,37 @@ epg::flac::archive::tags->import(
         two_digits
     ]);
 
+sub filename {
+    my $tags = shift;
+    mangle_for_file_name(
+        join(' ',
+            (map { two_digits($_) } @{$tags->{DISCNUMBER} // []}),
+            (map { two_digits($_) } @{$tags->{TRACKNUMBER} // []}),
+            @{$tags->{TITLE}},
+        )
+    ) . '.mp3';
+}
+
 sub plan_flac {
+    local $@;
     my $workdir = shift;
     my $path = shift;
     my $tags = shift;
-
-    my %track = track_tags($tags);
-    $track{flac} = $path;
-    $track{filename} = mangle_for_file_name(
-        join(' ',
-             (map { two_digits($_) } @{$track{discnumber}}),
-             two_digits($track{tracknumber}),
-             $track{title},
-        )) . '.mp3';
-    $track{dir} = join('/', $workdir, mangle_for_file_name($track{album}));
-    \%track
+    my %track_tags = eval { track_tags($tags) };
+    if ($@) {
+        die("$@: $path")
+    }
+    (
+     tags => \%track_tags,
+     flac => $path,
+     filename => filename($tags),
+     dir => join('/', $workdir, mangle_for_file_name(@{$tags->{ALBUM}})),
+    )
 }
 
 sub plan {
     my $workdir = shift;
-    map { plan_flac($workdir, @$_) } @_
+    map { {plan_flac($workdir, @$_)} } @_
 }
 
 # if @layout is partially on disk, return the portion that remains to be written
@@ -190,7 +200,7 @@ sub main {
         ));
     for my $mp3 (@layout) {
         say('mkdir -p ' . $mp3->{dir});
-        epg::flac::archive::mp3::flac2mp3(join('/', $mp3->{dir}, $mp3->{filename}), $mp3->{flac}, $mp3);
+        epg::flac::archive::mp3::flac2mp3(join('/', $mp3->{dir}, $mp3->{filename}), $mp3->{flac}, $mp3->{tags});
     }
 
     my @output;