Giter Site home page Giter Site logo

www-spotify's Introduction

NAME

WWW::Spotify - Spotify Web API Wrapper

Build Status

VERSION

version 0.009

SYNOPSIS

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";
        }
    }

DESCRIPTION

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.

CONSTRUCTOR ARGS

ua

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 );

METHODS

get

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.

query_full_url( $url , [needs o_auth] )

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 );

album

equivalent to /v1/albums/{id}

$spotify->album('0sNOF9WDwhWunNAHPD3Baj');

used album vs albums since it is a singular request

albums

equivalent to /v1/albums?ids={ids}

$spotify->albums( '41MnTivkwTO3UUJ8DrqEJJ,6JWc4iAiJ9FjyK0B59ABb4,6UXCm6bOO4gFlDQZV5yL37' );

or

$spotify->albums( [ '41MnTivkwTO3UUJ8DrqEJJ',
                    '6JWc4iAiJ9FjyK0B59ABb4',
                    '6UXCm6bOO4gFlDQZV5yL37' ] );

albums_tracks

equivalent to /v1/albums/{id}/tracks

$spotify->albums_tracks('6akEvsycLGftJxYudPjmqK',
{
    limit => 1,
    offset => 1

}
);

artist

equivalent to /v1/artists/{id}

$spotify->artist( '0LcJLqbBmaGUft1e9Mm8HV' );

used artist vs artists since it is a singular request and avoids collision with "artists" method

artists

equivalent to /v1/artists?ids={ids}

my $artists_multiple = '0oSGxfWSnnOXhD2fKuz2Gy,3dBVyJ7JuOMt4GE9607Qin';

$spotify->artists( $artists_multiple );

artist_albums

equivalent to /v1/artists/{id}/albums

$spotify->artist_albums( '1vCWHaC5f2uS3yhpwWbIA6' ,
                    { album_type => 'single',
                      # country => 'US',
                      limit   => 2,
                      offset  => 0
                    }  );

artist_top_tracks

equivalent to /v1/artists/{id}/top-tracks

$spotify->artist_top_tracks( '43ZHCT0cAZBISjO8DG9PnE', # artist id
                             'SE' # country
                                        );

artist_related_artists

equivalent to /v1/artists/{id}/related-artists

$spotify->artist_related_artists( '43ZHCT0cAZBISjO8DG9PnE' );

search

equivalent to /v1/search?type=album (etc)

$spotify->search(
                    'tania bowra' ,
                    'artist' ,
                    { limit => 15 , offset => 0 }
);

track

equivalent to /v1/tracks/{id}

$spotify->track( '0eGsygTp906u18L0Oimnem' );

tracks

equivalent to /v1/tracks?ids={ids}

$spotify->tracks( '0eGsygTp906u18L0Oimnem,1lDWb6b6ieDQ2xT7ewTC3G' );

browse_featured_playlists

equivalent to /v1/browse/featured-playlists

$spotify->browse_featured_playlists();

requires OAuth

browse_new_releases

equivalent to /v1/browse/new-releases

requires OAuth

$spotify->browse_new_releases

user

equivalent to /user

oauth_client_id

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

oauth_client_secret

needed for requests that require OAuth, see Spotify API documentation for more information

$spotify->oauth_client_secret('2xfjijkcjidjkfdi');

Can also be set via environment variable, SPOTIFY_CLIENT_SECRET

THANKS

Paul Lamere at The Echo Nest / Spotify

All the great Perl community members that keep Perl fun

AUTHOR

Aaron Johnson [email protected]

COPYRIGHT AND LICENSE

This software is copyright (c) 2014-2017 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.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.