From e82f8f9ad32a0db569913c2bacf2c0e86e7bf0e3 Mon Sep 17 00:00:00 2001 From: Eric Gillespie Date: Sun, 6 Mar 2022 16:47:14 -0600 Subject: [PATCH] Fix single-digit track numbers in flac2mp3. --- fa-encode | 5 +++-- flac2mp3 | 5 +++-- t/read_tags.t | 1 + t/two_digits.t | 21 +++++++++++++++++++++ tags.pl | 10 ++++++++++ 5 files changed, 38 insertions(+), 4 deletions(-) create mode 100644 t/two_digits.t diff --git a/fa-encode b/fa-encode index e1d3a2c..1401775 100755 --- a/fa-encode +++ b/fa-encode @@ -28,6 +28,7 @@ epg::flac::archive::tags->import( read_tags mangle_for_file_name quote + two_digits ]); sub main { @@ -82,11 +83,11 @@ sub main { $track->{DISCNUMBER} = \@discnumber; } my $title = join(' ', @{$track->{TITLE}}); - my $tracknum_s = sprintf('%02d', $tracknum); + my $tracknum_s = two_digits($tracknum); my $fn = join('/', $dir, join('_', - (map { sprintf('%02d', $_) } @discnumber), + (map { two_digits($_) } @discnumber), $tracknum_s, mangle_for_file_name($title) . '.flac', ), diff --git a/flac2mp3 b/flac2mp3 index 5115b72..b4126e2 100755 --- a/flac2mp3 +++ b/flac2mp3 @@ -62,6 +62,7 @@ epg::flac::archive::tags->import( read_tags mangle_for_file_name quote + two_digits ]); sub flac2mp3 { @@ -116,8 +117,8 @@ sub flac2mp3 { join(' ', $artist, $album, - (map { sprintf('%02d', $_) } @{$discnumber}), - $tracknumber, + (map { two_digits($_) } @{$discnumber}), + two_digits($tracknumber), $title, )) . '.mp3' diff --git a/t/read_tags.t b/t/read_tags.t index 653f35a..42a640b 100644 --- a/t/read_tags.t +++ b/t/read_tags.t @@ -2,6 +2,7 @@ use v5.12; use warnings; use Test::Simple tests => 3; + use Test::Differences; require './tags.pl'; diff --git a/t/two_digits.t b/t/two_digits.t new file mode 100644 index 0000000..dcc0939 --- /dev/null +++ b/t/two_digits.t @@ -0,0 +1,21 @@ +use v5.12; +use warnings; + +use Test::More tests => 5; + +use Test::Exception; + +require './tags.pl'; +epg::flac::archive::tags->import('two_digits'); + +is two_digits(0), '00', + '0 -> 00'; + +is two_digits(1), '01', + '1 -> 01'; + +throws_ok { two_digits(111) } qr/111 won't fit into two digits/; + +throws_ok { two_digits(-31) } qr/-31 won't fit into two digits/; + +is two_digits(''), '00'; diff --git a/tags.pl b/tags.pl index 25c7d3a..2df6458 100644 --- a/tags.pl +++ b/tags.pl @@ -57,8 +57,18 @@ our @EXPORT_OK = qw[ read_tags mangle_for_file_name quote + two_digits ]; +sub two_digits { + my $n = shift; + my $s = sprintf('%02d', $n); + if (length($s) != 2) { + die("$n won't fit into two digits") + } + $s +} + sub read_tags { my $fh = shift; my %album; -- 2.56.0