1 package ID3FS::File::Flac;
5 use Audio::FLAC::Header;
10 my $class=ref($proto) || $proto;
15 my $flac=Audio::FLAC::Header->new($self->{path});
16 $self->{tags}=$flac->tags();
22 my ($self, $tag, $verbose)=@_;
23 if(exists($self->{tags}->{$tag}) &&
24 defined($self->{tags}->{$tag}) &&
25 length($self->{tags}->{$tag}) &&
26 $self->{tags}->{$tag} =~ /\S+/)
28 my $val=$self->{tags}->{$tag};
29 $val =~ s/\//-/g; # drop slashes
34 warn("$self->{path}: no $tag defined in FLAC comments\n") if($verbose);
39 sub artist { shift->get("ARTIST", 1); }
40 sub album { shift->get("ALBUM", 1); }
41 sub audiotype { return "flac"; }
42 sub haspic { return undef; } # FIXME
43 sub v1genre { return undef; } # ID3 only
45 # We don't care if year is not set
49 my $date=shift->get("DATE", 0);
50 return undef unless($date);
51 if($date =~/(\d\d\d\d)/)
61 my $genre=$self->get("GENRE");
62 return({}) unless($genre);
63 my @tags=split(/\s*,\s*/, $genre);
66 if($tag=~/([^\/]+)\/(.*)/)
71 $self->{tags}->{$tagname}=$tagval;
75 $self->{tags}->{$tag}=undef;