From 4e47ffdac5f8ab1ea5440f9c94fa0cf339dcf76e Mon Sep 17 00:00:00 2001 From: Marcel van der Veldt Date: Thu, 6 Jun 2019 23:05:44 +0200 Subject: [PATCH] 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 --- music_assistant/modules/http_streamer.py | 10 +++++++--- music_assistant/modules/playerproviders/chromecast.py | 1 + 2 files changed, 8 insertions(+), 3 deletions(-) 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): -- 2.34.1