From 19d8ec06b9d280881f8065abe8bd7d8db28f5eb8 Mon Sep 17 00:00:00 2001 From: Ian Beckwith Date: Mon, 1 Nov 2010 21:00:34 +0000 Subject: [PATCH] id3fs-tag: fix removing all tags individually --- lib/ID3FS/AudioFile/Mp3.pm | 35 ++++++++++++++++++++++++++++++++--- lib/ID3FS/DB.pm | 1 + 2 files changed, 33 insertions(+), 3 deletions(-) diff --git a/lib/ID3FS/AudioFile/Mp3.pm b/lib/ID3FS/AudioFile/Mp3.pm index 423737c..bcbd227 100644 --- a/lib/ID3FS/AudioFile/Mp3.pm +++ b/lib/ID3FS/AudioFile/Mp3.pm @@ -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"); diff --git a/lib/ID3FS/DB.pm b/lib/ID3FS/DB.pm index 794b77c..48b5a01 100644 --- a/lib/ID3FS/DB.pm +++ b/lib/ID3FS/DB.pm @@ -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$/) { -- 2.11.0