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=shift;
if(exists($self->{mp3tag}->{ID3v1}))
{
- $self->{mp3tag}->{ID3v1}->write_tag;
+ my $del=1;
+ my $artist=$self->{mp3tag}->{ID3v1}->artist();
+ $del=0 if($artist && $artist =~ /\S+/);
+ my $album=$self->{mp3tag}->{ID3v1}->album();
+ $del=0 if($album && $album =~ /\S+/);
+ my $track=$self->{mp3tag}->{ID3v1}->title();
+ $del=0 if($track && $track =~ /\S+/);
+ my $tracknum=$self->{mp3tag}->{ID3v1}->track();
+ $del=0 if($tracknum && $tracknum !~ /^0+$/);
+ my $genre=$self->{mp3tag}->{ID3v1}->genre();
+ $del=0 if($genre && $genre =~ /\S+/);
+ my $comment=$self->{mp3tag}->{ID3v1}->comment();
+ $del=0 if($comment && $comment =~ /\S+/);
+ my $year=$self->{mp3tag}->{ID3v1}->year();
+ $del=0 if($year && $year =~ /\S+/ && $year !~ /^0+$/);
+ if($del)
+ {
+ $self->{mp3tag}->{ID3v1}->remove_tag;
+ }
+ else
+ {
+ $self->{mp3tag}->{ID3v1}->write_tag;
+ }
}
if(exists($self->{mp3tag}->{ID3v2}))
{
- $self->{mp3tag}->{ID3v2}->write_tag;
+ my $frames=$self->{mp3tag}->{ID3v2}->get_frame_ids();
+ if($frames && scalar(keys(%$frames)))
+ {
+ $self->{mp3tag}->{ID3v2}->write_tag;
+ }
+ else
+ {
+ $self->{mp3tag}->{ID3v2}->remove_tag;
+ }
}
}
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);
if(exists($self->{mp3tag}->{ID3v2}))
{
- print "2: remove: $thing\n";
if($thing eq "artist")
{
$self->{mp3tag}->{ID3v2}->remove_frame("TPE1");
return(sort keys(%hash));
}
-
sub channels
{
my($self)=@_;