1 package ID3FS::AudioFile;
5 use ID3FS::AudioFile::Mp3;
6 use ID3FS::AudioFile::Ogg;
7 use ID3FS::AudioFile::Flac;
12 my $class=ref($proto) || $proto;
17 my $ext=($path=~/.*\.(.*)/)[0];
18 return undef unless($ext);
22 $self->{audiofile}=ID3FS::AudioFile::Mp3->new($path);
26 $self->{audiofile}=ID3FS::AudioFile::Ogg->new($path);
30 $self->{audiofile}=ID3FS::AudioFile::Flac->new($path);
34 print("Unknown extension: $ext\n");
43 return $self->sanitise($self->stripslashes($self->{audiofile}->artist()));
49 return $self->sanitise($self->stripslashes($self->{audiofile}->album()));
55 return $self->sanitise($self->stripslashes($self->{audiofile}->audiotype()));
62 # return $self->{audiofile}->haspic();
68 return $self->sanitise($self->stripslashes($self->{audiofile}->v1genre()));
74 my $year=($self->sanitise(
76 $self->{audiofile}->year())));
87 my @tags=$self->{audiofile}->tags();
88 return({}) unless(@tags);
92 @tags = grep { defined($_); } @tags;
93 # combine then split on commas
94 # so multiple comma-delimited tags will work
95 @tags=split(/\s*,\s*/, join(', ', @tags));
98 next unless(length($tag));
99 next unless($tag =~ /\S+/);
100 $tag=$self->sanitise($tag);
102 if($tag=~/([^\/]+)\/(.*)/)
105 my $tagval = $self->stripslashes($2);
106 $tags->{$tagname}=$tagval;
119 my ($self, $text)=@_;
120 $text =~ s/[^[:print:]]//g if(defined($text));
126 my ($self, $text)=@_;
127 $text =~ s/\//-/g if(defined($text));