use strict;
use warnings;
+use ID3FS::AudioFile;
use MP3::Tag;
use MP3::Info;
return $thing;
}
-sub year { return(shift->set("year", @_)); }
-sub artist { return(shift->set("artist", @_)); }
-sub album { return(shift->set("album", @_)); }
-sub track { return(shift->set("title", @_)); }
-sub tracknum { return(shift->set("track", @_)); }
-sub comment { return(shift->set("comment", @_)); }
+sub year { return(shift->set("year", @_)); }
+sub artist { return(shift->set("artist", @_)); }
+sub album { return(shift->set("album", @_)); }
+sub track { return(shift->set("title", @_)); }
+sub tracknum { return(shift->set("track", @_)); }
+sub comment { return(shift->set("comment", @_)); }
sub audiotype { return "mp3"; }
sub haspic { return undef; } # NEXTVERSION
+# we only set v2 genre
+sub genre
+{
+ my ($self, $value)=@_;
+ if($value)
+ {
+ if(exists($self->{mp3tag}->{ID3v2}))
+ {
+ $self->{mp3tag}->{ID3v2}->remove_frame("TCON");
+ }
+ else
+ {
+ $self->{mp3tag}->new_tag("ID3v2");
+ }
+ $self->{mp3tag}->{ID3v2}->add_frame("TCON", $value);
+
+ }
+ return($self->{mp3tag}->{ID3v2}->genre());
+}
+
sub v1genre
{
my($self, $val)=@_;
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));
}
}
else
{
- $self->{mp3tag}->{ID3v1}->remove_tag;
+ $self->{mp3tag}->{ID3v1}->write_tag;
}
}
if(exists($self->{mp3tag}->{ID3v2}))
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);
}
}
-sub uniq
-{
- my ($self, @things)=@_;
- my %hash=();
- @hash{@things}=();
- return(sort keys(%hash));
-}
-
sub channels
{