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