예제 #1
0
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)
예제 #3
0
    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()
예제 #5
0
    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()