checkpoint

This commit is contained in:
Paul Lamere 2015-12-30 16:11:27 -05:00
parent 1bdd8b32c3
commit 365d3714bf
4 changed files with 92 additions and 1 deletions

View File

@ -0,0 +1,32 @@
# shows acoustic features for tracks for the given artist
from __future__ import print_function # (at top of module)
from spotipy.oauth2 import SpotifyClientCredentials
import json
import spotipy
import time
import sys
client_credentials_manager = SpotifyClientCredentials()
sp = spotipy.Spotify(client_credentials_manager=client_credentials_manager)
sp.trace=True
if len(sys.argv) > 1:
artist_name = ' '.join(sys.argv[1:])
results = sp.search(q=artist_name, limit=50)
tids = []
for i, t in enumerate(results['tracks']['items']):
print(' ', i, t['name'])
tids.append(t['uri'])
print(tids)
start = time.time()
features = sp.audio_features(tids)
delta = time.time() - start
print ("features", features)
print(json.dumps(features, indent=4))
print ("features retrieved in %.2f seconds" % (delta,))

View File

@ -0,0 +1,32 @@
# shows acoustic features for tracks for the given artist
from __future__ import print_function # (at top of module)
from spotipy.oauth2 import SpotifyClientCredentials
import json
import spotipy
import time
import sys
460V2cUWccVmYeTd4TLabO,01N7pbYH5f9TpLxmqosmUe,2Rrkgr8Kd0XGNbilwip6r8,3iJacHlEpRhG8CIStLXYbs,3D0stCwnqbPRkbXnUp28PR,5f1E93e9HPSRs24QM4WZsa,3BxHcg8PCUVK3m7gESNFg9,6chhc8QbIYUW9eROLwzTt7,6cIqoP7oV1H5NjmX4rxLie,4u10VvC4AV75eQ0boApzkq,%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C5nsikUg2MZkmb1nxvcFl5J%2C5PukeF41F4XNCyltPrjtfO%2C2JCpgkECOJyD7yUokQZDrs%2C7dwXipvdDxipgRu47xH98K%2C4IK53QTieazWuWUYm5fkP8%2C5dcQ2uEhO0hXdvcWFQShV9%2C3KpmsYSzgeummZ4leRtjbM%2C3kFuIYz4jYu1Wgq5HuFnid%2C5uEsEDcw8D30AmksKuavMh%2C6HjVlvOUu8zaLlNLCAELrd%2C4zrJmEMmQKxC5desjEgadB%2C41wBEIqFyttEGmbQcRHu13%2C5ATVpeENGTukudcWso7WeE%2C6qs7nmfAvHTIIpFLFsDTVc%2C4KSx0OmRJpT8EvTNnzZw2V%2C7eyhxafr2Q09JcqkSRSkOX%2C6JP7TRXXgTcuoDyotNR5Bu%2C2LwXZozk3SAWgqunHZq5pV%2C1lE88zONI0LR9hAi14F9tJ%2C3VxJ96B20xnFfxCrBCgjh0%2C2kEDlDyDht2OnN3eUD6AKy%2C59jyWHNXkL6R2rWsz2hnuH%2C2Brivg4Hjx6nqmUXJCkrDQ%2C1C0mAIhKJ5luyb2TNE7n7E%2C0y2nkKDa3VMaUx9rvzERJv%2C3AJK9D8d5AMxx0cgLbsL5W
client_credentials_manager = SpotifyClientCredentials()
sp = spotipy.Spotify(client_credentials_manager=client_credentials_manager)
sp.trace=True
if len(sys.argv) > 1:
artist_name = ' '.join(sys.argv[1:])
results = sp.search(q=artist_name, limit=50)
tids = []
for i, t in enumerate(results['tracks']['items']):
print(' ', i, t['name'])
tids.append(t['uri'])
print(tids)
start = time.time()
features = sp.audio_features(tids)
delta = time.time() - start
print ("features", features)
print(json.dumps(features, indent=4))
print ("features retrieved in %.2f seconds" % (delta,))

View File

@ -31,6 +31,7 @@ class Spotify(object):
sp = spotipy.Spotify()
sp.trace = True # turn on tracing
sp.trace_out = True # turn on trace out
artist = sp.artist(urn)
print(artist)
@ -40,6 +41,7 @@ class Spotify(object):
'''
trace = False # Enable tracing?
trace_out = False
max_get_retries = 10
def __init__(self, auth=None, requests_session=True,
@ -89,6 +91,8 @@ class Spotify(object):
if payload:
args["data"] = json.dumps(payload)
if self.trace_out:
print(url)
r = self._session.request(method, url, headers=headers, **args)
if self.trace: # pragma: no cover
@ -475,6 +479,17 @@ class Spotify(object):
'''
return self.me()
def current_user_saved_albums(self, limit=20, offset=0):
''' Gets a list of the albums saved in the current authorized user's
"Your Music" library
Parameters:
- limit - the number of albums to return
- offset - the index of the first album to return
'''
return self._get('me/albums', limit=limit, offset=offset)
def current_user_saved_tracks(self, limit=20, offset=0):
''' Gets a list of the tracks saved in the current authorized user's
"Your Music" library
@ -570,6 +585,14 @@ class Spotify(object):
return self._get('browse/new-releases', country=country,
limit=limit, offset=offset)
def audio_features(self, tracks=[]):
''' Get audio features for multiple tracks based upon their Spotify IDs
Parameters:
- tracks - a list of track URIs, URLs or IDs, maximum: 50 ids
'''
tlist = [self._get_id('track', t) for t in tracks]
return self._get('audio-features?ids=' + ','.join(tlist))
def _get_id(self, type, id):
fields = id.split(':')
if len(fields) >= 3:

View File

@ -66,7 +66,7 @@ class AuthTestSpotipy(unittest.TestCase):
user = playlist['owner']['id']
pid = playlist['id']
results = spotify.user_playlist_tracks(user, pid)
self.assertTrue(len(results['items']) > 0)
self.assertTrue(len(results['items']) >= 0)
def user_playlist_tracks(self, user, playlist_id = None, fields=None,
limit=100, offset=0):
@ -81,6 +81,10 @@ class AuthTestSpotipy(unittest.TestCase):
tracks = spotify.current_user_saved_tracks()
self.assertTrue(len(tracks['items']) > 0)
def test_current_user_saved_albums(self):
albums = spotify.current_user_saved_albums()
self.assertTrue(len(albums['items']) > 0)
def test_current_user_save_and_unsave_tracks(self):
tracks = spotify.current_user_saved_tracks()
total = tracks['total']