Source code for minim.api.musixmatch._lyrics_api.search

from __future__ import annotations
from typing import TYPE_CHECKING

from ..._shared import _copy_docstring
from ._shared import MusixmatchResourceAPI
from .matcher import MatcherAPI
from .artists import ArtistsAPI
from .tracks import TracksAPI

if TYPE_CHECKING:
    from typing import Any


[docs] class SearchAPI(MusixmatchResourceAPI): """ Search-related endpoints for the Musixmatch Lyrics API. .. note:: This class groups search-related endpoints for convenience. Musixmatch does not provide a dedicated Search API. .. important:: This class is managed by :class:`~minim.api.musixmatch.MusixmatchLyricsAPIClient` and should not be instantiated directly. """ __slots__ = ()
[docs] @_copy_docstring(MatcherAPI.match_track_lyrics) def match_track_lyrics( self, *, artist: str | None = None, track: str | None = None, isrc: str | None = None, ) -> dict[str, Any]: return self._client.matcher.match_track_lyrics( artist=artist, track=track, isrc=isrc )
[docs] @_copy_docstring(MatcherAPI.match_track) def match_track( self, *, artist: str | None = None, track: str | None = None, isrc: str | None = None, ) -> dict[str, Any]: return self._client.matcher.match_track( artist=artist, track=track, isrc=isrc )
[docs] @_copy_docstring(MatcherAPI.match_track_subtitles) def match_track_subtitles( self, *, artist: str | None = None, track: str | None = None, isrc: str | None = None, duration: int | str | None = None, max_duration_deviation: int | str | None = None, ) -> dict[str, Any]: return self._client.matcher.match_track_subtitles( artist=artist, track=track, isrc=isrc, duration=duration, max_duration_deviation=max_duration_deviation, )
[docs] @_copy_docstring(ArtistsAPI.search_artists) def search_artists( self, artist_query: str | None = None, *, artist_id: int | str | None = None, limit: int | None = None, page: int | None = None, ) -> dict[str, Any]: return self._client.artists.search_artists( artist_query=artist_query, artist_id=artist_id, limit=limit, page=page, )
[docs] @_copy_docstring(TracksAPI.search_tracks) def search_tracks( self, query: str | None = None, *, artist_query: str | None = None, lyrics_query: str | None = None, track_query: str | None = None, track_artist_query: str | None = None, writer_query: str | None = None, artist_id: int | str | None = None, genre_id: int | str | None = None, language: str | None = None, has_lyrics: bool | None = None, released_after: str | None = None, released_before: str | None = None, artist_popularity_sort_order: str | None = None, track_popularity_sort_order: str | None = None, page: int | None = None, limit: int | None = None, ) -> dict[str, Any]: return self._client.tracks.search_tracks( query=query, artist_query=artist_query, lyrics_query=lyrics_query, track_query=track_query, track_artist_query=track_artist_query, writer_query=writer_query, artist_id=artist_id, genre_id=genre_id, language=language, has_lyrics=has_lyrics, released_after=released_after, released_before=released_before, artist_popularity_sort_order=artist_popularity_sort_order, track_popularity_sort_order=track_popularity_sort_order, page=page, limit=limit, )