Graham said:

> As you can probably tell, I'm looking for a script to convert ogg files to
> mp3 en-masse, while retaining filenames and important tag information.

Here's what I use to create mp3s from flac files.  It's basically a quick
hack (doesn't check for errors, no docs or comments etc.), but you might
find enough here to be able to convert it to do what you want.

Usual disclaimers appply, blah blah blah.

#!/usr/local/pkg/perl-5.8.0/bin/perl

use warnings;
use strict;

use File::Find::Rule;

my $flacdir   = "/mnt/hdb1/flac";
my $mp3dir    = "/mnt/hdb1/mp3";

my $lame_opts = "-v -V 7";

my $filter = shift;

my %meta =
(
    ARTIST      => "a",
    ALBUM       => "A",
    TITLE       => "t",
    TRACKNUMBER => "T",
    GENRE       => "g",
    DATE        => "y",
);

my $rule = find(file => name => "*.flac", start => $flacdir);

while (my $flac = $rule->match)
{
    if (my ($dir, $file) = $flac =~ /$flacdir\/(.*)\/(.*)\.flac$/)
    {
        next if defined $filter && $flac !~ /$filter/;
        my $newdir = "$mp3dir/$dir";
        unless (-d $newdir)
        {
            my $mkdir = "mkdir -p \Q$newdir";
            print "$mkdir\n";
            system $mkdir;
        }
        my $mp3 = "$newdir/$file.mp3";
        # print "mp3: ", -M $mp3, " flac: ", -M $flac, "\n";
        if (-e $mp3 && -M $mp3 < -M $flac)
        {
            print "$dir/$file up to date\n";
            next;
        }
        my $meta = `metaflac --export-vc-to=- \Q$flac`;
        my $conv = "flac -d -c \Q$flac\E | lame $lame_opts - \Q$mp3";
        print "$conv\n";
        system $conv;
        my $id3 = "id3v2 ";
        while (my ($m, $i) = each %meta)
        {
            $id3 .= "-$i \Q$1\E " if $meta =~ /$m=(.*)/;
        }
        $id3 .= "\Q$mp3";
        # print "$flac => $mp3\n$conv\n$meta$id3";
        print "$id3\n";
        system $id3;
    }
}

-- 
Paul Johnson - [EMAIL PROTECTED]
http://www.pjcj.net


-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to