/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;