print("Unknown extension: $ext\n");
return undef;
}
+ return $self;
}
sub artist
{
- return shift->{audiofile}->artist(@_);
+ my $self=shift;
+ return $self->sanitise($self->stripslashes($self->{audiofile}->artist()));
}
+
sub album
{
- return shift->{audiofile}->album(@_);
+ my $self=shift;
+ return $self->sanitise($self->stripslashes($self->{audiofile}->album()));
}
+
sub audiotype
{
- return shift->{audiofile}->audiotype(@_);
+ my $self=shift;
+ return $self->sanitise($self->stripslashes($self->{audiofile}->audiotype()));
}
+
sub haspic
{
- return shift->{audiofile}->haspic(@_);
+ return undef; # FIXME
+# my $self=shift;
+# return $self->{audiofile}->haspic();
}
+
sub v1genre
{
- return shift->{audiofile}->v1genre(@_);
+ my $self=shift;
+ return $self->sanitise($self->stripslashes($self->{audiofile}->v1genre()));
}
+
sub year
{
- return shift->{audiofile}->year(@_);
+ my $self=shift;
+ my $year=($self->sanitise(
+ $self->stripslashes(
+ $self->{audiofile}->year())));
+ if($year =~/(\d{4})/)
+ {
+ $year=$1;
+ }
+ return $year;
}
+
sub tags
{
- return shift->{audiofile}->tags(@_);
+ my $self=shift;
+ my @tags=$self->{audiofile}->tags();
+ return({}) unless(@tags);
+ my $tags={};
+ if(@tags)
+ {
+ @tags = grep { defined($_); } @tags;
+ # combine then split on commas
+ # so multiple comma-delimited tags will work
+ @tags=split(/\s*,\s*/, join(', ', @tags));
+ for my $tag (@tags)
+ {
+ next unless(length($tag));
+ next unless($tag =~ /\S+/);
+ $tag=$self->sanitise($tag);
+
+ if($tag=~/([^\/]+)\/(.*)/)
+ {
+ my $tagname = $1;
+ my $tagval = $self->stripslashes($2);
+ $tags->{$tagname}=$tagval;
+ }
+ else
+ {
+ $tags->{$tag}=undef;
+ }
+ }
+ }
+ return $tags;
+}
+
+sub sanitise
+{
+ my ($self, $text)=@_;
+ $text =~ s/[^[:print:]]//g if(defined($text));
+ return $text;
+}
+
+sub stripslashes
+{
+ my ($self, $text)=@_;
+ $text =~ s/\//-/g if(defined($text));
+ return $text;
}
1;