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 @intags=$self->{audiofile}->tags();
88 return() unless(@intags);
89 @intags = grep { defined($_); } @intags;
90 # combine then split on commas
91 # so multiple comma-delimited tags will work
92 @intags=split(/\s*,\s*/, join(', ', @intags));
95 next unless(length($tag));
96 next unless($tag =~ /\S+/);
97 $tag=$self->sanitise($tag);
98 my ($tagname, $tagval)=($tag, undef);
99 if($tag=~/^([^\/]+)\/(.*)/)
101 ($tagname, $tagval)=($1, $2);
103 push(@outtags, [ $tagname, $tagval ]);
110 my ($self, $text)=@_;
111 $text =~ s/[^[:print:]]//g if(defined($text));
117 my ($self, $text)=@_;
118 $text =~ s/\//-/g if(defined($text));