WebService::Audioscrobbler::Tag - An object-oriented interface to the Audioscrobbler WebService API


WebService-Audioscrobbler documentation Contained in the WebService-Audioscrobbler distribution.

Index


Code Index:

NAME

Top

WebService::Audioscrobbler::Tag - An object-oriented interface to the Audioscrobbler WebService API

SYNOPSIS

Top

This module implements an object oriented abstraction of a tag within the Audioscrobbler database.

    use WebService::Audioscrobbler::Tag;

    my $ws = WebService::Audioscrobbler->new;

    # get an object for the tag named 'foo'
    my $tag = $ws->tag('foo');

    # retrieves tracks tagged with 'foo'
    my @tracks = $tag->tracks;

    # prints url for viewing aditional tag info
    print $tag->url;

This module inherits from WebService::Audioscrobbler::Base.

FIELDS

Top

name

title

The name (title) of a given tag.

url

URL for aditional info about the tag.

METHODS

Top

new($name, $data_fetcher)

new(\%fields)

Creates a new object using either the given $artist and $title or the \%fields hashref. The data fetcher object is a mandatory parameter and must be provided either as the second parameter or inside the \%fields hashref.

tracks

Retrieves the tags's top tracks as available on Audioscrobbler's database.

Returns either a list of tracks or a reference to an array of tracks when called in list context or scalar context, respectively. The tracks are returned as WebService::Audioscrobbler::Track objects by default.

artists

Retrieves the tag's top artists as available on Audioscrobbler's database.

Returns either a list of artists or a reference to an array of artists when called in list context or scalar context, respectively. The tags are returned as WebService::Audioscrobbler::Artist objects by default.

resource_path

Returns the URL from which other URLs used for fetching tag info will be derived from.

AUTHOR

Top

Nilson Santos Figueiredo Júnior, <nilsonsfj at cpan.org>

COPYRIGHT & LICENSE

Top


WebService-Audioscrobbler documentation Contained in the WebService-Audioscrobbler distribution.
package WebService::Audioscrobbler::Tag;
use warnings;
use strict;
use CLASS;

use base 'WebService::Audioscrobbler::Base';

our $VERSION = '0.07';

# postfix related accessors
CLASS->mk_classaccessor("base_resource_path"  => "tag");

# requering stuff
CLASS->tracks_class->require or die($@);

# object accessors
CLASS->mk_accessors(qw/name url/);

*title = \&name;

sub new {
    my $class = shift;
    my ($name_or_fields, $data_fetcher) = @_;

    my $self = $class->SUPER::new( 
        ref $name_or_fields eq 'HASH' ? 
            $name_or_fields : { name => $name_or_fields, data_fetcher => $data_fetcher } 
    );

    $self->croak("No data fetcher provided")
        unless $self->data_fetcher;

    return $self;
}

sub tags {
    shift->croak("Audioscrobbler doesn't provide data regarding tags which are related to other tags");
}

sub resource_path {
    my $self = shift;
    $self->uri_builder( $self->name );
}

1; # End of WebService::Audioscrobbler::Tag