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"
Beispiel #3
0
	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
Beispiel #4
0
	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