WWW::Spotify - Spotify Web API Wrapper
version 0.007
use WWW::Spotify; my $spotify = WWW::Spotify->new(); my $result; $result = $spotify->album('0sNOF9WDwhWunNAHPD3Baj'); # $result is a json structure, you can operate on it directly # or you can use the "get" method see below $result = $spotify->albums( '41MnTivkwTO3UUJ8DrqEJJ,6JWc4iAiJ9FjyK0B59ABb4,6UXCm6bOO4gFlDQZV5yL37' ); $result = $spotify->albums_tracks( '6akEvsycLGftJxYudPjmqK', { limit => 1, offset => 1 } ); $result = $spotify->artist( '0LcJLqbBmaGUft1e9Mm8HV' ); my $artists_multiple = '0oSGxfWSnnOXhD2fKuz2Gy,3dBVyJ7JuOMt4GE9607Qin'; $result = $spotify->artists( $artists_multiple ); $result = $spotify->artist_albums( '1vCWHaC5f2uS3yhpwWbIA6' , { album_type => 'single', # country => 'US', limit => 2, offset => 0 } ); $result = $spotify->track( '0eGsygTp906u18L0Oimnem' ); $result = $spotify->tracks( '0eGsygTp906u18L0Oimnem,1lDWb6b6ieDQ2xT7ewTC3G' ); $result = $spotify->artist_top_tracks( '43ZHCT0cAZBISjO8DG9PnE', # artist id 'SE' # country ); $result = $spotify->search( 'tania bowra' , 'artist' , { limit => 15 , offset => 0 } ); $result = $spotify->user( 'glennpmcdonald' ); # public play interaction example # NEED TO SET YOUR o_auth client_id and secret for these to work $spotify->browse_featured_playlists( country => 'US' ); my $link = $spotify->get('playlists.items[*].href'); # $link is an arrayfef of the all the playlist urls foreach my $for_tracks (@{$link}) { # make sure the links look valid next if $for_tracks !~ /spotify\/play/; $spotify->query_full_url($for_tracks,1); my $pl_name = $spotify->get('name'); my $tracks = $spotify->get('tracks.items[*].track.id'); foreach my $track (@{$tracks}) { print "$track\n"; } }
Wrapper for the Spotify Web API.
https://developer.spotify.com/web-api/
Have access to a JSON viewer to help develop and debug. The Chrome JSON viewer is very good and provides the exact path of the item within the JSON in the lower left of the screen as you mouse over an element.
You may provide your own WWW::Mechanize object to the constructor. You may want to set autocheck off. To get extra debugging information, you can do something like this:
use LWP::ConsoleLogger::Easy qw( debug_ua ); use WWW::Mechanize; use WWW::Spotify; my $mech = WWW::Mechanize->new( autocheck => 0 ); debug_ua( $mech ); my $ua = WWW::Mechanize->new( ua => $ua );
Returns a specific item or array of items from the JSON result of the last action.
$result = $spotify->search( 'tania bowra' , 'artist' , { limit => 15 , offset => 0 } ); my $image_url = $spotify->get( 'artists.items[0].images[0].url' );
JSON::Path is the underlying library that actually parses the JSON.
Results from some calls (playlist for example) return full urls that can be in their entirety. This method allows you make a call to that url and use all of the o_auth and other features provided.
$spotify->query_full_url( "https://api.spotify.com/v1/users/spotify/playlists/06U6mm6KPtPIg9D4YGNEnu" , 1 );
equivalent to /v1/albums/{id}
$spotify->album('0sNOF9WDwhWunNAHPD3Baj');
used album vs albums since it is a singular request
equivalent to /v1/albums?ids={ids}
$spotify->albums( '41MnTivkwTO3UUJ8DrqEJJ,6JWc4iAiJ9FjyK0B59ABb4,6UXCm6bOO4gFlDQZV5yL37' );
or
$spotify->albums( [ '41MnTivkwTO3UUJ8DrqEJJ', '6JWc4iAiJ9FjyK0B59ABb4', '6UXCm6bOO4gFlDQZV5yL37' ] );
equivalent to /v1/albums/{id}/tracks
$spotify->albums_tracks('6akEvsycLGftJxYudPjmqK', { limit => 1, offset => 1 } );
equivalent to /v1/artists/{id}
$spotify->artist( '0LcJLqbBmaGUft1e9Mm8HV' );
used artist vs artists since it is a singular request and avoids collision with "artists" method
equivalent to /v1/artists?ids={ids}
my $artists_multiple = '0oSGxfWSnnOXhD2fKuz2Gy,3dBVyJ7JuOMt4GE9607Qin'; $spotify->artists( $artists_multiple );
equivalent to /v1/artists/{id}/albums
$spotify->artist_albums( '1vCWHaC5f2uS3yhpwWbIA6' , { album_type => 'single', # country => 'US', limit => 2, offset => 0 } );
equivalent to /v1/artists/{id}/top-tracks
$spotify->artist_top_tracks( '43ZHCT0cAZBISjO8DG9PnE', # artist id 'SE' # country );
equivalent to /v1/artists/{id}/related-artists
$spotify->artist_related_artists( '43ZHCT0cAZBISjO8DG9PnE' );
equivalent to /v1/search?type=album (etc)
$spotify->search( 'tania bowra' , 'artist' , { limit => 15 , offset => 0 } );
equivalent to /v1/tracks/{id}
$spotify->track( '0eGsygTp906u18L0Oimnem' );
equivalent to /v1/tracks?ids={ids}
$spotify->tracks( '0eGsygTp906u18L0Oimnem,1lDWb6b6ieDQ2xT7ewTC3G' );
equivalent to /v1/browse/featured-playlists
$spotify->browse_featured_playlists();
requires OAuth
equivalent to /v1/browse/new-releases
$spotify->browse_new_releases
equivalent to /user
needed for requests that require OAuth, see Spotify API documentation for more information
$spotify->oauth_client_id('2xfjijkcjidjkfdi');
Can also be set via environment variable, SPOTIFY_CLIENT_ID
$spotify->oauth_client_secret('2xfjijkcjidjkfdi');
Can also be set via environment variable, SPOTIFY_CLIENT_SECRET
Paul Lamere at The Echo Nest / Spotify
All the great Perl community members that keep Perl fun
Aaron Johnson <aaronjjohnson@gmail.com>
This software is copyright (c) 2014 by Aaron Johnson.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.
To install WWW::Spotify, copy and paste the appropriate command in to your terminal.
cpanm
cpanm WWW::Spotify
CPAN shell
perl -MCPAN -e shell install WWW::Spotify
For more information on module installation, please visit the detailed CPAN module installation guide.