The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Template::Plugin::MP3 - Interface to the MP3::Info Module

SYNOPSIS

    [% USE mp3 = MP3("Montana.mp3") %]

    [% mp3.title %]
    [% mp3.album %]

    # perldoc MP3::Info for more ideas

DESCRIPTION

Template::Plugin::MP3 provides a simple wrapper for using MP3::Info in object oriented mode; see MP3::Info for more details.

CONSTRUCTOR and CONFIGURATION

Template::Plugin::MP3 takes a filename as its primary argument:

    [% USE MP3("Tryin_To_Grow_A_Chin.mp3") %]

Optional configuration info can also be specified in the constructor:

    [% USE MP3("Camarillo_Brillo.mp3", utf8 => 1, dir => "/mp3") %]

The name of the file can also be specified as a named parameter (name):

    [% USE MP3(name => "A_Token_Of_My_Extreme.mp3", dir => "/mp3") %]

Template::Plugin::MP3 understands the following options:

name

The name of the MP3 file. Note that if both a positional argument and a name parameter are passed the positional argument will take precedence.

dir

Specify a base directory name; will be prepended to the filename, if it is defined.

utf8

Determines whether results should be returned in UTF-8, as handled by MP3::Info's use_mp3_utf8() function. See "use_mp3_utf8" in MP3::Info. Note that this requires Unicode::String.

If the constructor cannot create an instance using the filename passed, a plugin.mp3 Exception is thrown, which will need to be caught appropriately:

    [% TRY %]
        [% USE mp3 = MP3("Willie The Pimp.mp3") %]
    [% CATCH plugin.mp3 %]
        Can't find that MP3; are you sure you spelled it right?
    [% CATCH %]
        Unexpected exception: [% error %]
    [% END %]

METHODS

Template::Plugin::MP3 provides the following, mostly intuitive, methods:

file

Name of the file.

artist

Name of the artist.

album

Name of the album.

bitrate

Bitrate at which the mp3 was encoded.

size

Size of the file, in bytes.

time, secs, mm, ss, ms

Length of the song, in various permutations. For example:

time

03:37

secs

217.0253125

mm

3

ss

27

ms

25.3125000000125

genre

Genre of the MP3.

tagversion

Full name of the version of the MP3 tag, e.g. "ID3v1.1"

version

Version of the MP3 tag: 1 or 2

MP3::Info defines some other fields that I don't grok; try

    [% MP3.Dump %]

to see them all.

Of course, all of the above methods don't return the advertised value if the tag being read does not contain useful information.

OTHER STUFF

Template::Plugin::MP3 provides access to the @mp3_genres and @winamp_genres arrays via the mp3_genres() and winamp_genres() class methods, or collectively through the genres() class method:

    [% FOREACH genre = MP3.genres %]
       * [% genre;
    END %]

AUTHORS

darren chamberlain <darren@cpan.org>

Doug Gorley <douggorley@shaw.ca>

COPYRIGHT

(C) 2003 darren chamberlain

This library is free software; you may distribute it and/or modify it under the same terms as Perl itself.

SEE ALSO

Template::Plugin, MP3::Info