11"""The Squeezebox integration."""
22
33from asyncio import timeout
4- from dataclasses import dataclass
4+ from dataclasses import dataclass , field
55from datetime import datetime
66from http import HTTPStatus
77import logging
3737 DISCOVERY_INTERVAL ,
3838 DISCOVERY_TASK ,
3939 DOMAIN ,
40- KNOWN_PLAYERS ,
41- KNOWN_SERVERS ,
4240 SERVER_MANUFACTURER ,
4341 SERVER_MODEL ,
4442 SERVER_MODEL_ID ,
@@ -73,6 +71,7 @@ class SqueezeboxData:
7371
7472 coordinator : LMSStatusDataUpdateCoordinator
7573 server : Server
74+ known_player_ids : set [str ] = field (default_factory = set )
7675
7776
7877type SqueezeboxConfigEntry = ConfigEntry [SqueezeboxData ]
@@ -187,16 +186,12 @@ async def async_setup_entry(hass: HomeAssistant, entry: SqueezeboxConfigEntry) -
187186
188187 entry .runtime_data = SqueezeboxData (coordinator = server_coordinator , server = lms )
189188
190- # set up player discovery
191- known_servers = hass .data .setdefault (DOMAIN , {}).setdefault (KNOWN_SERVERS , {})
192- known_players = known_servers .setdefault (lms .uuid , {}).setdefault (KNOWN_PLAYERS , [])
193-
194189 async def _player_discovery (now : datetime | None = None ) -> None :
195190 """Discover squeezebox players by polling server."""
196191
197192 async def _discovered_player (player : Player ) -> None :
198193 """Handle a (re)discovered player."""
199- if player .player_id in known_players :
194+ if player .player_id in entry . runtime_data . known_player_ids :
200195 await player .async_update ()
201196 async_dispatcher_send (
202197 hass , SIGNAL_PLAYER_REDISCOVERED , player .player_id , player .connected
@@ -207,7 +202,7 @@ async def _discovered_player(player: Player) -> None:
207202 hass , entry , player , lms .uuid
208203 )
209204 await player_coordinator .async_refresh ()
210- known_players . append (player .player_id )
205+ entry . runtime_data . known_player_ids . add (player .player_id )
211206 async_dispatcher_send (
212207 hass , SIGNAL_PLAYER_DISCOVERED , player_coordinator
213208 )
0 commit comments