- #
- # From: Per Bolmstedt <tomten@kol14.com>
- #
- # AC> If someone has scripts that read input ID3 tags and convert
- # AC> them to args for lame (which then encodes the tags into the
- # AC> output files), let me know, too!
- #
- # This is easy peasy using Perl. Especially using Chris Nandor's excellent
- # MP3::Info package (available on CPAN). Here's a program I just wrote that
- # I think does what you want. Invoke it with "<program> <file> [options]"
- # (where the options can include an output filename), like for example:
- #
- # lameid3.pl HQ.mp3 LQ.mp3 -fv
- #
- # (Note how the syntax differs from that of Lame's.) The program will
- # extract ID3 tags from the input file and invoke Lame with arguments for
- # including them. (This program has not undergone any real testing..)
-
- use MP3::Info;
- use strict;
-
- my %flds = (
- TITLE => 'tt',
- ARTIST => 'ta',
- ALBUM => 'tl',
- YEAR => 'ty',
- COMMENT => 'tc',
- GENRE => 'tg',
- TRACKNUM => 'tn'
- );
-
- my $f = shift @ARGV;
- my $s = "lame ${f} " . &makeid3args( $f ) . join ' ', @ARGV;
- print STDERR "[${s}]\n";
- system( $s );
-
- sub makeid3args( $ )
- {
- my $s;
- if ( my $tag = get_mp3tag( @_->[ 0 ] ) )
- {
- for ( keys %flds )
- {
- if ( $tag->{ $_ } )
- {
- $s .= sprintf(
- "--%s \"%s\" ",
- %flds->{ $_ },
- $tag->{ $_ } );
- }
- }
- }
- return $s || "";
- }
-