/usr/local/CPAN/MP3-Album/MP3/Album/Layout/Fetcher/Tag.pm
package MP3::Album::Layout::Fetcher::Tag;
use strict;
use MP3::Album::Layout;
sub fetch {
my $c = shift;
my %a = @_;
my @tracks = $a{album}->tracks;
my %artists = ();
my %album_name = ();
my %genres = ();
my $artist = 'Various Artists';
my $album = 'Unknown';
my $genre = 'Unknown';
my $layout = MP3::Album::Layout->new();
foreach my $t (@tracks) {
$artists{lc($t->{info}->{ARTIST})}++ if $t->{info}->{ARTIST};
$album_name{lc($t->{info}->{ALBUM})}++ if $t->{info}->{ALBUM};
$genres{lc($t->{info}->{GENRE})}++ if $t->{info}->{GENRE};
}
$artist = $tracks[0]->{info}->{ARTIST} if (scalar(keys(%artists)) == 1);
$album = $tracks[0]->{info}->{ALBUM} if (scalar(keys(%album_name)) == 1);
$genre = $tracks[0]->{info}->{GENRE} if (scalar(keys(%genres)) == 1);
$layout->artist($artist);
$layout->title($album);
$layout->genre($genre);
foreach my $t (@tracks) {
my $t_artist = $artist;
$t_artist = $t->{info}->{ARTIST} if $artist eq 'Various Artists';
$layout->add_track( artist => $t_artist, title => $t->{info}->{TITLE} );
}
return wantarray ? ( $layout ) : [ $layout ];
}
1;