Example #1
0
    def track_playback_started(self, track):
        try:
            if track.name == u'[loading...]':
                spotify_track = Link.from_string(track.uri).as_track()
                # TODO Block until metadata_updated callback is called. Before that
                # the track will be unloaded, unless it's already in the stored
                # playlists.
                if not spotify_track.is_loaded():
                    logger.debug(u'Looking up "%s" from metadata API', track.uri)
                    spotify_track = utils.lookup_spotify_track(track.uri)
                    track = Track(
                                uri=track.uri,
                                name=spotify_track["track"]["name"],
                                artists=[Artist(name=artist["name"], uri=artist["href"]) for artist in spotify_track["track"]["artists"]],
                                album=Album(name=spotify_track["track"]["album"]["name"], uri=spotify_track["track"]["album"]["href"]),
                                track_no=spotify_track["track"]["track-number"],
                                length=spotify_track["track"]["length"],
                                bitrate=settings.SPOTIFY_BITRATE,
                            )
                else:
                    track = SpotifyTranslator.to_mopidy_track(spotify_track)

            # Tweet #Nowplaying ... / ... requested by @...
            artists = ', '.join([a.name for a in track.artists])
            uri = track.uri
            screen_name = self.requests.pop(uri)

            # Send tweet!
            tweet = u'#Nowplaying %s / %s, requested by @%s %s' % (artists, track.name, screen_name, utils.spotify_uri_to_url(uri))
            self.api.update_status(status=tweet, lat="50.82519295639108", long="-0.14594435691833496", display_coordinates="1")
            logger.info(u'Tweeted: %s' % tweet)

        except SpotifyError, e:
            logger.debug(u'Failed to lookup "%s": %s', track.uri, e)
Example #2
0
 def callback(results, userdata=None):
     # TODO Include results from results.albums(), etc. too
     # TODO Consider launching a second search if results.total_tracks()
     # is larger than len(results.tracks())
     playlist = Playlist(tracks=[
         SpotifyTranslator.to_mopidy_track(t)
         for t in results.tracks()])
     queue.put(playlist)
Example #3
0
 def callback(results, userdata=None):
     # TODO Include results from results.albums(), etc. too
     # TODO Consider launching a second search if results.total_tracks()
     # is larger than len(results.tracks())
     playlist = Playlist(tracks=[
         SpotifyTranslator.to_mopidy_track(t) for t in results.tracks()
     ])
     queue.put(playlist)
Example #4
0
 def _proxy(self):
     if self._track:
         return self._track
     elif self._spotify_track.is_loaded():
         self._track = SpotifyTranslator.to_mopidy_track(self._spotify_track)
         return self._track
     else:
         return self._unloaded_track
Example #5
0
 def refresh_stored_playlists(self):
     """Refresh the stored playlists in the backend with fresh meta data
     from Spotify"""
     playlists = []
     for spotify_playlist in self.session.playlist_container():
         playlists.append(SpotifyTranslator.to_mopidy_playlist(spotify_playlist))
     playlists = filter(None, playlists)
     self.core_queue.put({"command": "set_stored_playlists", "playlists": playlists})
     logger.debug(u"Refreshed %d stored playlist(s)", len(playlists))
Example #6
0
 def lookup(self, uri):
     try:
         spotify_track = Link.from_string(uri).as_track()
         # TODO Block until metadata_updated callback is called. Before that
         # the track will be unloaded, unless it's already in the stored
         # playlists.
         return SpotifyTranslator.to_mopidy_track(spotify_track)
     except SpotifyError as e:
         logger.debug(u'Failed to lookup "%s": %s', uri, e)
         return None
Example #7
0
 def lookup(self, uri):
     try:
         spotify_track = Link.from_string(uri).as_track()
         # TODO Block until metadata_updated callback is called. Before that
         # the track will be unloaded, unless it's already in the stored
         # playlists.
         return SpotifyTranslator.to_mopidy_track(spotify_track)
     except SpotifyError as e:
         logger.debug(u'Failed to lookup "%s": %s', uri, e)
         return None
Example #8
0
 def refresh_stored_playlists(self):
     """Refresh the stored playlists in the backend with fresh meta data
     from Spotify"""
     playlists = []
     for spotify_playlist in self.session.playlist_container():
         playlists.append(
             SpotifyTranslator.to_mopidy_playlist(spotify_playlist))
     playlists = filter(None, playlists)
     self.backend.stored_playlists.playlists = playlists
     logger.debug(u'Refreshed %d stored playlist(s)', len(playlists))
Example #9
0
 def refresh_stored_playlists(self):
     """Refresh the stored playlists in the backend with fresh meta data
     from Spotify"""
     playlists = []
     for spotify_playlist in self.session.playlist_container():
         playlists.append(
             SpotifyTranslator.to_mopidy_playlist(spotify_playlist))
     playlists = filter(None, playlists)
     self.backend.stored_playlists.playlists = playlists
     logger.debug(u'Refreshed %d stored playlist(s)', len(playlists))
Example #10
0
    def track_playback_started(self, track):
        try:
            if track.name == u'[loading...]':
                spotify_track = Link.from_string(track.uri).as_track()
                # TODO Block until metadata_updated callback is called. Before that
                # the track will be unloaded, unless it's already in the stored
                # playlists.
                if not spotify_track.is_loaded():
                    logger.debug(u'Looking up "%s" from metadata API',
                                 track.uri)
                    spotify_track = utils.lookup_spotify_track(track.uri)
                    track = Track(
                        uri=track.uri,
                        name=spotify_track["track"]["name"],
                        artists=[
                            Artist(name=artist["name"], uri=artist["href"])
                            for artist in spotify_track["track"]["artists"]
                        ],
                        album=Album(
                            name=spotify_track["track"]["album"]["name"],
                            uri=spotify_track["track"]["album"]["href"]),
                        track_no=spotify_track["track"]["track-number"],
                        length=spotify_track["track"]["length"],
                        bitrate=settings.SPOTIFY_BITRATE,
                    )
                else:
                    track = SpotifyTranslator.to_mopidy_track(spotify_track)

            # Tweet #Nowplaying ... / ... requested by @...
            artists = ', '.join([a.name for a in track.artists])
            uri = track.uri
            screen_name = self.requests.pop(uri)

            # Send tweet!
            tweet = u'#Nowplaying %s / %s, requested by @%s %s' % (
                artists, track.name, screen_name,
                utils.spotify_uri_to_url(uri))
            self.api.update_status(status=tweet,
                                   lat="50.82519295639108",
                                   long="-0.14594435691833496",
                                   display_coordinates="1")
            logger.info(u'Tweeted: %s' % tweet)

        except SpotifyError, e:
            logger.debug(u'Failed to lookup "%s": %s', track.uri, e)
Example #11
0
 def callback(results, userdata=None):
     # TODO Include results from results.albums(), etc. too
     playlist = Playlist(tracks=[SpotifyTranslator.to_mopidy_track(t) for t in results.tracks()])
     connection.send(playlist)