Small tweaks and fixes
authorMarcel van der Veldt <m.vanderveldt@outlook.com>
Sun, 25 Aug 2024 23:55:54 +0000 (01:55 +0200)
committerMarcel van der Veldt <m.vanderveldt@outlook.com>
Sun, 25 Aug 2024 23:55:54 +0000 (01:55 +0200)
music_assistant/common/models/player_queue.py
music_assistant/server/controllers/player_queues.py
music_assistant/server/helpers/util.py

index 4684aeff22fd930a47d69a7c4e9af2a69305648b..e2d6c881fe206292d8c021b3b7064f15929fb765 100644 (file)
@@ -42,7 +42,6 @@ class PlayerQueue(DataClassDictMixin):
     flow_mode_start_index: int = 0
     stream_finished: bool | None = None
     end_of_track_reached: bool | None = None
-    queue_version: str = ""
 
     @property
     def corrected_elapsed_time(self) -> float:
index 8c3a256d3e31f38772bd40a44f80600b11fb0f31..4ba9d73db1277ae6e8cd2511fd0d465e913ddf04 100644 (file)
@@ -8,8 +8,6 @@ import time
 from contextlib import suppress
 from typing import TYPE_CHECKING, Any, TypedDict
 
-import shortuuid
-
 from music_assistant.common.helpers.util import get_changed_keys
 from music_assistant.common.models.config_entries import (
     ConfigEntry,
@@ -698,7 +696,12 @@ class PlayerQueuesController(CoreController):
         queue = self._queues[queue_id]
         queue_items = self._queue_items[queue_id]
         resume_item = queue.current_item
-        resume_pos = queue.resume_pos
+        if queue.state == PlayerState.PLAYING:
+            # resume requested while already playing,
+            # use current position as resume position
+            resume_pos = queue.corrected_elapsed_time
+        else:
+            resume_pos = queue.resume_pos
 
         if not resume_item and queue.current_index is not None and len(queue_items) > 0:
             resume_item = self.get_item(queue_id, queue.current_index)
@@ -935,7 +938,6 @@ class PlayerQueuesController(CoreController):
         if not queue.flow_mode or queue.stream_finished:
             self._check_enqueue_next(player, queue, prev_state, new_state)
 
-        queue.resume_pos = queue.corrected_elapsed_time
         # do not send full updates if only time was updated
         if changed_keys == {"elapsed_time"}:
             self.mass.signal_event(
@@ -1092,7 +1094,6 @@ class PlayerQueuesController(CoreController):
     def signal_update(self, queue_id: str, items_changed: bool = False) -> None:
         """Signal state changed of given queue."""
         queue = self._queues[queue_id]
-        queue.queue_version = shortuuid.random(8)
         if items_changed:
             self.mass.signal_event(EventType.QUEUE_ITEMS_UPDATED, object_id=queue_id, data=queue)
             # save items in cache
index c6496db20b0ddbd5cb1b495934e416aa142c6666..65b79dedf5a183f5b210a011443e1dc5cab4306a 100644 (file)
@@ -110,6 +110,9 @@ async def load_provider_module(domain: str, requirements: list[str]) -> Provider
             continue
         package_name, version = requirement.split("==", 1)
         installed_version = await get_package_version(package_name)
+        if installed_version == "0.0.0":
+            # ignore editable installs
+            continue
         if installed_version != version:
             await install_package(requirement)