id3fs-tag: fix removing all tags individually
authorIan Beckwith <ianb@erislabs.net>
Mon, 1 Nov 2010 21:00:34 +0000 (21:00 +0000)
committerIan Beckwith <ianb@erislabs.net>
Mon, 1 Nov 2010 21:00:34 +0000 (21:00 +0000)
lib/ID3FS/AudioFile/Mp3.pm
lib/ID3FS/DB.pm

index 423737c..bcbd227 100644 (file)
@@ -135,11 +135,41 @@ sub write
     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}->remove_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;
+       }
     }
 }
 
@@ -208,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");
index 794b77c..48b5a01 100644 (file)
@@ -266,6 +266,7 @@ sub add
     }
 
     $year="UNKNOWN" if(!$self->ok($year) || $year =~ /^0+$/);
+    $year+=1900 if($year=~/^\d\d$/);
     $self->add_tag($file_id, "year", $year);
     if($year=~/^(\d\d\d)\d$/)
     {