X-Git-Url: https://diplodocus.org/git/flac-archive/blobdiff_plain/92a7ddebe0c11576d91011b0ba58b6c2c057c9ed..cca5647c8aab40cfad0d1c4eeccbc75c4f6b8142:/flac2mp3 diff --git a/flac2mp3 b/flac2mp3 index fd0b148..4dbb927 100755 --- a/flac2mp3 +++ b/flac2mp3 @@ -55,67 +55,86 @@ use warnings; use File::Temp; use FindBin; -require "$FindBin::Bin/tags.pl"; +use lib $FindBin::Bin; + +require 'tags.pl'; epg::flac::archive::tags->import( qw[ - track_tags - read_tags_metaflac - mangle_for_file_name - quote - two_digits - ]); + track_tags + read_tags_metaflac + mangle_for_file_name + quote + two_digits + ] +); sub flac2mp3 { my $mp3 = shift; my $flac = shift; my $tags = shift; + + my @version; + if (defined($tags->{version})) { + @version = ('(' . $tags->{version} . ')'); + } + # This is an old TODO; what's wrong with --ty ? # TODO: Look at TDOR, TDRL, TDRC for date. - say(join(' ', - 'flac', - '-cd', - quote($flac), - '|', - 'lame', - '--id3v2-only', - '--id3v2-latin1', - '--pad-id3v2-size', 0, - '--preset standard', - '--ta', - quote($tags->{artist}), - '--tl', - quote($tags->{album}), - '--tn', - quote($tags->{tracknumber}), - '--tt', - quote($tags->{title}), - '--ty', - quote($tags->{date}), - '$pic_options', - #(map { ('--tv', quote("TPE2=$_")) } @{$albumartist}), - (map { ('--tv', quote("TPOS=$_")) } @{$tags->{discnumber}}), - '-', - quote($mp3), - )) + say( + join( + ' ', + 'flac', + '-cd', + quote($flac), + '|', + 'lame', + '--id3v2-only', + '--id3v2-latin1', + '--pad-id3v2-size', 0, + '--preset standard', + '--ta', + quote($tags->{artist}), + '--tl', + quote($tags->{album}), + '--tn', + quote($tags->{tracknumber}), + '--tt', + quote(join(' ', $tags->{title}, @version)), + '--ty', + quote($tags->{date}), + '$pic_options', + + #(map { ('--tv', quote("TPE2=$_")) } @{$albumartist}), + (map { ('--tv', quote("TPOS=$_")) } @{$tags->{discnumber}}), + '-', + quote($mp3), + ) + ); +} + +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.$$"'); - 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, - ); + say('metaflac --export-picture-to=flac2mp3.cover.$$ ', + quote($flac), ' && pic_options="--ti flac2mp3.cover.$$"'); + + # 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.$$'); @@ -124,7 +143,7 @@ sub main { } if (!caller) { - exit(main(@ARGV)) + exit(main(@ARGV)); } 1;