new special tags: channels, samplerate, bitrate
[id3fs.git] / lib / ID3FS / AudioFile.pm
index 5c45984..e020b43 100644 (file)
@@ -29,26 +29,26 @@ sub new
     my $self={};
     bless($self,$class);
 
-    my $path=shift;
-    my $ext=($path=~/.*\.(.*)/)[0];
+    $self->{path}=shift;
+    my $ext=($self->{path}=~/.*\.(.*)/)[0];
     return undef unless($ext);
     my $me=shift;
     $ext=lc($ext);
     if($ext eq "mp3")
     {
-       $self->{audiofile}=ID3FS::AudioFile::Mp3->new($path);
+       $self->{audiofile}=ID3FS::AudioFile::Mp3->new($self->{path});
     }
     elsif($ext eq "ogg")
     {
-       $self->{audiofile}=ID3FS::AudioFile::Ogg->new($path);
+       $self->{audiofile}=ID3FS::AudioFile::Ogg->new($self->{path});
     }
     elsif($ext eq "flac")
     {
-       $self->{audiofile}=ID3FS::AudioFile::Flac->new($path);
+       $self->{audiofile}=ID3FS::AudioFile::Flac->new($self->{path});
     }
     else
     {
-       print("$me: $path: Unknown extension: $ext\n");
+       print("$me: $self->{path}: Unknown extension: $ext\n");
        return undef;
     }
     return $self;
@@ -77,6 +77,7 @@ sub v1genre   { return(shift->set("v1genre", @_));  }
 sub comment   { return(shift->set("comment", @_));  }
 sub audiotype { return(shift->set("audiotype"));    }
 sub haspic    { return(shift->set("haspic"));       }
+sub path      { return(shift->{path});              }
 
 sub delete_artist   { shift->{audiofile}->delete_artist();   }
 sub delete_album    { shift->{audiofile}->delete_album();    }
@@ -87,7 +88,10 @@ sub delete_v1genre  { shift->{audiofile}->delete_v1genre();  }
 sub delete_comment  { shift->{audiofile}->delete_comment();  }
 sub delete_all      { shift->{audiofile}->delete_all();      }
 sub delete_genre    { shift->{audiofile}->delete_genre();    }
-sub delete_tags     { shift->{audiofile}->delete_tags();     }
+sub delete_tags     { shift->{audiofile}->delete_tags(@_);   }
+sub channels        { shift->{audiofile}->channels();        }
+sub bitrate         { shift->{audiofile}->bitrate();         }
+sub samplerate      { shift->{audiofile}->samplerate(@_);    }
 
 sub year
 {
@@ -118,11 +122,11 @@ sub format_year
     return $year;
 }
 
-
 sub add_tags
 {
     my($self, $tags)=@_;
-    die("FIXME: implement add_tags()\n");
+    my @tags=split(/\s*,\s*/, $tags);
+    $self->{audiofile}->add_tags(@tags);
 }
 
 sub tags
@@ -150,6 +154,11 @@ sub tags
     return @outtags;
 }
 
+sub write
+{
+    shift->{audiofile}->write();
+}
+
 sub sanitise
 {
     my ($self, $text)=@_;