From 568f0f82fb4def9061c8586add92fc97636f4d64 Mon Sep 17 00:00:00 2001 From: Eric Gillespie Date: Sun, 20 Mar 2022 16:43:14 -0500 Subject: [PATCH] test flac filename generation --- fa-encode | 26 ++++++++++++++++++++------ t/encode.t | 25 +++++++++++++++++++++++++ 2 files changed, 45 insertions(+), 6 deletions(-) create mode 100644 t/encode.t diff --git a/fa-encode b/fa-encode index 5f98151..10210b9 100755 --- a/fa-encode +++ b/fa-encode @@ -23,7 +23,9 @@ use warnings; use FindBin; use Pod::Usage; -require "$FindBin::Bin/tags.pl"; +use lib $FindBin::Bin; + +require 'tags.pl'; epg::flac::archive::tags->import( qw[ read_tags @@ -32,6 +34,18 @@ epg::flac::archive::tags->import( two_digits ]); +sub filename { + my %a = @_; + my @discnumber = @{$a{discnumber} // []}; + my $tracknumber = $a{tracknumber} // die('tracknumber required'); + my $title = $a{title} // die('title required'); + join('-', + (map { two_digits($_) } @discnumber), + two_digits($tracknumber), + mangle_for_file_name($title) . '.flac', + ) +} + sub main { my $input_directory = shift || pod2usage(); my $fn = "$input_directory/tags"; @@ -85,17 +99,17 @@ sub main { $track->{DISCNUMBER} = \@discnumber; } my $title = join(' ', @{$track->{TITLE}}); - my $tracknum_s = two_digits($tracknum); my $fn = join('/', $dir, - join('_', - (map { two_digits($_) } @discnumber), - $tracknum_s, - mangle_for_file_name($title) . '.flac', + filename( + discnumber => \@discnumber, + tracknumber => $tracknum, + title => $title, ), ); -e $fn && die("cowardly refusing to clobber $fn"); my @pictures = ('--picture', quote('3|image/jpeg|||cover.front.jpeg')); # TODO optional + my $tracknum_s = two_digits($tracknum); say(join(' ', 'flac -o', quote($fn), diff --git a/t/encode.t b/t/encode.t new file mode 100644 index 0000000..06b7cea --- /dev/null +++ b/t/encode.t @@ -0,0 +1,25 @@ +use v5.12; +use warnings; + +use Test::More tests => 2; + +use FindBin; + +use lib "$FindBin::Bin/.."; + +require 'tags.pl'; +require 'fa-encode'; + +is + '02-03-the_title.flac', + epg::flac::archive::encode::filename( + discnumber => [2], + tracknumber => 3, + title => 'the title' + ), + 'with discnumber'; + +is + '01-the_title.flac', + epg::flac::archive::encode::filename(tracknumber => 1, title => 'the title'), + 'without discnumber'; -- 2.56.0