/
/
/
1"""
2Spotify Connect plugin for Music Assistant.
3
4The provider runs as a single instance that advertises one Spotify Connect
5device (one backend daemon and one AudioSource) per connected Music Assistant
6player.
7
8The MA-facing logic lives in ``provider.py``; everything specific to one
9Spotify Connect implementation (Spotify Soloist or go-librespot) lives behind the
10``SpotifyConnectBackend`` contract in ``base.py`` (one implementation per subdirectory).
11"""
12
13from __future__ import annotations
14
15from typing import TYPE_CHECKING
16
17from .provider import (
18 BACKEND_GO_LIBRESPOT,
19 BACKEND_SOLOIST,
20 CONF_API_KEY,
21 CONF_BACKEND,
22 CONF_SOLOIST_CONSENT,
23 CONF_VOLUME_MODE,
24 SUPPORTED_FEATURES,
25 VOLUME_MODE_OPTIONS,
26 SpotifyConnectProvider,
27)
28
29if TYPE_CHECKING:
30 from music_assistant_models.config_entries import ProviderConfig
31 from music_assistant_models.provider import ProviderManifest
32
33 from music_assistant.mass import MusicAssistant
34 from music_assistant.models import ProviderInstanceType
35
36__all__ = [
37 "BACKEND_GO_LIBRESPOT",
38 "BACKEND_SOLOIST",
39 "CONF_API_KEY",
40 "CONF_BACKEND",
41 "CONF_SOLOIST_CONSENT",
42 "CONF_VOLUME_MODE",
43 "SUPPORTED_FEATURES",
44 "VOLUME_MODE_OPTIONS",
45 "SpotifyConnectProvider",
46 "setup",
47]
48
49
50async def setup(
51 mass: MusicAssistant, manifest: ProviderManifest, config: ProviderConfig
52) -> ProviderInstanceType:
53 """Initialize provider(instance) with given configuration."""
54 return SpotifyConnectProvider(mass, manifest, config)
55