Index: CPAN/MP3/Info.pm =================================================================== --- CPAN/MP3/Info.pm (revision 4144) +++ CPAN/MP3/Info.pm (working copy) @@ -567,6 +567,9 @@ if (exists $v2->{$id}) { if ($id =~ /^TCON?$/ && $v2->{$id} =~ /^.?\((\d+)\)/) { $info{$hash->{$id}} = $mp3_genres[$1]; + } elsif ($id =~ /^UFID?$/) { + my @ufid_list = split(/\0/, $v2->{$id}); + $info{$hash->{$id}} = $ufid_list[1] if ($#ufid_list > 0); } else { my $data1 = $v2->{$id}; @@ -581,7 +584,8 @@ if ($id =~ /^COMM?$/) { my($newdata) = grep /^(....\000)/, @{$data1}; $data1 = $newdata || $data1->[0]; - } else { + } elsif (!($id =~ /^TXXX?$/)) { + # We can get multiple User Defined Text frames in a mp3 file $data1 = $data1->[0]; } } @@ -653,7 +657,12 @@ $info{$hash->{$id}} = [ $info{$hash->{$id}}, $data ]; } } else { - $info{$hash->{$id}} = $data; + if ($id eq 'TXXX') { + my ($key, $val) = split(/\0/, $data); + $info{$key} = $val; + } else { + $info{$hash->{$id}} = $data; + } } } } @@ -1454,6 +1463,9 @@ 'TCON' => 'GENRE', 'TPOS' => 'SET', 'APIC' => 'PIC', + # v2.3 tags - needed for MusicBrainz + 'UFID' => 'Unique file identifier', + 'TXXX' => 'User defined text information frame', ); %v2_tag_names = (