mirror of
https://github.com/c0de-archive/spotipy.git
synced 2025-01-06 14:52:50 +00:00
improved example
This commit is contained in:
parent
5be0ba4d94
commit
45232a2489
@ -103,7 +103,19 @@ Register your app at
|
|||||||
<https://developer.spotify.com/my-applications/#!/applications>`_.
|
<https://developer.spotify.com/my-applications/#!/applications>`_.
|
||||||
|
|
||||||
|
|
||||||
*Spotipy* provides a
|
*spotipy* supports two authorization flows:
|
||||||
|
|
||||||
|
- The **Authorization Code flow** This method is suitable for long-running applications
|
||||||
|
which the user logs into once. It provides an access token that can be refreshed.
|
||||||
|
|
||||||
|
- The **Client Credentials flow** The method makes it possible
|
||||||
|
to authenticate your requests to the Spotify Web API and to obtain
|
||||||
|
a higher rate limit than you would
|
||||||
|
|
||||||
|
|
||||||
|
Authorization Code Flow
|
||||||
|
=======================
|
||||||
|
To support the **Authorization Code Flow** *Spotipy* provides a
|
||||||
utility method ``util.prompt_for_user_token`` that will attempt to authorize the
|
utility method ``util.prompt_for_user_token`` that will attempt to authorize the
|
||||||
user. You can pass your app credentials directly into the method as arguments,
|
user. You can pass your app credentials directly into the method as arguments,
|
||||||
or if you are reluctant to immortalize your app credentials in your source code,
|
or if you are reluctant to immortalize your app credentials in your source code,
|
||||||
@ -145,6 +157,31 @@ Here's an example of getting user authorization to read a user's saved tracks::
|
|||||||
else:
|
else:
|
||||||
print "Can't get token for", username
|
print "Can't get token for", username
|
||||||
|
|
||||||
|
Client Credentials Flow
|
||||||
|
=======================
|
||||||
|
To support the **Client Credentials Flow** *Spotipy* provides a
|
||||||
|
class SpotifyClientCredentials that can be used to authenticate requests like so::
|
||||||
|
|
||||||
|
|
||||||
|
import spotipy
|
||||||
|
from spotipy.oauth2 import SpotifyClientCredentials
|
||||||
|
|
||||||
|
client_credentials_manager = SpotifyClientCredentials()
|
||||||
|
sp = spotipy.Spotify(client_credentials_manager=client_credentials_manager)
|
||||||
|
|
||||||
|
playlists = sp.user_playlists('spotify')
|
||||||
|
while playlists:
|
||||||
|
for i, playlist in enumerate(playlists['items']):
|
||||||
|
print("%4d %s %s" % (i + 1 + playlists['offset'], playlist['uri'], playlist['name']))
|
||||||
|
if playlists['next']:
|
||||||
|
playlists = sp.next(playlists)
|
||||||
|
else:
|
||||||
|
playlists = None
|
||||||
|
|
||||||
|
Client credentials flow is appropriate for requests that do not require access to a
|
||||||
|
user's private data. Even if you are only making calls that do not require
|
||||||
|
authorization, using this flow yields the benefit of a higher rate limit
|
||||||
|
|
||||||
IDs URIs and URLs
|
IDs URIs and URLs
|
||||||
=======================
|
=======================
|
||||||
*Spotipy* supports a number of different ID types:
|
*Spotipy* supports a number of different ID types:
|
||||||
|
25
examples/user_public_playlists.py
Normal file
25
examples/user_public_playlists.py
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
# Gets all the public playlists for the given
|
||||||
|
# user. Uses Client Credentials flow
|
||||||
|
#
|
||||||
|
|
||||||
|
import sys
|
||||||
|
import spotipy
|
||||||
|
from spotipy.oauth2 import SpotifyClientCredentials
|
||||||
|
|
||||||
|
client_credentials_manager = SpotifyClientCredentials()
|
||||||
|
sp = spotipy.Spotify(client_credentials_manager=client_credentials_manager)
|
||||||
|
|
||||||
|
user = 'spotify'
|
||||||
|
|
||||||
|
if len(sys.argv) > 1:
|
||||||
|
user = sys.argv[1]
|
||||||
|
|
||||||
|
playlists = sp.user_playlists(user)
|
||||||
|
|
||||||
|
while playlists:
|
||||||
|
for i, playlist in enumerate(playlists['items']):
|
||||||
|
print("%4d %s %s" % (i + 1 + playlists['offset'], playlist['uri'], playlist['name']))
|
||||||
|
if playlists['next']:
|
||||||
|
playlists = sp.next(playlists)
|
||||||
|
else:
|
||||||
|
playlists = None
|
Loading…
Reference in New Issue
Block a user