Convert Spotify translator to plain functions
This commit is contained in:
parent
e792fcd3b9
commit
1207700a15
@ -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
|
||||
|
||||
@ -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(
|
||||
|
||||
@ -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()])
|
||||
|
||||
Loading…
Reference in New Issue
Block a user