diff --git a/mopidy/backends/spotify/library.py b/mopidy/backends/spotify/library.py index e237a04a..bf057bee 100644 --- a/mopidy/backends/spotify/library.py +++ b/mopidy/backends/spotify/library.py @@ -6,7 +6,7 @@ from spotify import Link, SpotifyError from mopidy.backends import base from mopidy.models import Track, Playlist -from .translator import SpotifyTranslator +from . import translator logger = logging.getLogger('mopidy.backends.spotify') @@ -24,8 +24,7 @@ class SpotifyTrack(Track): if self._track: return self._track elif self._spotify_track.is_loaded(): - self._track = SpotifyTranslator.to_mopidy_track( - self._spotify_track) + self._track = translator.to_mopidy_track(self._spotify_track) return self._track else: return self._unloaded_track diff --git a/mopidy/backends/spotify/session_manager.py b/mopidy/backends/spotify/session_manager.py index 983f3861..23b99d48 100644 --- a/mopidy/backends/spotify/session_manager.py +++ b/mopidy/backends/spotify/session_manager.py @@ -8,9 +8,9 @@ from mopidy import settings from mopidy.models import Playlist from mopidy.utils import process, versioning +from . import translator from .container_manager import SpotifyContainerManager from .playlist_manager import SpotifyPlaylistManager -from .translator import SpotifyTranslator logger = logging.getLogger('mopidy.backends.spotify') @@ -141,8 +141,7 @@ class SpotifySessionManager(process.BaseThread, PyspotifySessionManager): logger.debug(u'Still getting data; skipped refresh of playlists') return playlists = map( - SpotifyTranslator.to_mopidy_playlist, - self.session.playlist_container()) + translator.to_mopidy_playlist, self.session.playlist_container()) playlists = filter(None, playlists) self.backend.stored_playlists.playlists = playlists logger.info(u'Loaded %d Spotify playlist(s)', len(playlists)) @@ -154,8 +153,7 @@ class SpotifySessionManager(process.BaseThread, PyspotifySessionManager): # 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()]) + translator.to_mopidy_track(t) for t in results.tracks()]) queue.put(playlist) self.connected.wait() self.session.search( diff --git a/mopidy/backends/spotify/translator.py b/mopidy/backends/spotify/translator.py index b424e4b1..4ad92fe9 100644 --- a/mopidy/backends/spotify/translator.py +++ b/mopidy/backends/spotify/translator.py @@ -1,69 +1,63 @@ -import logging - from spotify import Link from mopidy import settings from mopidy.models import Artist, Album, Track, Playlist -logger = logging.getLogger('mopidy.backends.spotify') + +def to_mopidy_artist(spotify_artist): + if spotify_artist is None: + return + uri = str(Link.from_artist(spotify_artist)) + if not spotify_artist.is_loaded(): + return Artist(uri=uri, name=u'[loading...]') + return Artist(uri=uri, name=spotify_artist.name()) -class SpotifyTranslator(object): - @classmethod - def to_mopidy_artist(cls, spotify_artist): - if spotify_artist is None: - return - uri = str(Link.from_artist(spotify_artist)) - if not spotify_artist.is_loaded(): - return Artist(uri=uri, name=u'[loading...]') - return Artist(uri=uri, name=spotify_artist.name()) +def to_mopidy_album(spotify_album): + if spotify_album is None: + return + uri = str(Link.from_album(spotify_album)) + if not spotify_album.is_loaded(): + return Album(uri=uri, name=u'[loading...]') + return Album( + uri=uri, + name=spotify_album.name(), + artists=[to_mopidy_artist(spotify_album.artist())], + date=spotify_album.year()) - @classmethod - def to_mopidy_album(cls, spotify_album): - if spotify_album is None: - return - uri = str(Link.from_album(spotify_album)) - if not spotify_album.is_loaded(): - return Album(uri=uri, name=u'[loading...]') - return Album( - uri=uri, - name=spotify_album.name(), - artists=[cls.to_mopidy_artist(spotify_album.artist())], - date=spotify_album.year()) - @classmethod - def to_mopidy_track(cls, spotify_track): - if spotify_track is None: - return - uri = str(Link.from_track(spotify_track, 0)) - if not spotify_track.is_loaded(): - return Track(uri=uri, name=u'[loading...]') - spotify_album = spotify_track.album() - if spotify_album is not None and spotify_album.is_loaded(): - date = spotify_album.year() - else: - date = None - return Track( - uri=uri, - name=spotify_track.name(), - artists=[cls.to_mopidy_artist(a) for a in spotify_track.artists()], - album=cls.to_mopidy_album(spotify_track.album()), - track_no=spotify_track.index(), - date=date, - length=spotify_track.duration(), - bitrate=settings.SPOTIFY_BITRATE) +def to_mopidy_track(spotify_track): + if spotify_track is None: + return + uri = str(Link.from_track(spotify_track, 0)) + if not spotify_track.is_loaded(): + return Track(uri=uri, name=u'[loading...]') + spotify_album = spotify_track.album() + if spotify_album is not None and spotify_album.is_loaded(): + date = spotify_album.year() + else: + date = None + return Track( + uri=uri, + name=spotify_track.name(), + artists=[to_mopidy_artist(a) for a in spotify_track.artists()], + album=to_mopidy_album(spotify_track.album()), + track_no=spotify_track.index(), + date=date, + length=spotify_track.duration(), + bitrate=settings.SPOTIFY_BITRATE) - @classmethod - def to_mopidy_playlist(cls, spotify_playlist): - if spotify_playlist is None or spotify_playlist.type() != 'playlist': - return - uri = str(Link.from_playlist(spotify_playlist)) - if not spotify_playlist.is_loaded(): - return Playlist(uri=uri, name=u'[loading...]') - return Playlist( - uri=uri, - name=spotify_playlist.name(), - tracks=[ - cls.to_mopidy_track(spotify_track) - for spotify_track in spotify_playlist - if not spotify_track.is_local()]) + +def to_mopidy_playlist(spotify_playlist): + if spotify_playlist is None or spotify_playlist.type() != 'playlist': + return + uri = str(Link.from_playlist(spotify_playlist)) + if not spotify_playlist.is_loaded(): + return Playlist(uri=uri, name=u'[loading...]') + return Playlist( + uri=uri, + name=spotify_playlist.name(), + tracks=[ + to_mopidy_track(spotify_track) + for spotify_track in spotify_playlist + if not spotify_track.is_local()])