id3fs-tag: fix removing all tags individually
[id3fs.git] / lib / ID3FS / AudioFile / Mp3.pm
index b4f340c..bcbd227 100644 (file)
@@ -133,7 +133,44 @@ sub add_tags
 sub write
 {
     my $self=shift;
-    $self->{mp3tag}->update_tags();
+    if(exists($self->{mp3tag}->{ID3v1}))
+    {
+       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}->remove_tag;
+       }
+    }
+    if(exists($self->{mp3tag}->{ID3v2}))
+    {
+       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_artist   { shift->delete("artist");  }
@@ -201,7 +238,6 @@ sub delete
 
     if(exists($self->{mp3tag}->{ID3v2}))
     {
-       print "2: remove: $thing\n";
        if($thing eq "artist")
        {
            $self->{mp3tag}->{ID3v2}->remove_frame("TPE1");