fix start index
authorMarcel van der Veldt <m.vanderveldt@outlook.com>
Mon, 10 Jun 2019 09:06:07 +0000 (11:06 +0200)
committerMarcel van der Veldt <m.vanderveldt@outlook.com>
Mon, 10 Jun 2019 09:06:07 +0000 (11:06 +0200)
music_assistant/modules/http_streamer.py
music_assistant/modules/playerproviders/chromecast.py

index 09e640666dc79a3728307ae97a0be68442fb39e8..1effcbf8c8a2cb1bed83f446f1fa830bd360ff61 100755 (executable)
@@ -134,6 +134,7 @@ class HTTPStreamer():
             use case is enable crossfade support for chromecast devices 
         '''
         player_id = http_request.query.get('player_id')
+        startindex = int(http_request.query.get('startindex', 0))
         cancelled = threading.Event()
         resp = web.StreamResponse(status=200,
                                  reason='OK',
@@ -145,7 +146,7 @@ class HTTPStreamer():
             cancelled = threading.Event()
             run_async_background_task(
                 self.mass.bg_executor, 
-                self.__stream_queue, player_id, queue, cancelled)
+                self.__stream_queue, player_id, startindex, queue, cancelled)
             try:
                 while True:
                     chunk = await queue.get()
@@ -160,7 +161,7 @@ class HTTPStreamer():
                 raise asyncio.CancelledError()
         return resp
 
-    async def __stream_queue(self, player_id, buffer, cancelled):
+    async def __stream_queue(self, player_id, startindex, buffer, cancelled):
         ''' start streaming all queue tracks '''
         sample_rate = self.mass.config['player_settings'][player_id]['max_sample_rate']
         fade_length = self.mass.config['player_settings'][player_id]["crossfade_duration"]
@@ -179,7 +180,7 @@ class HTTPStreamer():
         asyncio.create_task(fill_buffer())
 
         player = await self.mass.player.player(player_id)
-        queue_index = player.cur_queue_index
+        queue_index = startindex
         last_fadeout_data = b''
         self.mass.event_loop.create_task(self.mass.player.player_queue_stream_update(player_id, queue_index, True))
         while True:
index 9f168d970135de93bd3ba3718430c084732f006d..adb887b2ec9cb2a05ea55c242838d32993d31e64 100644 (file)
@@ -87,14 +87,12 @@ class ChromecastProvider(PlayerProvider):
         elif cmd == 'next':
             enable_crossfade = self.mass.config['player_settings'][player_id]["crossfade_duration"] > 0
             if enable_crossfade:
-                self._players[player_id].cur_queue_index+=1
-                await self.__play_stream_queue(player_id, self._players[player_id].cur_queue_index)
+                await self.__play_stream_queue(player_id, self._players[player_id].cur_queue_index+1)
             else:
                 self._chromecasts[player_id].media_controller.queue_next()
         elif cmd == 'previous':
             if enable_crossfade:
-                self._players[player_id].cur_queue_index-=1
-                await self.__play_stream_queue(player_id, self._players[player_id].cur_queue_index)
+                await self.__play_stream_queue(player_id, self._players[player_id].cur_queue_index-1)
             else:
                 self._chromecasts[player_id].media_controller.queue_prev()
         elif cmd == 'power' and cmd_args == 'off':