+require "$FindBin::Bin/tags.pl";
+epg::flac::archive::tags->import(
+ qw[
+ track_tags
+ read_tags_metaflac
+ mangle_for_file_name
+ quote
+ two_digits
+ ]
+);
+
+sub flac2mp3 {
+ my $mp3 = shift;
+ my $flac = shift;
+ my $tags = shift;
+
+ # 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),
+ )
+ );
+}
+
+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('unset pic_options');
+ }
+ say('rm -f flac2mp3.cover.$$');