loads spotify playlists and plays songs
This commit is contained in:
parent
f15967bcf3
commit
be7a3de9af
@ -35,6 +35,9 @@ class BaseBackend(object):
|
||||
def stop(self):
|
||||
pass
|
||||
|
||||
def play(self, songid):
|
||||
pass
|
||||
|
||||
# Current/single playlist methods
|
||||
def playlist_changes(self, version):
|
||||
return None
|
||||
|
||||
@ -10,22 +10,51 @@ class SpotifyBackend(BaseBackend):
|
||||
settings.SPOTIFY_USERNAME.encode('utf-8'),
|
||||
settings.SPOTIFY_PASSWORD.encode('utf-8'))
|
||||
self._playlist_load_cache = None
|
||||
self.current_playlist = []
|
||||
self.current_playlist_version = 0
|
||||
|
||||
def playlist_load(self, name):
|
||||
if not self._playlist_load_cache:
|
||||
for playlist in self.spotify.stored_playlists:
|
||||
if playlist.name == name:
|
||||
tracks = []
|
||||
for track in playlist.tracks:
|
||||
tracks.append(u'add %s\n' % track.file_id)
|
||||
self._playlist_load_cache = tracks
|
||||
break
|
||||
return self._playlist_load_cache
|
||||
for playlist in self.spotify.stored_playlists:
|
||||
if playlist.name == name:
|
||||
self.current_playlist = playlist.tracks
|
||||
self.current_playlist_version += len(playlist.tracks)
|
||||
break
|
||||
|
||||
def playlists_list(self):
|
||||
playlists = []
|
||||
for playlist in self.spotify.stored_playlists:
|
||||
playlists.append(u'playlist: %s' % playlist.name.decode('utf-8'))
|
||||
return playlists
|
||||
if self._playlist_load_cache is None:
|
||||
self._playlist_load_cache = []
|
||||
for playlist in self.spotify.stored_playlists:
|
||||
self._playlist_load_cache.append(u'playlist: %s' % playlist.name.decode('utf-8'))
|
||||
return self._playlist_load_cache
|
||||
|
||||
def status_playlist_length(self):
|
||||
return len(self.current_playlist)
|
||||
|
||||
def playlist_changes(self, songpos):
|
||||
tracks = []
|
||||
pos = 0
|
||||
id = 0
|
||||
|
||||
for track in self.current_playlist:
|
||||
tracks.append(u'file: %s' % track.track_id)
|
||||
tracks.append(u'Time: %d' % (track.length/1000))
|
||||
tracks.append(u'Artist: %s' % track.artists[0].name)
|
||||
tracks.append(u'Title: %s' % track.title)
|
||||
tracks.append(u'Album: %s' % track.album)
|
||||
tracks.append(u'Track: %s' % track.tracknumber)
|
||||
tracks.append(u'Pos: %d' % pos)
|
||||
tracks.append(u'Id: %d' % id)
|
||||
|
||||
pos += 1
|
||||
id += 1
|
||||
return tracks
|
||||
|
||||
def play_id(self, songid):
|
||||
track = self.current_playlist[songid]
|
||||
self.spotify.play(track)
|
||||
|
||||
def stop(self):
|
||||
self.spotify.stop()
|
||||
|
||||
def status_playlist(self):
|
||||
return self.current_playlist_version
|
||||
|
||||
@ -107,7 +107,7 @@ class MpdHandler(object):
|
||||
def _listplaylists(self):
|
||||
return self.backend.playlists_list()
|
||||
|
||||
@register(r'^load (?P<name>.+)$')
|
||||
@register(r'^load "(?P<name>.+)"$')
|
||||
def _load(self, name):
|
||||
return self.backend.playlist_load(name)
|
||||
|
||||
@ -142,13 +142,13 @@ class MpdHandler(object):
|
||||
def _ping(self):
|
||||
pass
|
||||
|
||||
@register(r'^play (?P<songpos>.+)$')
|
||||
@register(r'^play "(?P<songpos>\d+)"$')
|
||||
def _play(self, songpos):
|
||||
pass # TODO
|
||||
|
||||
@register(r'^playid (?P<songid>.+)$')
|
||||
@register(r'^playid "(?P<songid>\d+)"$')
|
||||
def _playid(self, songid):
|
||||
pass # TODO
|
||||
return self.backend.play_id(int(songid))
|
||||
|
||||
@register(r'^playlist$')
|
||||
def _playlist(self):
|
||||
|
||||
Loading…
Reference in New Issue
Block a user