+ 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;