X-Git-Url: https://diplodocus.org/git/flac-archive/blobdiff_plain/92a7ddebe0c11576d91011b0ba58b6c2c057c9ed..HEAD:/fa-mp3cd?ds=sidebyside diff --git a/fa-mp3cd b/fa-mp3cd index 72efdcf..2840016 100755 --- 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;