async def player_command(self, player_id, cmd:str, cmd_args=None):
''' issue command on player (play, pause, next, previous, stop, power, volume, mute) '''
+ count = 0
+ while self._chromecasts[player_id].is_busy and count < 10:
+ asyncio.sleep(0.1)
+ count += 1
+ self._chromecasts[player_id].is_busy = True
if cmd == 'play':
self._players[player_id].powered = True
if self._chromecasts[player_id].media_controller.status.player_is_playing:
elif cmd == 'mute':
self._chromecasts[player_id].set_volume_muted(True)
self._chromecasts[player_id].wait()
+ self._chromecasts[player_id].is_busy = False
async def player_queue(self, player_id, offset=0, limit=50):
''' return the current items in the player's queue '''
'''
play media on a player
'''
+ count = 0
+ while self._chromecasts[player_id].is_busy and count < 10:
+ asyncio.sleep(0.1)
+ count += 1
+ self._chromecasts[player_id].is_busy = True
castplayer = self._chromecasts[player_id]
cur_queue_index = await self.__get_cur_queue_index(player_id)
# add new items at end of queue
self._player_queue[player_id] = self._player_queue[player_id] + media_items
await self.__queue_insert(player_id, media_items)
+ self._chromecasts[player_id].is_busy = False
### Provider specific (helper) methods #####
queuedata['mediaSessionId'] = media_controller.status.media_session_id
media_controller.send_message(queuedata, inc_session_id=False)
castplayer.wait()
+ await asyncio.sleep(0.2)
receiver_ctrl.launch_app(media_controller.app_id,
callback_function=app_launched_callback)
player.player_id = player_id
player.name = chromecast.name
player.player_provider = self.prov_id
+ chromecast.is_busy = False
# patch the receive message method for handling queue status updates
chromecast.queue = []
chromecast.media_controller.queue_items = []