]> diplodocus.org Git - flac-archive/commitdiff
Restore PART/VERSION and add filename tests.
authorEric Gillespie <epg@pretzelnet.org>
Sun, 27 Mar 2022 20:43:58 +0000 (15:43 -0500)
committerEric Gillespie <epg@pretzelnet.org>
Sun, 27 Mar 2022 20:43:58 +0000 (15:43 -0500)
fa-mp3cd
flac2mp3
t/filenames.t
t/mp3cd/check-directory.t
t/mp3cd/plan.t

index 72efdcf..a15318b 100755 (executable)
--- a/fa-mp3cd
+++ b/fa-mp3cd
@@ -85,11 +85,10 @@ use v5.12;
 use warnings;
 use FindBin;
 
 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
 epg::flac::archive::tags->import(
     qw[
         track_tags
@@ -99,26 +98,35 @@ epg::flac::archive::tags->import(
         two_digits
     ]);
 
         two_digits
     ]);
 
+sub filename {
+    my $tags = shift;
+    mangle_for_file_name(
+        join(' ',
+            (map { two_digits($_) } @{$tags->{DISCNUMBER} // []}),
+            (map { two_digits($_) } @{$tags->{TRACKNUMBER} // []}),
+            @{$tags->{TITLE}},
+            @{$tags->{VERSION} // []},
+            @{$tags->{PARTNUMBER} // []},
+        )
+    ) . '.mp3';
+}
+
 sub plan_flac {
     my $workdir = shift;
     my $path = shift;
     my $tags = shift;
 
 sub plan_flac {
     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
+    (
+     tags => {track_tags($tags)},
+     flac => $path,
+     filename => filename($tags),
+     dir => join('/', $workdir, mangle_for_file_name(@{$tags->{ALBUM}})),
+    )
 }
 
 sub plan {
     my $workdir = shift;
 }
 
 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
 }
 
 # if @layout is partially on disk, return the portion that remains to be written
@@ -190,7 +198,7 @@ sub main {
         ));
     for my $mp3 (@layout) {
         say('mkdir -p ' . $mp3->{dir});
         ));
     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;
     }
 
     my @output;
index c8e9d11..e3e3867 100755 (executable)
--- a/flac2mp3
+++ b/flac2mp3
@@ -52,10 +52,11 @@ package epg::flac::archive::mp3;
 use v5.12;
 use warnings;
 
 use v5.12;
 use warnings;
 
-use File::Temp;
 use FindBin;
 
 use FindBin;
 
-require "$FindBin::Bin/tags.pl";
+use lib $FindBin::Bin;
+
+require 'tags.pl';
 epg::flac::archive::tags->import(
     qw[
       track_tags
 epg::flac::archive::tags->import(
     qw[
       track_tags
@@ -105,25 +106,29 @@ sub flac2mp3 {
     );
 }
 
     );
 }
 
+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.$$"');
 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,
-        );
+
+        # 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.$$');
         say('unset pic_options');
     }
     say('rm -f flac2mp3.cover.$$');
index 574c648..c5c1ad2 100644 (file)
@@ -1,7 +1,7 @@
 use v5.12;
 use warnings;
 
 use v5.12;
 use warnings;
 
-use Test::More tests => 6;
+use Test::More tests => 14;
 
 use FindBin;
 
 
 use FindBin;
 
@@ -10,6 +10,8 @@ use lib "$FindBin::Bin/..";
 require 'tags.pl';
 epg::flac::archive::tags->import('track_tags_from_disc');
 require 'fa-encode';
 require 'tags.pl';
 epg::flac::archive::tags->import('track_tags_from_disc');
 require 'fa-encode';
+require 'fa-mp3cd';
+require 'flac2mp3';
 
 is epg::flac::archive::encode::filename(
     3,
 
 is epg::flac::archive::encode::filename(
     3,
@@ -57,6 +59,7 @@ my $tracks = [
         VERSION => ['12 inch remix'],
     },
 ];
         VERSION => ['12 inch remix'],
     },
 ];
+
 is epg::flac::archive::encode::filename(
     1, {epg::flac::archive::tags::track_tags_from_disc($album, $tracks, 1)},
   ),
 is epg::flac::archive::encode::filename(
     1, {epg::flac::archive::tags::track_tags_from_disc($album, $tracks, 1)},
   ),
@@ -80,3 +83,83 @@ is epg::flac::archive::encode::filename(
   ),
   '04-testing_both_and_with_leading_0-live-04.flac',
   'PARTNUMBER with leading 0 and VERSION';
   ),
   '04-testing_both_and_with_leading_0-live-04.flac',
   'PARTNUMBER with leading 0 and VERSION';
