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 == 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)
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)
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()