From: Marcel van der Veldt Date: Fri, 8 Apr 2022 06:04:44 +0000 (+0200) Subject: move streams controller (#248) X-Git-Url: https://git.kitaultman.com/?a=commitdiff_plain;h=f9db21ce202fb565fd20cbf0644d52fc6865707c;p=music-assistant-server.git move streams controller (#248) --- diff --git a/music_assistant/controllers/players.py b/music_assistant/controllers/players.py index 15efad11..a7c77791 100755 --- a/music_assistant/controllers/players.py +++ b/music_assistant/controllers/players.py @@ -4,7 +4,6 @@ from __future__ import annotations from typing import Dict, Tuple, Union from music_assistant.constants import EventType -from music_assistant.controllers.stream import StreamController from music_assistant.helpers.typing import MusicAssistant from music_assistant.models.errors import AlreadyRegisteredError from music_assistant.models.player import Player, PlayerGroup @@ -18,13 +17,12 @@ DB_TABLE = "queue_settings" class PlayerController: """Controller holding all logic to play music from MusicProviders to supported players.""" - def __init__(self, mass: MusicAssistant, stream_port: int) -> None: + def __init__(self, mass: MusicAssistant) -> None: """Initialize class.""" self.mass = mass self.logger = mass.logger.getChild("players") self._players: Dict[str, PlayerType] = {} self._player_queues: Dict[str, PlayerQueue] = {} - self.streams = StreamController(mass, stream_port) async def setup(self) -> None: """Async initialize of module.""" @@ -38,7 +36,6 @@ class PlayerController: volume_normalization_enabled BOOLEAN, volume_normalization_target INTEGER)""" ) - await self.streams.setup() @property def players(self) -> Tuple[PlayerType]: diff --git a/music_assistant/mass.py b/music_assistant/mass.py index 6d208c6b..0a00f01b 100644 --- a/music_assistant/mass.py +++ b/music_assistant/mass.py @@ -15,6 +15,7 @@ from music_assistant.constants import EventType from music_assistant.controllers.metadata import MetaDataController from music_assistant.controllers.music import MusicController from music_assistant.controllers.players import PlayerController +from music_assistant.controllers.stream import StreamController from music_assistant.helpers.cache import Cache from music_assistant.helpers.database import Database @@ -52,7 +53,8 @@ class MusicAssistant: self.cache = Cache(self) self.metadata = MetaDataController(self) self.music = MusicController(self) - self.players = PlayerController(self, stream_port) + self.players = PlayerController(self) + self.streams = StreamController(self, stream_port) self._tracked_tasks: List[asyncio.Task] = [] self.closed = False @@ -71,6 +73,7 @@ class MusicAssistant: await self.music.setup() await self.metadata.setup() await self.players.setup() + await self.streams.setup() self.create_task(self.__process_jobs()) async def stop(self) -> None: diff --git a/music_assistant/models/player_queue.py b/music_assistant/models/player_queue.py index e516f069..1a31d56a 100644 --- a/music_assistant/models/player_queue.py +++ b/music_assistant/models/player_queue.py @@ -90,7 +90,7 @@ class PlayerQueue: self._update_task: Task = None self._signal_next: bool = False self._last_player_update: int = 0 - self._stream_url: str = self.mass.players.streams.get_stream_url(self.queue_id) + self._stream_url: str = self.mass.streams.get_stream_url(self.queue_id) async def setup(self) -> None: """Handle async setup of instance.""" @@ -363,9 +363,7 @@ class PlayerQueue: async def play_index(self, index: Union[int, str]) -> None: """Play item at index (or item_id) X in queue.""" if self.player.use_multi_stream: - await self.mass.players.streams.stop_multi_client_queue_stream( - self.queue_id - ) + await self.mass.streams.stop_multi_client_queue_stream(self.queue_id) if not isinstance(index, int): index = self.index_by_id(index) if index is None: @@ -375,7 +373,7 @@ class PlayerQueue: self._current_index = index self._next_start_index = index # send stream url to player connected to this queue - self._stream_url = self.mass.players.streams.get_stream_url(self.queue_id) + self._stream_url = self.mass.streams.get_stream_url(self.queue_id) if self.player.use_multi_stream: # multi stream enabled, all child players should receive the same audio stream @@ -385,13 +383,13 @@ class PlayerQueue: for child_id in self.player.group_childs: if child_player := self.mass.players.get_player(child_id): if child_player.powered: - player_url = self.mass.players.streams.get_stream_url( + player_url = self.mass.streams.get_stream_url( self.queue_id, child_id ) expected_clients.add(child_id) tasks.append(child_player.play_url(player_url)) tasks.append(child_player.pause()) - await self.mass.players.streams.start_multi_client_queue_stream( + await self.mass.streams.start_multi_client_queue_stream( self.queue_id, expected_clients, ContentType.FLAC ) await asyncio.gather(*tasks)