+
+#
+# fa-mp3cd
+#
+
+is epg::flac::archive::mp3::cd::filename(
+    {
+        epg::flac::archive::tags::track_tags_from_disc($album, $tracks, 1),
+        TRACKNUMBER => [1]
+    }
+  ),
+  '01_Care_4.mp3',
+  'fa-mp3cd PART goes into filename, PARTNUMBER ignored';
+
+is epg::flac::archive::mp3::cd::filename(
+    {
+        epg::flac::archive::tags::track_tags_from_disc($album, $tracks, 2),
+        TRACKNUMBER => [2]
+    }
+  ),
+  '02_silence.mp3',
+  'fa-mp3cd parens in track title omitted';
+
+is epg::flac::archive::mp3::cd::filename(
+    {
+        epg::flac::archive::tags::track_tags_from_disc($album, $tracks, 3),
+        TRACKNUMBER => [3]
+    }
+  ),
+  '03_Murder_Machines_12_inch_remix.mp3',
+  'fa-mp3cd VERSION goes into filename';
+
+is epg::flac::archive::mp3::cd::filename(
+    {
+        epg::flac::archive::tags::track_tags_from_disc($album, $tracks, 4),
+        TRACKNUMBER => [4]
+    }
+  ),
+  '04_testing_both_and_with_leading_0_live_04.mp3',
+  'fa-mp3cd PARTNUMBER with leading 0 and VERSION';
+
+#
+# flac2mp3
+#
+
+is epg::flac::archive::mp3::filename(
+    {
+        epg::flac::archive::tags::track_tags_from_disc($album, $tracks, 1),
+        TRACKNUMBER => [1]
+    }
+  ),
+  'Marillion_An_Hour_Before_It-s_Dark_01_Care_4.mp3',
+  'flac2mp3 PART goes into filename, PARTNUMBER ignored';
+
+is epg::flac::archive::mp3::filename(
+    {
+        epg::flac::archive::tags::track_tags_from_disc($album, $tracks, 2),
+        TRACKNUMBER => [2]
+    }
+  ),
+  'Marillion_An_Hour_Before_It-s_Dark_02_silence.mp3',
+  'flac2mp3 parens in track title omitted';
+
+is epg::flac::archive::mp3::filename(
+    {
+        epg::flac::archive::tags::track_tags_from_disc($album, $tracks, 3),
+        TRACKNUMBER => [3]
+    }
+  ),
+  'Marillion_An_Hour_Before_It-s_Dark_03_Murder_Machines_12_inch_remix.mp3',
+  'flac2mp3 VERSION goes into filename';
+
+is epg::flac::archive::mp3::filename(
+    {
+        epg::flac::archive::tags::track_tags_from_disc($album, $tracks, 4),
+        TRACKNUMBER => [4]
+    }
+  ),
+'Marillion_An_Hour_Before_It-s_Dark_04_testing_both_and_with_leading_0_live_04.mp3',
+  'flac2mp3 PARTNUMBER with leading 0 and VERSION';
index 0e628f5..2015f9e 100644 (file)
@@ -6,8 +6,11 @@ use Test::More tests => 7;
 use Test::Differences;
 use Test::Exception;
 
 use Test::Differences;
 use Test::Exception;
 
