]>
diplodocus.org Git - flac-archive/blob - flac2mp3
5 B<flac2mp3> - transcode FLAC file to MP3 files
9 B<flac2mp3> [B<--lame-options> I<lame-options>] [B<-q>] [B<-v>] I<file> [...]
13 B<flac2mp3> transcodes the FLAC files I<file> to MP3 files. I<file>
14 may be the kind of FLAC file B<fa-flacd> generates. That is, it
15 contains a cue sheet, one TITLE tag per track listed therein, and
16 ARTIST, ALBUM, and DATE tags.
18 Note that lame is retarded, and parses B<LANG> directly itself! So, in order
19 for it to transcode textual tags, you must specify the encoding in LANG, e.g.
26 =item B<--lame-options> I<lame-options>
28 Pass I<lame-options> to B<lame>. This ends up being passed to the
29 shell, so feel free to take advantage of that. You'll almost
30 certainly have to put I<lame-options> in single quotes.
32 =item B<-q> [B<--quiet>]
34 Suppress status information. This option is passed along to B<flac>
37 =item B<-v> [B<--verbose>]
39 Print diagnostic information. This option is passed along to B<flac>
46 Written by Eric Gillespie <epg@pretzelnet.org>.
50 package epg
::flac
::archive
::mp3
;
58 require "$FindBin::Bin/tags.pl";
59 epg
::flac
::archive
::tags-
>import(
69 my $quoted_flac = quote
($a{flac
});
71 say('if metaflac --export-picture-to=flac2mp3.cover.$$ ', $quoted_flac, '; then');
72 say(' pic_options="--ti flac2mp3.cover.$$"');
75 # This is an old TODO; what's wrong with --ty ?
76 # TODO: Look at TDOR, TDRL, TDRC for date.
85 '--pad-id3v2-size', 0,
98 (map { ('--tv', quote
("TPE2=$_")) } @{$a{albumartist
}}),
99 (map { ('--tv', quote
("TPOS=$_")) } @{$a{discnumber
}}),
102 mangle_for_file_name
(
106 (map { sprintf('%02d', $_) } @{$a{discnumber
}}),
113 say('unset pic_options');
114 say('rm -f flac2mp3.cover.$$');
117 sub read_tags_metaflac
{
119 open(my $fh, '-|', 'metaflac', '--no-utf8-convert', '--export-tags-to=-', $fn) || die("metalfac: $!");
120 my @result = read_tags
($fh);
123 die("metaflac exited $?")
125 die("close(metaflac): $!")
132 my ($tags) = read_tags_metaflac
($fn);
133 my ($album, $artist, $date, $discnumber) = disc_tags
($tags);
135 # TODO resurrect whole-disc FLAC?
136 # Stupid hack: only a single-track file should have the
137 # TRACKNUMBER tag, so use it if set for the first pass through
138 # the loop. At the end of the loop, we'll set $track for the
139 # next run, so this continues to work for multi-track files.
145 my $tracknumber = epg
::flac
::archive
::tags
::one
(TRACKNUMBER
=> $tags);
146 my $title = epg
::flac
::archive
::tags
::one
(TITLE
=> $tags);
147 # TODO restore PARTNUMBER and VERSION net time i need them
152 discnumber
=> $discnumber,
153 track
=> $tracknumber,