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;
length($self->{tags}->{$key}) &&
$self->{tags}->{$key} =~ /\S+/)
{
- my $val=$self->{tags}->{$key};
- $val =~ s/\//-/g; # drop slashes
- return $val;
+ return $self->{tags}->{$key};
}
}
warn("$self->{path}: no $tag defined in FLAC comments\n") if($complain);
sub audiotype { return "flac"; }
sub haspic { return undef; } # FIXME
sub v1genre { return undef; } # ID3 only
-
# We don't care if year is not set
-sub year
-{
- my ($self)=@_;
- my $date=shift->get("DATE", 0);
- return undef unless($date);
- if($date =~/(\d\d\d\d)/)
- {
- $date=$1;
- }
- return $date;
-}
+sub year { shift->get("DATE", 0); }
sub tags
{
push(@tags, $self->{tags}->{$key});
}
}
- # combine then split on commas
- # so multiple comma-delimited tags will work
- @tags=split(/\s*,\s*/, join(', ', @tags));
- for my $tag (@tags)
- {
- if($tag=~/([^\/]+)\/(.*)/)
- {
- my $tagname=$1;
- my $tagval=$2;
- $tagval=~s/\//-/g;
- $tags->{$tagname}=$tagval;
- }
- else
- {
- $tags->{$tag}=undef;
- }
- }
- return $tags;
+ return(@tags);
}
1;
warn("$self->{path}: no $func defined in ID3 tags\n") if($verbose);
return undef;
}
- $thing=~s/\//-/g; # drop slashes
return $thing;
}
{
my($self)=@_;
my $genre=undef;
- if(defined($self->{v1}))
- {
- $genre=$self->{v1}->genre();
- $genre =~ s/\//-/g if(defined($genre));
- }
+ $genre=$self->{v1}->genre() if(defined($self->{v1}));
return $genre;
}
sub tags
{
my $self=shift;
- return({}) unless(exists($self->{mp3}->{ID3v2}) && defined($self->{mp3}->{ID3v2}));
- my $genre=$self->{mp3}->{ID3v2}->genre();
- return({}) unless(defined($genre) && length($genre));
- my @tags=split(/\s*,\s*/, $genre);
- for my $tag (@tags)
- {
- if($tag=~/([^\/]+)\/(.*)/)
- {
- my $tagname=$1;
- my $tagval=$2;
- $tagval=~s/\//-/g;
- $self->{tags}->{$tagname}=$tagval;
- }
- else
- {
- $self->{tags}->{$tag}=undef;
- }
- }
- return $self->{tags};
+ return() unless(exists($self->{mp3}->{ID3v2}) && defined($self->{mp3}->{ID3v2}));
+ return($self->{mp3}->{ID3v2}->genre());
}
sub get_tags
}
1;
-
sub audiotype { return "ogg"; }
sub haspic { return undef; } # FIXME
sub v1genre { return undef; } # ID3 only
-
# We don't care if year is not set
-sub year
-{
- my ($self)=@_;
- my $date=shift->get("Date", 0);
- return undef unless($date);
- if($date =~/(\d\d\d\d)/)
- {
- $date=$1;
- }
- return $date;
-}
+sub year { shift->get("Date", 0); }
sub tags
{
push(@comments,$self->{ogg}->comment($commenttype));
}
}
- my $tags={};
- if(@comments)
- {
- # filter for useful comments
- @comments= grep { defined($_); } @comments;
- @comments= grep { length($_); } @comments;
- @comments= grep { /\S+/; } @comments;
- # combine then split on commas
- # so multiple comma-delimited tags will work
- @comments=split(/\s*,\s*/, join(', ', @comments));
- for my $comment (@comments)
- {
- if($comment=~/([^\/]+)\/(.*)/)
- {
- my $tagname=$1;
- my $tagval=$2;
- $tagval=~s/\//-/g;
- $tags->{$tagname}=$tagval;
- }
- else
- {
- $tags->{$comment}=undef;
- }
- }
- }
- return $tags;
+ return(@comments);
}
1;