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
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";
$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),
--- /dev/null
+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';