X-Git-Url: https://erislabs.net/gitweb/?a=blobdiff_plain;f=lib%2FID3FS%2FAudioFile.pm;h=ffd78d63d4e6240a0f76c8e098aef9ab2a8130ab;hb=9ef40433a1ba4044561f5941b07ba0d90a085942;hp=5c4598463662ae1a66a9a768fd3ef69d2dd7b36c;hpb=c8be4bd59dada9948d921e3ec5c49baea26fc910;p=id3fs.git diff --git a/lib/ID3FS/AudioFile.pm b/lib/ID3FS/AudioFile.pm index 5c45984..ffd78d6 100644 --- a/lib/ID3FS/AudioFile.pm +++ b/lib/ID3FS/AudioFile.pm @@ -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)=@_; @@ -164,4 +173,27 @@ sub stripslashes return $text; } +# This location for these subs is pretty much arbitrary +sub uniq +{ + # class method + shift if(ref($_[0]) eq "ID3FS::AudioFile"); + my (@things)=@_; + my %hash=(); + @hash{@things}=(); + return(sort keys(%hash)); +} + +sub list_remove +{ + my($remove, $list)=@_; + return(()) unless($list && @$list); + my @list=@$list; + for my $tag (@$remove) + { + @list=grep { $_ ne $tag; } @list; + } + return(@list); +} + 1;