sub get
{
- my ($self, $tag, $verbose)=@_;
- if(exists($self->{tags}->{$tag}) &&
- defined($self->{tags}->{$tag}) &&
- length($self->{tags}->{$tag}) &&
- $self->{tags}->{$tag} =~ /\S+/)
+ my ($self, $tag, $complain)=@_;
+ for my $key (keys %{$self->{tags}})
{
- my $val=$self->{tags}->{$tag};
- $val =~ s/\//-/g; # drop slashes
- return $val;
- }
- else
- {
- warn("$self->{path}: no $tag defined in FLAC comments\n") if($verbose);
- return undef;
+ if($key =~ /$tag/i &&
+ defined($self->{tags}->{$key}) &&
+ length($self->{tags}->{$key}) &&
+ $self->{tags}->{$key} =~ /\S+/)
+ {
+ my $val=$self->{tags}->{$key};
+ $val =~ s/\//-/g; # drop slashes
+ return $val;
+ }
}
+ warn("$self->{path}: no $tag defined in FLAC comments\n") if($complain);
+ return undef;
}
sub artist { shift->get("ARTIST", 1); }
sub tags
{
my $self=shift;
- my $genre=$self->get("GENRE");
- return({}) unless($genre);
- my @tags=split(/\s*,\s*/, $genre);
+ my @tags=();
+ my $tags={};
+ for my $key (keys %{$self->{tags}})
+ {
+ if($key =~ /genre/i &&
+ defined($self->{tags}->{$key}) &&
+ length($self->{tags}->{$key}) &&
+ $self->{tags}->{$key} =~ /\S+/)
+ {
+ push(@tags, $self->{tags}->{$key});
+ }
+ }
+ # combine then split on commas
+ # so multiple comma-delimited tags will work
+ @tags=split(/\s*,\s*/, join(', ', @tags));
for my $tag (@tags)
{
if($tag=~/([^\/]+)\/(.*)/)