def objectFromURI(self, uris): if self.logged_in() == False: return False uris = [uris] if type(uris) != list else uris uri_type = SpotifyUtil.get_uri_type(uris[0]) if uri_type == False: return None elif uri_type == "playlist": results = [SpotifyPlaylist(self, uri=uri) for uri in uris] elif uri_type in ["track", "album", "artist"]: uris = [uri for uri in uris if not SpotifyUtil.is_local(uri)] objs = self.api.metadata_request(uris) objs = [objs] if type(objs) != list else objs if uri_type == "track": results = [SpotifyTrack(self, obj=obj) for obj in objs] elif uri_type == "album": results = [SpotifyAlbum(self, obj=obj) for obj in objs] elif uri_type == "artist": results = [SpotifyArtist(self, obj=obj) for obj in objs] else: return None if len(results) == 1: return results[0] else: return results
def display_playlist(playlist): print playlist.attributes.name+"\n" track_uris = [track.uri for track in playlist.contents.items if SpotifyUtil.get_uri_type(track.uri) != "local"] tracks = sp.metadata_request(track_uris) for track in tracks: print track.name print "\n"
def get(self, uri): cache = { "track": self.track_cache, "album": self.album_cache, "artist": self.artist_cache, } uri_type = SpotifyUtil.get_uri_type(uri) if uri_type not in cache: return False
def objectFromURI(self, uris, asArray = False): if self.logged_in() == False: return False uris = [uris] if type(uris) != list else uris if len(uris) == 0: return [] if asArray else None uri_type = SpotifyUtil.get_uri_type(uris[0]) if uri_type == False: return None elif uri_type == "playlist": if len(uris) == 1: results = [SpotifyPlaylist(self, uri=uris[0])] else: thread_results = {} jobs = [] for index in range(0, len(uris)): jobs.append((self, uris[index], thread_results, index)) def work_function(spotify, uri, results, index): results[index] = SpotifyPlaylist(spotify, uri=uri) Spotify.doWorkerQueue(work_function, jobs) results = [v for k, v in thread_results.items()] elif uri_type in ["track", "album", "artist"]: uris = [uri for uri in uris if not SpotifyUtil.is_local(uri)] objs = self.api.metadata_request(uris) objs = [objs] if type(objs) != list else objs failed_requests = len([obj for obj in objs if obj == False]) if failed_requests > 0: print failed_requests,"metadata requests failed" objs = [obj for obj in objs if obj != False] if uri_type == "track": tracks = [SpotifyTrack(self, obj=obj) for obj in objs] results = [track for track in tracks if self.AUTOREPLACE_TRACKS == False or track.isAvailable()] elif uri_type == "album": results = [SpotifyAlbum(self, obj=obj) for obj in objs] elif uri_type == "artist": results = [SpotifyArtist(self, obj=obj) for obj in objs] else: return None if asArray == False: if len(results) == 1: results = results[0] elif len(results) == 0: return None return results