/
/
/
1"""Sendspin Source plugin provider for Music Assistant."""
2
3from __future__ import annotations
4
5from typing import TYPE_CHECKING
6
7from music_assistant_models.config_entries import ConfigEntry
8from music_assistant_models.enums import ConfigEntryType, ProviderFeature
9
10from music_assistant.constants import CONF_ENTRY_WARN_PREVIEW
11from music_assistant.providers.sendspin_source.constants import (
12 CONF_TARGET_LATENCY,
13 DEFAULT_TARGET_LATENCY_MS,
14)
15from music_assistant.providers.sendspin_source.provider import SendspinSourceProvider
16
17if TYPE_CHECKING:
18 from music_assistant_models.config_entries import ConfigValueType, ProviderConfig
19 from music_assistant_models.provider import ProviderManifest
20
21 from music_assistant.mass import MusicAssistant
22 from music_assistant.models import ProviderInstanceType
23
24SUPPORTED_FEATURES = {ProviderFeature.AUDIO_SOURCE}
25
26
27async def setup(
28 mass: MusicAssistant, manifest: ProviderManifest, config: ProviderConfig
29) -> ProviderInstanceType:
30 """Initialize provider(instance) with given configuration."""
31 return SendspinSourceProvider(mass, manifest, config, SUPPORTED_FEATURES)
32
33
34async def get_config_entries(
35 mass: MusicAssistant, # noqa: ARG001
36 instance_id: str | None = None, # noqa: ARG001
37 action: str | None = None, # noqa: ARG001
38 values: dict[str, ConfigValueType] | None = None, # noqa: ARG001
39) -> tuple[ConfigEntry, ...]:
40 """Return Config entries to setup this provider."""
41 return (
42 CONF_ENTRY_WARN_PREVIEW,
43 ConfigEntry(
44 key=CONF_TARGET_LATENCY,
45 type=ConfigEntryType.INTEGER,
46 range=(100, 5000),
47 default_value=DEFAULT_TARGET_LATENCY_MS,
48 advanced=True,
49 ),
50 )
51