From: Marcel van der Veldt Date: Thu, 6 Jun 2019 21:05:44 +0000 (+0200) Subject: attempt to fix current queue index reporting X-Git-Url: https://git.kitaultman.com/?a=commitdiff_plain;h=4e47ffdac5f8ab1ea5440f9c94fa0cf339dcf76e;p=music-assistant-server.git attempt to fix current queue index reporting when crossfade is enabled the queue is sent as one big audio track to the player so we make some guesses about which track is playing --- diff --git a/music_assistant/modules/http_streamer.py b/music_assistant/modules/http_streamer.py index 572526da..2df65cd7 100755 --- a/music_assistant/modules/http_streamer.py +++ b/music_assistant/modules/http_streamer.py @@ -128,7 +128,11 @@ class HTTPStreamer(): return resp async def stream_queue(self, http_request): - ''' start streaming radio from provider ''' + ''' + streamm all tracks in queue from player with http + loads audiodata in memory so only recommended for high performance servers + use case is enable crossfade support for chromecast devices + ''' player_id = http_request.query.get('player_id') cancelled = threading.Event() resp = web.StreamResponse(status=200, @@ -139,7 +143,7 @@ class HTTPStreamer(): # stream audio queue = asyncio.Queue() cancelled = threading.Event() - task = run_async_background_task( + run_async_background_task( self.mass.bg_executor, self.__stream_queue, player_id, queue, cancelled) try: @@ -179,7 +183,7 @@ class HTTPStreamer(): while True: # get current track in queue queue_tracks = await self.mass.player.player_queue(player_id, 0, 10000) - player = await self.mass.player.player(player_id) + player = self.mass.player._players[player_id] queue_index = player.cur_queue_index try: queue_track = queue_tracks[queue_index] diff --git a/music_assistant/modules/playerproviders/chromecast.py b/music_assistant/modules/playerproviders/chromecast.py index 373cb8f9..0132a6d7 100644 --- a/music_assistant/modules/playerproviders/chromecast.py +++ b/music_assistant/modules/playerproviders/chromecast.py @@ -287,6 +287,7 @@ class ChromecastProvider(PlayerProvider): player.state = PlayerState.Stopped player.cur_item = await self.__parse_track(mediastatus) player.cur_item_time = chromecast.media_controller.status.adjusted_current_time + player.cur_queue_index = await self.__get_cur_queue_index(player_id) await self.mass.player.update_player(player) async def __parse_track(self, mediastatus):