def default(self, uri = None): if uri == None: raise cherrypy.HTTPError(400, "A paramater was expected but not supplied.") spotify = Spotify(sys.argv[1], sys.argv[2]) track = spotify.objectFromURI(uri) if track == None: spotify.logout() raise cherrypy.HTTPError(404, "Could not find a track with that URI.") url = track.getFileURL() if url == False: spotify.logout() raise cherrypy.HTTPError(404, "Could not find a track URL for that URI.") spotify.logout() raise cherrypy.HTTPRedirect(url)
class SpotifyTest(unittest.TestCase): def setUp(self): self.spotify = Spotify(USERNAME, PASSWORD) if not self.spotify.logged_in(): print "Login failed" def tearDown(self): self.spotify.logout() def test_get_track_by_uri(self): test_uris = { "spotify:track:4DoiEk7AaubTkIkYencvx7": { "title": "Figure 8", "artist": "Ellie Goulding", "album": "Halcyon" }, "spotify:track:6Qmmzzo9Sdk0QZp0dfLpGk": { "title": "Commander", "artist": "Kelly Rowland, David Guetta", "album": "Commander" } } for uri, reference in test_uris.items(): track = self.spotify.objectFromURI(uri) self.assertEqual(reference["title"], track.getName()) self.assertEqual(reference["artist"], track.getArtists(nameOnly=True)) self.assertEqual(reference["album"], track.getAlbum(nameOnly=True)) def test_playlist_add_delete(self): playlist_name = "unittests" before = len(self.spotify.getPlaylists()) new_playlist = self.spotify.newPlaylist(playlist_name) time.sleep(2) playlist_names = [playlist.getName() for playlist in self.spotify.getPlaylists()] self.assertIn(playlist_name, playlist_names) self.assertEqual(before+1, len(self.spotify.getPlaylists())) self.spotify.removePlaylist(new_playlist) time.sleep(2) playlist_names = [playlist.getName() for playlist in self.spotify.getPlaylists()] self.assertNotIn(playlist_name, playlist_names) self.assertEqual(before, len(self.spotify.getPlaylists()))
def default(self, uri=None): if uri is None: raise cherrypy.HTTPError( 400, "A paramater was expected but not supplied.") spotify = Spotify(sys.argv[1], sys.argv[2]) track = spotify.objectFromURI(uri) if track is None: spotify.logout() raise cherrypy.HTTPError(404, "Could not find a track with that URI.") url = track.getFileURL() if not url: spotify.logout() raise cherrypy.HTTPError( 404, "Could not find a track URL for that URI.") spotify.logout() raise cherrypy.HTTPRedirect(url)
class SpotifyClient(object): audio_buffer_size = 50 user_agent = PLUGIN_ID def __init__(self, username, password): """ Initializer :param username: The username to connect to spotify with. :param password: The password to authenticate with. """ # Hook logging Logging.hook(3, Log.Debug) Logging.hook(2, Log.Info) Logging.hook(1, Log.Warn) Logging.hook(0, Log.Error) self.username = username self.spotify = Spotify(username, password, log_level=3) # # Public methods # def is_logged_in(self): return self.spotify.logged_in() def restart(self, username, password): return self.spotify.restart(username, password) def shutdown(self): self.spotify.shutdown() def search(self, query, query_type="all", max_results=50, offset=0): """ Execute a search :param query: A query string. """ return self.spotify.search(query, query_type, max_results, offset) # # Media # def get(self, uri): return self.spotify.objectFromURI(uri) def is_album_playable(self, album): """ Check if an album can be played by a client or not """ return True def is_track_playable(self, track): """ Check if a track can be played by a client or not """ return True # # Explore # def get_featured_playlists(self): return self.spotify.getFeaturedPlaylists() def get_top_playlists(self): return self.spotify.getTopPlaylists() def get_new_releases(self): return self.spotify.getNewReleases() def get_genres(self): return self.spotify.getGenres() def get_playlists_by_genre(self, genre_name): return self.spotify.getPlaylistsByGenre(genre_name) # # Discover # def discover(self): """ Return the user's stories """ return self.spotify.discover() # # Radio # def get_radio_genres(self): return self.spotify.getRadioGenres() def get_radio_stations(self): return self.spotify.getRadioStations() def get_radio(self, radio_uri): radios = [] if "spotify:genre:" in radio_uri: radios = self.spotify.getRadioGenres() else: radios = self.spotify.getRadioStations() for radio in radios: if radio.getURI() == radio_uri: return radio return self.spotify.newRadioStation(radio_uri) # # Playlists # def get_playlists(self): """ Return the user's playlists""" return self.spotify.getPlaylists() def get_starred(self): """ Return the user's starred tracks""" return self.get("spotify:user:%s:starred" % self.username) # # My Music # def get_my_albums(self): """ Return the user's albums""" return self.spotify.getMyMusic(type="albums") def get_my_artists(self): """ Return the user's artists""" return self.spotify.getMyMusic(type="artists") # # Uri validation # def is_track_uri_valid(self, track_uri): return self.spotify.is_track_uri_valid(track_uri)
elif msg.type == gst.MESSAGE_ERROR: player.set_state(gst.STATE_NULL) print msg.parse_error() if len(sys.argv) < 3: print "Usage: "+sys.argv[0]+" <username> <password> [track URI]" else: sp = Spotify(sys.argv[1], sys.argv[2]) mainloop = gobject.MainLoop() player = gst.parse_launch('uridecodebin name=uridecode ! autoaudiosink') bus = player.get_bus() bus.add_signal_watch() bus.connect('message', player_message, player, mainloop) uri = sys.argv[3] if len(sys.argv) > 3 else "spotify:track:6NwbeybX6TDtXlpXvnUOZC" track = sp.objectFromURI(uri) print ','.join([a.getName() for a in track.getArtists()])+' - '+track.getName() mp3_uri = track.getFileURL() player.get_by_name('uridecode').set_property('uri', mp3_uri) player.set_state(gst.STATE_PLAYING) signal.signal(signal.SIGINT, sigint) mainloop.run() sp.logout()
elif msg.type == gst.MESSAGE_ERROR: player.set_state(gst.STATE_NULL) print msg.parse_error() if len(sys.argv) < 3: print "Usage: " + sys.argv[0] + " <username> <password> [track URI]" else: sp = Spotify(sys.argv[1], sys.argv[2]) mainloop = gobject.MainLoop() player = gst.parse_launch('uridecodebin name=uridecode ! autoaudiosink') bus = player.get_bus() bus.add_signal_watch() bus.connect('message', player_message, player, mainloop) uri = sys.argv[3] if len(sys.argv) > 3 else "spotify:track:6NwbeybX6TDtXlpXvnUOZC" track = sp.objectFromURI(uri) print ','.join([a.getName() for a in track.getArtists()]) + ' - ' + track.getName() mp3_uri = track.getFileURL() player.get_by_name('uridecode').set_property('uri', mp3_uri) player.set_state(gst.STATE_PLAYING) signal.signal(signal.SIGINT, sigint) mainloop.run() sp.logout()
global aodev curl_obj = pycurl.Curl() curl_obj.setopt(pycurl.WRITEFUNCTION, play_stream) curl_obj.setopt(pycurl.URL, str(uri)) curl_obj.perform() curl_obj.close() mpg123.mpg123_close(ctypes.c_void_p(mh)) mpg123.mpg123_delete(ctypes.c_void_p(mh)) mpg123.mpg123_exit() ao.ao_close(ctypes.c_void_p(aodev)) ao.ao_shutdown() if len(sys.argv) < 3: print "Usage: "+sys.argv[0]+" <username> <password> [URI]" else: sp = Spotify(sys.argv[1], sys.argv[2]) if sp.logged_in() == False: print "Login failed" else: uri = sys.argv[3] if len(sys.argv) > 3 else "spotify:track:6NwbeybX6TDtXlpXvnUOZC" obj = sp.objectFromURI(uri) if obj.uri_type == "track": print obj.getName(), obj.getDuration()/1000.0, "seconds" play_track(obj.getFileURL()) else: print "No support for yet for", obj.uri_type sp.logout()
class SpotifyClient(object): audio_buffer_size = 50 user_agent = PLUGIN_ID def __init__(self, username, password): """ Initializer :param username: The username to connect to spotify with. :param password: The password to authenticate with. """ # Hook logging Logging.hook(3, Log.Debug) Logging.hook(2, Log.Info) Logging.hook(1, Log.Warn) Logging.hook(0, Log.Error) self.username = username self.spotify = Spotify(username, password, log_level=3) # # Public methods # def is_logged_in(self): return self.spotify.logged_in() def restart(self, username, password): return self.spotify.restart(username, password) def shutdown(self): self.spotify.shutdown() def search(self, query, query_type='all', max_results=50, offset=0): """ Execute a search :param query: A query string. """ return self.spotify.search(query, query_type, max_results, offset) # # Media # def get(self, uri): return self.spotify.objectFromURI(uri) def is_album_playable(self, album): """ Check if an album can be played by a client or not """ return True def is_track_playable(self, track): """ Check if a track can be played by a client or not """ return True # # Explore # def get_featured_playlists(self): return self.spotify.getFeaturedPlaylists() def get_top_playlists(self): return self.spotify.getTopPlaylists() def get_new_releases(self): return self.spotify.getNewReleases() def get_genres(self): return self.spotify.getGenres() def get_playlists_by_genre(self, genre_name): return self.spotify.getPlaylistsByGenre(genre_name) # # Discover # def discover(self): """ Return the user's stories """ return self.spotify.discover() # # Radio # def get_radio_genres(self): return self.spotify.getRadioGenres() def get_radio_stations(self): return self.spotify.getRadioStations() def get_radio(self, radio_uri): radios = [] if "spotify:genre:" in radio_uri: radios = self.spotify.getRadioGenres() else: radios = self.spotify.getRadioStations() for radio in radios: if radio.getURI() == radio_uri: return radio return self.spotify.newRadioStation(radio_uri) # # Playlists # def get_playlists(self): """ Return the user's playlists""" return self.spotify.getPlaylists() def get_starred(self): """ Return the user's starred tracks""" return self.get('spotify:user:%s:starred' % self.username) # # My Music # def get_my_albums(self): """ Return the user's albums""" return self.spotify.getMyMusic(type="albums") def get_my_artists(self): """ Return the user's artists""" return self.spotify.getMyMusic(type="artists") # # Uri validation # def is_track_uri_valid(self, track_uri): return self.spotify.is_track_uri_valid(track_uri)
curl_obj.setopt(pycurl.WRITEFUNCTION, play_stream) curl_obj.setopt(pycurl.URL, str(uri)) curl_obj.perform() curl_obj.close() mpg123.mpg123_close(ctypes.c_void_p(mh)) mpg123.mpg123_delete(ctypes.c_void_p(mh)) mpg123.mpg123_exit() ao.ao_close(ctypes.c_void_p(aodev)) ao.ao_shutdown() if len(sys.argv) < 3: print "Usage: "+sys.argv[0]+" <username> <password> [URI]" else: sp = Spotify(sys.argv[1], sys.argv[2]) if not sp.logged_in(): print "Login failed" else: uri = sys.argv[3] if len(sys.argv) > 3 else "spotify:track:6NwbeybX6TDtXlpXvnUOZC" obj = sp.objectFromURI(uri) if obj is not None: if obj.uri_type == "track": print obj.getName(), obj.getDuration()/1000.0, "seconds" play_track(obj.getFileURL()) else: print "No support for yet for", obj.uri_type else: print "Request for %s failed" % uri sp.logout()