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($self->stripslashes($self->{audiofile}->year()));
75 if(defined($year) && $year =~/(\d{4})/)
85 my @tags=$self->{audiofile}->tags();
86 return({}) unless(@tags);
90 @tags = grep { defined($_); } @tags;
91 # combine then split on commas
92 # so multiple comma-delimited tags will work
93 @tags=split(/\s*,\s*/, join(', ', @tags));
96 next unless(length($tag));
97 next unless($tag =~ /\S+/);
98 $tag=$self->sanitise($tag);
100 if($tag=~/([^\/]+)\/(.*)/)
103 my $tagval = $self->stripslashes($2);
104 $tags->{$tagname}=$tagval;
117 my ($self, $text)=@_;
118 $text =~ s/[^[:print:]]//g if(defined($text));
124 my ($self, $text)=@_;
125 $text =~ s/\//-/g if(defined($text));