X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=lib%2FID3FS%2FAudioFile%2FMp3.pm;h=8ec87ef5032353b8ebf1323d7a937ae64154513c;hb=9ef40433a1ba4044561f5941b07ba0d90a085942;hp=2b90b5dad1a2e84d94e89e98c46333aa25d1e83b;hpb=08717313d5feba3f77f848b6409ec46263ed548e;p=id3fs.git diff --git a/lib/ID3FS/AudioFile/Mp3.pm b/lib/ID3FS/AudioFile/Mp3.pm index 2b90b5d..8ec87ef 100644 --- a/lib/ID3FS/AudioFile/Mp3.pm +++ b/lib/ID3FS/AudioFile/Mp3.pm @@ -18,6 +18,7 @@ package ID3FS::AudioFile::Mp3; use strict; use warnings; +use ID3FS::AudioFile; use MP3::Tag; use MP3::Info; @@ -145,7 +146,7 @@ sub add_tags my($self, @tags)=@_; my $existing=$self->tags(); my @existing=split(/\s*,\s*/, $existing) if($existing); - my @merged=$self->uniq(@tags, @existing); + my @merged=ID3FS::AudioFile::uniq(@tags, @existing); my $genre=join(', ', @merged); return($self->set("genre", $genre)); } @@ -204,14 +205,24 @@ sub delete_genre { shift->delete("genre"); } sub delete_tags { - my($self, @tags)=@_; + my($self, $tags, $delvals)=@_; my $current=$self->tags(); my @current=split(/\s*,\s*/, $current); + my @tags=split(/\s*,\s*/, $tags); my %hash=(); @hash{@current}=(); for my $tag (@tags) { delete($hash{$tag}) if(exists($hash{$tag})); + if($delvals) + { + my $base=($tag =~ /(.*?)\//)[0]; + $base=$tag unless($base); + for my $curtag (keys %hash) + { + delete($hash{$curtag}) if($curtag =~ /^$base\//); + } + } } my @tagsout=sort keys(%hash); my $genre=join(', ', @tagsout); @@ -291,13 +302,6 @@ sub delete } } -sub uniq -{ - my ($self, @things)=@_; - my %hash=(); - @hash{@things}=(); - return(sort keys(%hash)); -} sub channels {