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);
23 $self->{audiofile}=ID3FS::AudioFile::Mp3->new($path);
27 $self->{audiofile}=ID3FS::AudioFile::Ogg->new($path);
31 $self->{audiofile}=ID3FS::AudioFile::Flac->new($path);
35 print("$me: $path: Unknown extension: $ext\n");
44 return $self->sanitise($self->stripslashes($self->{audiofile}->artist()));
50 return $self->sanitise($self->stripslashes($self->{audiofile}->album()));
56 return $self->sanitise($self->stripslashes($self->{audiofile}->audiotype()));
63 # return $self->{audiofile}->haspic();
69 return $self->sanitise($self->stripslashes($self->{audiofile}->v1genre()));
75 my $year=$self->sanitise($self->stripslashes($self->{audiofile}->year()));
76 if(defined($year) && $year =~/(\d{4})/)
86 my @tags=$self->{audiofile}->tags();
87 return({}) unless(@tags);
91 @tags = grep { defined($_); } @tags;
92 # combine then split on commas
93 # so multiple comma-delimited tags will work
94 @tags=split(/\s*,\s*/, join(', ', @tags));
97 next unless(length($tag));
98 next unless($tag =~ /\S+/);
99 $tag=$self->sanitise($tag);
101 if($tag=~/([^\/]+)\/(.*)/)
104 my $tagval = $self->stripslashes($2);
105 $tags->{$tagname}=$tagval;
118 my ($self, $text)=@_;
119 $text =~ s/[^[:print:]]//g if(defined($text));
125 my ($self, $text)=@_;
126 $text =~ s/\//-/g if(defined($text));