WWW::EchoNest::Catalog
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.
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 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 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
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 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' # };
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: { # }
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! # #
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 #
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: { # } #
Brian Sorahan, <bsorahan@gmail.com>
<bsorahan@gmail.com>
Join the Google group: <http://groups.google.com/group/www-echonest>
Thanks to all the folks at The Echo Nest for providing access to their powerful API.
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.
To install WWW::EchoNest, copy and paste the appropriate command in to your terminal.
cpanm
cpanm WWW::EchoNest
CPAN shell
perl -MCPAN -e shell install WWW::EchoNest
For more information on module installation, please visit the detailed CPAN module installation guide.