From 34f476d17fb941f42b6d747b91ae00df8d4492e7 Mon Sep 17 00:00:00 2001 From: Paul Lamere Date: Fri, 22 Aug 2014 13:40:15 -0400 Subject: [PATCH] Clean up of examples --- .gitignore | 1 + examples/add_a_saved_track.py | 2 +- examples/collaborations.py | 73 ------------------------------ examples/contains_a_saved_track.py | 4 +- examples/delete_a_saved_track.py | 2 +- examples/simple1.py | 1 - examples/tracks.py | 4 +- setup.py | 2 +- spotipy/__init__.py | 1 + spotipy/client.py | 11 +++++ 10 files changed, 20 insertions(+), 81 deletions(-) delete mode 100644 examples/collaborations.py diff --git a/.gitignore b/.gitignore index dc48665..286ddd2 100644 --- a/.gitignore +++ b/.gitignore @@ -54,3 +54,4 @@ docs/_build/ .* +archive diff --git a/examples/add_a_saved_track.py b/examples/add_a_saved_track.py index 645aac8..037acaa 100644 --- a/examples/add_a_saved_track.py +++ b/examples/add_a_saved_track.py @@ -22,7 +22,7 @@ token = util.prompt_for_user_token(username, scope) if token: sp = spotipy.Spotify(auth=token) sp.trace = False - results = sp.current_user_saved_tracks_add(ids=tids) + results = sp.current_user_saved_tracks_add(tracks=tids) pprint.pprint(results) else: print "Can't get token for", username diff --git a/examples/collaborations.py b/examples/collaborations.py deleted file mode 100644 index bde387c..0000000 --- a/examples/collaborations.py +++ /dev/null @@ -1,73 +0,0 @@ -import sys -import spotipy -import pprint - -sp = None -max_artists = 100 -artist_queue = [] -queued = set() - -''' - This example generates a collaboration network suitable for plotting with graphviz - Typical usage: - - % python collaborations.py 32 deadmau5 > deadmau5.gv - % graphviz deadmau5.gv -''' - -def add_artists_from_albums(name, spid): - offset = 0 - limit = 50 - while True: - try: - response = sp.artist_albums(spid, limit=limit, offset=offset) - except spotipy.SpotifyException: - # a known issue with the API occasionally yields an error when retrieving albums - sys.stderr.write('trouble getting albums for %s' % (name,)) - return - for album in response['albums']: - for artist in album['artists']: - add_artist(name, album['name'], artist) - offset += limit - - if not response['paging']['next']: - break - -def fn(name): - return name.replace('"', '').encode('utf-8') - -def add_artist(name, album_name, artist): - if not artist['spotify_uri'] in queued: - if name: - print(' "%s" -> "%s" [label="%s"];' % (fn(name), fn(artist['name']), fn(album_name))) - queued.add(artist['spotify_uri']) - artist_queue.append( ( artist['name'], artist['spotify_uri']) ) - -def process_artists(): - done = set() - while len(artist_queue) > 0: - name, spid = artist_queue.pop(0) - if spid not in done: - done.add(spid) - if len(queued) > max_artists: - break - else: - add_artists_from_albums(name, spid) - -if __name__ == '__main__': - if len(sys.argv) < 3: - print('Usage: %s max_artists artist name' % (sys.argv[0])) - print('Example: %s 100 Rihanna' % (sys.argv[0])) - else: - max_artists = int(sys.argv[1]) - artist = ' '.join(sys.argv[2:]) - sp = spotipy.Spotify() - - results = sp.search(artist, type='artist') - artists = results['artists'] - if len(artists) > 0: - add_artist(None, None, artists[0]) - print('digraph G {') - process_artists() - print('}') - diff --git a/examples/contains_a_saved_track.py b/examples/contains_a_saved_track.py index 6155fad..dec3403 100644 --- a/examples/contains_a_saved_track.py +++ b/examples/contains_a_saved_track.py @@ -19,7 +19,7 @@ token = util.prompt_for_user_token(username, scope) if token: sp = spotipy.Spotify(auth=token) sp.trace = False - results = sp.current_user_saved_tracks_contains(ids=tids) + results = sp.current_user_saved_tracks_contains(tracks=tids) pprint.pprint(results) else: - print "Can't get token for", username \ No newline at end of file + print "Can't get token for", username diff --git a/examples/delete_a_saved_track.py b/examples/delete_a_saved_track.py index 14784b9..a00a03d 100644 --- a/examples/delete_a_saved_track.py +++ b/examples/delete_a_saved_track.py @@ -21,7 +21,7 @@ token = util.prompt_for_user_token(username, scope) if token: sp = spotipy.Spotify(auth=token) sp.trace = False - results = sp.current_user_saved_tracks_delete(ids=tids) + results = sp.current_user_saved_tracks_delete(tracks=tids) pprint.pprint(results) else: print "Can't get token for", username diff --git a/examples/simple1.py b/examples/simple1.py index ce828b9..48d8e97 100644 --- a/examples/simple1.py +++ b/examples/simple1.py @@ -13,5 +13,4 @@ while results['next']: for album in albums: print(album['name']) - print album diff --git a/examples/tracks.py b/examples/tracks.py index 3c520f2..92104b1 100644 --- a/examples/tracks.py +++ b/examples/tracks.py @@ -7,6 +7,6 @@ sp = spotipy.Spotify() if len(sys.argv) > 1: artist_name = ' '.join(sys.argv[1:]) - tracks = sp.search(q=artist_name, limit=20) - for i, t in enumerate(tracks['tracks']): + results = sp.search(q=artist_name, limit=20) + for i, t in enumerate(results['tracks']['items']): print(' ', i, t['name']) diff --git a/setup.py b/setup.py index a023f04..e7feda0 100644 --- a/setup.py +++ b/setup.py @@ -2,7 +2,7 @@ from setuptools import setup setup( name='SpotipyWebApi', - version='1.320', + version='2.0.0', description='simple client for the Spotify Web API', author="@plamere", author_email="paul@echonest.com", diff --git a/spotipy/__init__.py b/spotipy/__init__.py index 4f3ddd4..c90ce5a 100644 --- a/spotipy/__init__.py +++ b/spotipy/__init__.py @@ -1 +1,2 @@ +VERSION='2.0.0' from client import Spotify, SpotifyException diff --git a/spotipy/client.py b/spotipy/client.py index a2dc9d8..901abb1 100644 --- a/spotipy/client.py +++ b/spotipy/client.py @@ -400,6 +400,17 @@ class Spotify(object): tlist = [self._get_id('track', t) for t in tracks] return self._delete('me/tracks/?ids=' + ','.join(tlist)) + def current_user_saved_tracks_contains(self, tracks=[]): + ''' Check if one or more tracks is already saved in + the current Spotify user’s “Your Music” library. + + Parameters: + - tracks - a list of track URIs, URLs or IDs + ''' + tlist = [self._get_id('track', t) for t in tracks] + return self._get('me/tracks/contains?ids=' + ','.join(tlist)) + + def current_user_saved_tracks_add(self, tracks=[]): ''' Add one or more tracks to the current user's "Your Music" library.