forked from spotipy-dev/spotipy
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Added the 'collaboration.py' example
- Loading branch information
Showing
7 changed files
with
137 additions
and
8 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,73 @@ | ||
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('}') | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,31 @@ | ||
digraph G { | ||
"deadmau5" -> "Billy Newton-Davis" [label="All U Ever Want"]; | ||
"deadmau5" -> "Melleefresh" [label="Afterhours (The Remixes)"]; | ||
"deadmau5" -> "Imogen Heap" [label="Telemiscommunications (Remixes)"]; | ||
"deadmau5" -> "Kaskade" [label="DJ Hero EP"]; | ||
"Billy Newton-Davis" -> "Spekrfreks" [label="Back It Up"]; | ||
"Billy Newton-Davis" -> "Cajjmere Wray" [label="Fuk Chat"]; | ||
"Billy Newton-Davis" -> "Nino Anthony" [label="Everything I Wanna Do Remixes"]; | ||
"Melleefresh" -> "Wutam" [label="Do You Wannit Now"]; | ||
"Melleefresh" -> "Stereo Scum" [label="How Dangerous"]; | ||
"Melleefresh" -> "Tyler Michaud" [label="Kisses Remixes"]; | ||
"Imogen Heap" -> "Ron van den Beuken" [label="Headlock"]; | ||
"Spekrfreks" -> "SpekrFreks Feat. Michelle Ericsson" [label="Tears of Blood"]; | ||
"Spekrfreks" -> "Michelle Ericsson" [label="Voyager EP"]; | ||
"Nino Anthony" -> "Mr. Eyez" [label="Night Muzik"]; | ||
"Tyler Michaud" -> "Interstate" [label="Junkie"]; | ||
"Tyler Michaud" -> "Moonbeam" [label="Openhearted"]; | ||
"Ron van den Beuken" -> "Simon Demillo" [label="Chaos"]; | ||
"Ron van den Beuken" -> "Tatana" [label="United Music"]; | ||
"Ron van den Beuken" -> "Fidde Stiggson" [label="Visions"]; | ||
"Ron van den Beuken" -> "Tom Pulse" [label="Time"]; | ||
"Michelle Ericsson" -> "Alex Torn" [label="Electro Avenue"]; | ||
"Mr. Eyez" -> "John Joshua feat. Mr Eyez" [label="Way of Life"]; | ||
"Mr. Eyez" -> "Doug Smuggler" [label="Sukka MC's"]; | ||
"Mr. Eyez" -> "New Vegas" [label="Hard Funk"]; | ||
"Interstate" -> "Hammer & Bennett" [label="Coldharbour Selections Part 8"]; | ||
"Tom Pulse" -> "Tom Pulse feat. Fit4Funk" [label="Flying Through the Air"]; | ||
"Hammer & Bennett" -> "Lens" [label="Coldharbour Selections Part 10"]; | ||
"Lens" -> "Santiago Nino" [label="Coldharbour Selections Part 6"]; | ||
"Santiago Nino" -> "Hammer" [label="Coldharbour Selections Part 19"]; | ||
} |
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
|
||
# shows artist info for a URN or URL | ||
|
||
import spotipy | ||
import sys | ||
import pprint | ||
|
||
if len(sys.argv) > 1: | ||
urn = sys.argv[1] | ||
else: | ||
urn = 'spotify:artist:3jOstUTkEu2JkjvRdBA5Gu' | ||
|
||
|
||
sp = spotipy.Spotify() | ||
artist = sp.artist(urn) | ||
pprint.pprint(artist) | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters