Skip to content

Commit fb6cded

Browse files
committed
fix for group player power
1 parent 5a29490 commit fb6cded

File tree

2 files changed

+29
-16
lines changed

2 files changed

+29
-16
lines changed

music_assistant/constants.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
"""All constants for Music Assistant."""
22

3-
__version__ = "0.0.32"
3+
__version__ = "0.0.33"
44
REQUIRED_PYTHON_VER = "3.7"
55

66
CONF_USERNAME = "username"

music_assistant/player_manager.py

Lines changed: 28 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -316,32 +316,40 @@ async def async_cmd_stop(self, player_id: str) -> None:
316316
317317
:param player_id: player_id of the player to handle the command.
318318
"""
319-
# TODO: redirect playback related commands to parent player?
320-
return await self.get_player_provider(player_id).async_cmd_stop(player_id)
319+
player = self.get_player(player_id)
320+
queue_player_id = player.active_queue
321+
return await self.get_player_provider(queue_player_id).async_cmd_stop(
322+
queue_player_id
323+
)
321324

322325
async def async_cmd_play(self, player_id: str) -> None:
323326
"""
324327
Send PLAY command to given player.
325328
326329
:param player_id: player_id of the player to handle the command.
327330
"""
328-
# power on at play request
329-
await self.async_cmd_power_on(player_id)
330331
player = self.get_player(player_id)
332+
queue_player_id = player.active_queue
331333
# unpause if paused else resume queue
332334
if player.state == PlayerState.Paused:
333-
return await self.get_player_provider(player_id).async_cmd_play(player_id)
334-
return await self._player_queues[player_id].async_resume()
335-
# TODO: redirect playback related commands to parent player?
335+
return await self.get_player_provider(queue_player_id).async_cmd_play(
336+
queue_player_id
337+
)
338+
# power on at play request
339+
await self.async_cmd_power_on(player_id)
340+
return await self._player_queues[queue_player_id].async_resume()
336341

337342
async def async_cmd_pause(self, player_id: str):
338343
"""
339344
Send PAUSE command to given player.
340345
341346
:param player_id: player_id of the player to handle the command.
342347
"""
343-
return await self.get_player_provider(player_id).async_cmd_pause(player_id)
344-
# TODO: redirect playback related commands to parent player?
348+
player = self.get_player(player_id)
349+
queue_player_id = player.active_queue
350+
return await self.get_player_provider(queue_player_id).async_cmd_pause(
351+
queue_player_id
352+
)
345353

346354
async def async_cmd_play_pause(self, player_id: str):
347355
"""
@@ -360,15 +368,19 @@ async def async_cmd_next(self, player_id: str):
360368
361369
:param player_id: player_id of the player to handle the command.
362370
"""
363-
return await self.get_player_queue(player_id).async_next()
371+
player = self.get_player(player_id)
372+
queue_player_id = player.active_queue
373+
return await self.get_player_queue(queue_player_id).async_next()
364374

365375
async def async_cmd_previous(self, player_id: str):
366376
"""
367377
Send PREVIOUS TRACK command to given player.
368378
369379
:param player_id: player_id of the player to handle the command.
370380
"""
371-
return await self.get_player_queue(player_id).async_previous()
381+
player = self.get_player(player_id)
382+
queue_player_id = player.active_queue
383+
return await self.get_player_queue(queue_player_id).async_previous()
372384

373385
async def async_cmd_power_on(self, player_id: str) -> None:
374386
"""
@@ -405,19 +417,20 @@ async def async_cmd_power_off(self, player_id: str) -> None:
405417
if player.is_group_player:
406418
# player is group, turn off all childs
407419
for child_player_id in player.group_childs:
408-
if self._players.get(child_player_id):
420+
child_player = self.get_player(child_player_id)
421+
if child_player and child_player.powered:
409422
await self.async_cmd_power_off(child_player_id)
410423
else:
411424
# if this was the last powered player in the group, turn off group
412425
for parent_player_id in player.group_parents:
413-
parent_player = self._players.get(parent_player_id)
414-
if not parent_player:
426+
parent_player = self.get_player(parent_player_id)
427+
if not parent_player or not parent_player.powered:
415428
continue
416429
has_powered_players = False
417430
for child_player_id in parent_player.group_childs:
418431
if child_player_id == player_id:
419432
continue
420-
child_player = self._players.get(child_player_id)
433+
child_player = self.get_player(child_player_id)
421434
if child_player and child_player.powered:
422435
has_powered_players = True
423436
break

0 commit comments

Comments
 (0)