-require './tags.pl';
-require './fa-mp3cd';
+use FindBin;
+
+use lib "$FindBin::Bin/../..";
+
+require 'fa-mp3cd';
 
 my @Rising = (
     { title => ['Tarot Woman'] },
 
 my @Rising = (
     { title => ['Tarot Woman'] },
index 3e3a6a8..4e1343d 100644 (file)
@@ -5,8 +5,11 @@ use Test::More tests => 3;
 
 use Test::Differences;
 
 
 use Test::Differences;
 
-require './tags.pl';
-require './fa-mp3cd';
+use FindBin;
+
+use lib "$FindBin::Bin/../..";
+
+require 'fa-mp3cd';
 
 my @Rising = (
     { TITLE => ['Tarot Woman'] },
 
 my @Rising = (
     { TITLE => ['Tarot Woman'] },
@@ -31,23 +34,27 @@ eq_or_diff
          dir => './Rising',
          flac => '1.flac',
          filename => '01_Tarot_Woman.mp3',
          dir => './Rising',
          flac => '1.flac',
          filename => '01_Tarot_Woman.mp3',
-         artist => 'Rainbow',
-         album => 'Rising',
-         date => '1976-05-17',
-         discnumber => [],
-         tracknumber => 1,
-         title => 'Tarot Woman',
+         tags => {
+             artist => 'Rainbow',
+             album => 'Rising',
+             date => '1976-05-17',
+             discnumber => [],
+             tracknumber => 1,
+             title => 'Tarot Woman',
+         }
      },
      {
          dir => './Rising',
          flac => '2.flac',
          filename => '02_Run_With_the_Wolf.mp3',
      },
      {
          dir => './Rising',
          flac => '2.flac',
          filename => '02_Run_With_the_Wolf.mp3',
-         artist => 'Rainbow',
-         album => 'Rising',
-         date => '1976-05-17',
-         discnumber => [],
-         tracknumber => 2,
-         title => 'Run With the Wolf',
+         tags => {
+             artist => 'Rainbow',
+             album => 'Rising',
+             date => '1976-05-17',
+             discnumber => [],
+             tracknumber => 2,
+             title => 'Run With the Wolf',
+         }
      },
     ],
     [epg::flac::archive::mp3::cd::plan('.', @Rising)];
      },
     ],
     [epg::flac::archive::mp3::cd::plan('.', @Rising)];
@@ -58,12 +65,14 @@ eq_or_diff
          dir => 'a/b/fakeal',
          flac => 'file.flac',
          filename => '01_faket.mp3',
          dir => 'a/b/fakeal',
          flac => 'file.flac',
          filename => '01_faket.mp3',
-         artist => 'fakear',
-         album => 'fakeal',
-         date => 0,
-         discnumber => [],
-         tracknumber => 1,
-         title => 'faket',
+         tags => {
+             artist => 'fakear',
+             album => 'fakeal',
+             date => 0,
+             discnumber => [],
+             tracknumber => 1,
+             title => 'faket',
+         }
      }
     ],
     [
      }
     ],
     [
@@ -85,12 +94,14 @@ eq_or_diff
          dir => '/a/b/fakeal',
          flac => 'file.flac',
          filename => '01_faket.mp3',
          dir => '/a/b/fakeal',
          flac => 'file.flac',
          filename => '01_faket.mp3',
-         artist => 'fakear',
-         album => 'fakeal',
-         date => 0,
-         discnumber => [],
-         tracknumber => 1,
-         title => 'faket',
+         tags => {
+             artist => 'fakear',
+             album => 'fakeal',
+             date => 0,
+             discnumber => [],
+             tracknumber => 1,
+             title => 'faket',
+         }
      }
     ],
     [
      }
     ],
     [