mirror of
https://github.com/c0de-archive/spotipy.git
synced 2024-11-05 07:27:47 +00:00
add recommendations endpoints
This commit is contained in:
parent
dd021c4087
commit
7472f41948
2
setup.py
2
setup.py
@ -2,7 +2,7 @@ from setuptools import setup
|
|||||||
|
|
||||||
setup(
|
setup(
|
||||||
name='spotipy',
|
name='spotipy',
|
||||||
version='2.3.7',
|
version='2.3.8',
|
||||||
description='simple client for the Spotify Web API',
|
description='simple client for the Spotify Web API',
|
||||||
author="@plamere",
|
author="@plamere",
|
||||||
author_email="paul@echonest.com",
|
author_email="paul@echonest.com",
|
||||||
|
@ -651,6 +651,52 @@ class Spotify(object):
|
|||||||
return self._get('browse/categories/' + category_id + '/playlists', country=country,
|
return self._get('browse/categories/' + category_id + '/playlists', country=country,
|
||||||
limit=limit, offset=offset)
|
limit=limit, offset=offset)
|
||||||
|
|
||||||
|
def recommendations(self, seed_artists=[], seed_genres=[], seed_tracks=[],
|
||||||
|
limit = 20, country=None, **kwargs):
|
||||||
|
''' Get a list of recommended tracks for one to five seeds.
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
- seed_artists - a list of artist IDs, URIs or URLs
|
||||||
|
|
||||||
|
- seed_tracks - a list of artist IDs, URIs or URLs
|
||||||
|
|
||||||
|
- seed_genres - a list of genre names. Available genres for
|
||||||
|
recommendations can be found by calling recommendation_genre_seeds
|
||||||
|
|
||||||
|
- country - An ISO 3166-1 alpha-2 country code. If provided, all
|
||||||
|
results will be playable in this country.
|
||||||
|
|
||||||
|
- limit - The maximum number of items to return. Default: 20.
|
||||||
|
Minimum: 1. Maximum: 100
|
||||||
|
|
||||||
|
- min/max/target_<attribute> - For the tuneable track attributes listed
|
||||||
|
in the documentation, these values provide filters and targeting on
|
||||||
|
results.
|
||||||
|
'''
|
||||||
|
params = dict(limit=limit)
|
||||||
|
if seed_artists:
|
||||||
|
params['seed_artists'] = [self._get_id('artist', a) for a in seed_artists]
|
||||||
|
if seed_genres:
|
||||||
|
params['seed_genres'] = seed_genres
|
||||||
|
if seed_tracks:
|
||||||
|
params['seed_tracks'] = [self._get_id('track', t) for t in seed_tracks]
|
||||||
|
if country:
|
||||||
|
params['market'] = country
|
||||||
|
|
||||||
|
for attribute in ["acousticness", "danceability", "duration_ms", "energy",
|
||||||
|
"instrumentalness", "key", "liveness", "loudness", "mode", "popularity",
|
||||||
|
"speechiness", "tempo", "time_signature", "valence"]:
|
||||||
|
for prefix in ["min_", "max_", "target_"]:
|
||||||
|
param = prefix + attribute
|
||||||
|
if param in kwargs:
|
||||||
|
params[param] = kwargs[param]
|
||||||
|
return self._get('recommendations', **params)
|
||||||
|
|
||||||
|
def recommendation_genre_seeds(self):
|
||||||
|
''' Get a list of genres available for the recommendations function.
|
||||||
|
'''
|
||||||
|
return self._get('recommendations/available-genre-seeds')
|
||||||
|
|
||||||
def audio_features(self, tracks=[]):
|
def audio_features(self, tracks=[]):
|
||||||
''' Get audio features for multiple tracks based upon their Spotify IDs
|
''' Get audio features for multiple tracks based upon their Spotify IDs
|
||||||
Parameters:
|
Parameters:
|
||||||
|
@ -53,6 +53,10 @@ class AuthTestSpotipy(unittest.TestCase):
|
|||||||
assert('speechiness' in track)
|
assert('speechiness' in track)
|
||||||
self.assertTrue(results[-1] == None)
|
self.assertTrue(results[-1] == None)
|
||||||
|
|
||||||
|
def test_recommendations(self):
|
||||||
|
results = spotify.recommendations(self.four_tracks, min_danceability=0, max_loudness=0, target_popularity=50)
|
||||||
|
self.assertTrue(len(results['tracks']) == 20)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
client_credentials_manager = SpotifyClientCredentials()
|
client_credentials_manager = SpotifyClientCredentials()
|
||||||
|
Loading…
Reference in New Issue
Block a user