package ID3FS::AudioFile::Ogg;

use strict;
use warnings;
use Ogg::Vorbis::Header;

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

    $self->{path}=shift;
    $self->{ogg}=Ogg::Vorbis::Header->new($self->{path});
    $self->{comments}=[ $self->{ogg}->comment_tags() ];
    return $self;
}

sub get
{
    my ($self, $tag)=@_;
    for my $commenttype (@{$self->{comments}})
    {
	if($commenttype =~ /$tag/i)
	{
	    my @comments=$self->{ogg}->comment($commenttype);
	    if(@comments)
	    {
		# take first comment with actual contents
		while(my $comment=shift @comments)
		{
		    if(defined($comment) &&
		       length($comment)  &&
		       $comment =~ /\S+/)
		    {
			$comment =~ s/\//-/g; # drop slashes
			return $comment;
		    }
		}
	    }
	}
    }
    return undef;
}

sub artist    { shift->get("Artist"); }
sub album     { shift->get("Album");  }
sub audiotype { return "ogg";         }
sub haspic    { return undef;         } # FIXME
sub v1genre   { return undef;         } # ID3 only
sub year      { shift->get("Date");   }

sub tags
{
    my $self=shift;
    my @comments;
    for my $commenttype (@{$self->{comments}})
    {
	if($commenttype =~ /genre/i)
	{
	    push(@comments,$self->{ogg}->comment($commenttype));
	}
    }
    return(@comments);
}

1;

