/
/
/
1"""nicovideo support for Music Assistant."""
2
3from __future__ import annotations
4
5from typing import TYPE_CHECKING
6
7from music_assistant_models.enums import ProviderFeature
8
9from music_assistant.mass import MusicAssistant
10from music_assistant.models import ProviderInstanceType
11from music_assistant.providers.nicovideo.config import get_config_entries_impl
12from music_assistant.providers.nicovideo.provider import NicovideoMusicProvider
13
14if TYPE_CHECKING:
15 from music_assistant_models.config_entries import (
16 ConfigEntry,
17 ConfigValueType,
18 ProviderConfig,
19 )
20 from music_assistant_models.provider import ProviderManifest
21
22# Supported features collected from all mixins
23SUPPORTED_FEATURES = {
24 # Artist mixin
25 ProviderFeature.ARTIST_TOPTRACKS,
26 ProviderFeature.ARTIST_ALBUMS,
27 ProviderFeature.LIBRARY_ARTISTS,
28 # Playlist mixin
29 ProviderFeature.LIBRARY_PLAYLISTS,
30 ProviderFeature.PLAYLIST_TRACKS_EDIT,
31 ProviderFeature.PLAYLIST_CREATE,
32 # Explorer mixin
33 ProviderFeature.SEARCH,
34 ProviderFeature.RECOMMENDATIONS,
35 ProviderFeature.SIMILAR_TRACKS,
36}
37
38
39async def setup(
40 mass: MusicAssistant, manifest: ProviderManifest, config: ProviderConfig
41) -> ProviderInstanceType:
42 """Initialize provider(instance) with given configuration."""
43 return NicovideoMusicProvider(mass, manifest, config, SUPPORTED_FEATURES)
44
45
46async def get_config_entries(
47 mass: MusicAssistant, # noqa: ARG001
48 instance_id: str | None = None, # noqa: ARG001
49 action: str | None = None, # noqa: ARG001
50 values: dict[str, ConfigValueType] | None = None, # noqa: ARG001
51) -> tuple[ConfigEntry, ...]:
52 """Return Config entries to setup this provider."""
53 return await get_config_entries_impl()
54