+# id3fs - a FUSE-based filesystem for browsing audio metadata
+# Copyright (C) 2010 Ian Beckwith <ianb@erislabs.net>
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
package ID3FS::AudioFile::Flac;
use strict;
sub get
{
- my ($self, $tag, $complain)=@_;
+ my ($self, $tag)=@_;
for my $key (keys %{$self->{tags}})
{
if($key =~ /$tag/i &&
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);
return undef;
}
-sub artist { shift->get("ARTIST", 1); }
-sub album { shift->get("ALBUM", 1); }
-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 artist { shift->get("ARTIST"); }
+sub album { shift->get("ALBUM"); }
+sub audiotype { return "flac"; }
+sub haspic { return undef; } # FIXME
+sub v1genre { return undef; } # ID3 only
+sub year { shift->get("DATE"); }
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;
- $self->{tags}->{$tagname}=$tagval;
- }
- else
- {
- $self->{tags}->{$tag}=undef;
- }
- }
- return $self->{tags};
+ return(@tags);
}
1;
-