attempt to fix current queue index reporting
authorMarcel van der Veldt <m.vanderveldt@outlook.com>
Thu, 6 Jun 2019 21:05:44 +0000 (23:05 +0200)
committerMarcel van der Veldt <m.vanderveldt@outlook.com>
Thu, 6 Jun 2019 21:05:44 +0000 (23:05 +0200)
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
music_assistant/modules/playerproviders/chromecast.py

index 572526da47fe0617ca47859bb9813ddba5f261e6..2df65cd7fe6f55178e72ddde0145abd9b4fe8ad5 100755 (executable)
@@ -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]
index 373cb8f9fc1add88e50937be826bd0cd88129131..0132a6d79ab0a54d8314ab12e95fc807361c28d8 100644 (file)
@@ -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):