music-assistant-server

1.7 KBPY
__init__.py
1.7 KB54 lines • python
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