Separate library album actions “queue” and “play” (close #54)
This commit is contained in:
parent
ec4346981f
commit
79148a56f4
2 changed files with 44 additions and 29 deletions
|
|
@ -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):
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue