Separate library album actions “queue” and “play” (close #54)

This commit is contained in:
coderkun 2018-09-01 19:21:33 +02:00
commit 79148a56f4
2 changed files with 44 additions and 29 deletions

View file

@ -243,15 +243,21 @@ class Client(Base):
def play_album(self, album):
"""Play the given album."""
"""Add the given album to the queue and play it immediately."""
self._logger.info("play album")
self._add_action(self._play_album, album)
def play_albums(self, albums):
"""Play multiple albums."""
def queue_album(self, album):
"""Add the given album to the queue."""
self._logger.info("play album")
self._add_action(self._queue_album, album)
def queue_albums(self, albums):
"""Add the given albums to the queue."""
self._logger.info("play albums")
self._add_action(self._play_albums, albums)
self._add_action(self._queue_albums, albums)
def seek(self, pos, time):
@ -559,8 +565,16 @@ class Client(Base):
def _play_album(self, album):
track_ids = self._queue_album(album)
if track_ids:
self._logger.info("play track %d", track_ids[0])
self._call('playid', track_ids[0])
def _queue_album(self, album):
track_ids = []
if album in self._albums:
track_ids = []
self._logger.info("add album %s", album)
for track in self._albums[album].get_tracks():
self._logger.info("addid: %r", track.get_file())
track_id = None
@ -570,26 +584,13 @@ class Client(Base):
self._logger.debug("track id: %r", track_id)
if track_id is not None:
track_ids.append(track_id)
if self._state != 'play' and track_ids:
self._call('playid', track_ids[0])
return track_ids
def _play_albums(self, albums):
def _queue_albums(self, albums):
track_ids = []
for album in albums:
self._logger.info("add album %s", album)
if album in self._albums:
for track in self._albums[album].get_tracks():
self._logger.info("addid: %r", track.get_file())
track_id = None
track_id_response = self._parse_dict(self._call('addid', track.get_file()))
if 'id' in track_id_response:
track_id = track_id_response['id']
self._logger.debug("track id: %r", track_id)
if track_id is not None:
track_ids.append(track_id)
if self._state != 'play' and track_ids:
self._call('playid', track_ids[0])
track_ids.extend(self._queue_album(album))
def _seek(self, pos, time):