id3fs-tag: set genre
[id3fs.git] / lib / ID3FS / AudioFile / Mp3.pm
index bcbd227..2b90b5d 100644 (file)
@@ -69,16 +69,36 @@ sub choose
     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)=@_;
@@ -156,7 +176,7 @@ sub write
        }
        else
        {
-           $self->{mp3tag}->{ID3v1}->remove_tag;
+           $self->{mp3tag}->{ID3v1}->write_tag;
        }
     }
     if(exists($self->{mp3tag}->{ID3v2}))
@@ -279,7 +299,6 @@ sub uniq
     return(sort keys(%hash));
 }
 
-
 sub channels
 {
     my($self)=@_;