package ID3FS::AudioFile::Flac;

use strict;
use warnings;
use Audio::FLAC::Header;

sub new
{
    my $proto=shift;
    my $class=ref($proto) || $proto;
    my $self={};
    bless($self,$class);

    $self->{path}=shift;
    my $flac=Audio::FLAC::Header->new($self->{path});
    $self->{tags}=$flac->tags();
    return $self;
}

sub get
{
    my ($self, $tag)=@_;
    for my $key (keys %{$self->{tags}})
    {
	if($key =~ /$tag/i &&
	   defined($self->{tags}->{$key})  &&
	   length($self->{tags}->{$key})   &&
	   $self->{tags}->{$key} =~ /\S+/)
	{
	    return $self->{tags}->{$key};
	}
    }
    return undef;
}

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
{
    my $self=shift;
    my @tags=();
    my $tags={};
    for my $key (keys %{$self->{tags}})
    {
	if($key =~ /genre/i &&
	   defined($self->{tags}->{$key})  &&
	   length($self->{tags}->{$key})   &&
	   $self->{tags}->{$key} =~ /\S+/)
	{
	    push(@tags, $self->{tags}->{$key});
	}
    }
    return(@tags);
}

1;

