NAME
WWW::EchoNest::Catalog
SYNOPSIS
Create catalogs of artists and songs for a given API Key. For example, Catalog names can be provided as arguments to some of the Playlist methods, to return only songs that are by artists in a given catalog.
Please go to <http://developer.echonest.com/docs/v4/catalog.html> for more information about the way the Echo Nest Catalog API works.
METHODS
new
Returns a new WWW::EchoNest::Catalog instance.
NOTE:
WWW::EchoNest also provides the get_catalog() convenience function
to create new instances of WWW::EchoNest::Catalog.
ARGUMENTS:
id => a catalog id
name => a catalog name
type => 'song' or 'artist' -- specifies the catalog type
RETURNS:
A new instance of WWW::EchoNest::Catalog.
EXAMPLE:
use WWW::EchoNest::Catalog;
$catalog = WWW::EchoNest::Catalog->new({ name => 'my_songs', type => 'songs' });
print 'id : ', $catalog->get_id, "\n";
######## Results will differ ########
#
# id : CAPSBIZ131500C102A
# or...
use WWW::EchoNest qw( :all );
# Note:
# - <type> defaults to song, so all we need is a name
# - this method also could have been called with the HASH ref above
$catalog = get_catalog('my_songs');
print 'id : ', $catalog->get_id, "\n";
######## Results may differ ########
#
# id : CAPSBIZ131500C102A
add_song
Add some Song objects to add to the catalog.
ARGUMENTS:
Some WWW::EchoNest::Song objects.
RETURNS:
A reference to an array of tickets to be used with the 'status' method.
EXAMPLE:
use WWW::EchoNest qw( :all );
my $imagine_song = get_song('SOFNJLR1312FDFABE5');
my $satisfaction_song = get_song('SOMEEYZ12A8C1430B5');
my @song_list = ( $imagine_song, $satisfaction_song );
my $catalog = get_catalog('classic_songs');
my $tickets_ref = $catalog->add_song( @song_list );
my %status_for = map { $_ => $catalog->status($_) } @$tickets_ref;
use Data::Dumper;
for (keys %status_for) {
print "ticket: $_\n";
print 'status: ' . $status_for{$_}{'ticket_status'};
};
######## Results may differ ########
#
# ticket : <insert_ticket_number_here>
# status : complete
add_artist
Add some Artist objects to add to the catalog.
ARGUMENTS:
Some WWW::EchoNest::Artist objects.
RETURNS:
A reference to an array of tickets to be used with the 'status' method.
EXAMPLE:
use WWW::EchoNest qw( :all );
my $beatles = get_artist('The Beatles');
my $stones = get_artist('The Rolling Stones');
my $catalog = get_catalog( { name => 'classic_artists', type => 'artist' } );
my $tickets_ref = $catalog->add_artist( $beatles, $stones );
my %status_for = map { $_ => $catalog->status($_) } @$tickets_ref;
use Data::Dumper;
for (keys %status_for) {
print "ticket: $_\n";
print 'status: ' . $status_for{$_}{'ticket_status'};
};
######## Results may differ ########
#
# ticket : <insert_ticket_number_here>
# status : complete
status
Check the status of a catalog update.
ARGUMENTS:
ticket => A string representing a ticket ID.
RETURNS:
A hash ref that contains info about a ticket's status.
EXAMPLE:
use WWW::EchoNest qw( :all );
my $catalog = catalog( { name => 'my_songs', type => 'songs' } );
# Make an update, and store the ticket id as $ticket_id
use Data::Dumper;
print 'status : ', pretty_json( $catalog->status($ticket_id) ), "\n";
######## Results may differ ########
#
# status: {
# ticket_status => 'complete',
# update_info => [
# ]
# };
get_profile
Get basic information about a catalog.
ARGUMENTS:
none
RETURNS:
A hash ref to a description of a catalog.
EXAMPLE:
use WWW::EchoNest qw( :all );
# Create a catalog and store it as $catalog...
# Do some stuff with the catalog, like making updates...
print 'profile: ', pretty_json( $catalog->get_profile ), "\n";
######## Results may differ ########
#
# profile: {
# 'id' => 'CAMSSDQ1303D86C20D',
# 'name' => 'catalog_foo_by_song',
# 'pending_tickets' => [],
# 'resolved' => 2,
# 'total' => 2,
# 'type' => 'song'
# };
read_items
Returns data from the catalog. Expands the requested buckets.
ARGUMENTS:
buckets => A list of strings specifying which buckets to retrieve
results => An integer number of results to return (defaults to 15)
start => An integer starting value for the result set
See <http://developer.echonest.com/docs/v4/catalog.html#read> for more info about possible values for 'buckets'.
RETURNS:
An array ref of objects in the catalog.
EXAMPLE:
use WWW::EchoNest qw( :all );
# Create a catalog and store it as $catalog...
# Do some stuff with the catalog, like making updates...
my $items = $catalog->read_items( { results => 1 } );
print 'items: ', pretty_json( $items ), "\n";
######## Results may differ ########
#
# items: {
# }
get_feed
Returns feed (news, blogs, reviews, audio, video) for the catalog artists;
response depends on requested buckets
ARGUMENTS:
buckets => A list of strings specifying which buckets to retrieve
results => An integer number of results to return (defaults to 15)
start => An integer starting value for the result set
See <http://developer.echonest.com/docs/v4/catalog.html#read> for more info about possible values for 'buckets'.
RETURNS:
A reference to an array of news, blogs, reviews, audio or video document hash refs.
EXAMPLE:
use WWW::EchoNest qw( :all );
# Create a catalog and store it as $catalog...
# Do some stuff with the catalog, like making updates...
my $feeds = $catalog->get_feed( { results => 1 } );
print 'feeds: ', pretty_json( $feed ), "\n";
######## Results will differ ########
#
# Insert printout here!
#
#
delete
Deletes the entire catalog.
ARGUMENTS:
none
RETURNS:
The deleted catalog's id.
EXAMPLE:
use WWW::EchoNest qw( :all );
# Create a catalog and store it as $catalog...
my $deleted_id = $catalog->delete();
print "Deleted catalog $catalog_id\n";
######## Results will differ ########
#
# Deleted catalog CAMSSDQ1303D86C20D
#
FUNCTIONS
list_catalogs
Returns a list of all catalogs for a given API key.
ARGUMENTS:
results => An integer number of results to return (defaults to 30)
start => An integer starting value for the result set
RETURNS:
A reference to an array of references to Catalog objects.
EXAMPLE:
use WWW::EchoNest qw( :all );
# Create some catalogs...
my $catalog_list = list_catalogs( { results => 1 } );
print 'Catalogs: ', pretty_json( $catalog_list ), "\n";
######## Results will differ ########
#
# Catalogs: {
# }
#
AUTHOR
Brian Sorahan, <bsorahan@gmail.com>
SUPPORT
Join the Google group: <http://groups.google.com/group/www-echonest>
ACKNOWLEDGEMENTS
Thanks to all the folks at The Echo Nest for providing access to their powerful API.
LICENSE
Copyright 2011 Brian Sorahan.
This program is free software; you can redistribute it and/or modify it under the terms of either: the GNU General Public License as published by the Free Software Foundation; or the Artistic License.
See http://dev.perl.org/licenses/ for more information.