diff --git a/yandex_music/track/track.py b/yandex_music/track/track.py index b4305cc..5c43e33 100644 --- a/yandex_music/track/track.py +++ b/yandex_music/track/track.py @@ -16,6 +16,7 @@ if TYPE_CHECKING: User, MetaData, PoetryLoverMatch, + TrackLyrics, ) @@ -154,6 +155,20 @@ class Track(YandexMusicObject): """ return await self.client.track_supplement(self.id, *args, **kwargs) + def get_lyrics(self, *args, **kwargs) -> Optional['TrackLyrics']: + """Сокращение для:: + + client.tracks_lyrics(track.id, *args, **kwargs) + """ + return self.client.tracks_lyrics(self.id, *args, **kwargs) + + async def get_lyrics_async(self, *args, **kwargs) -> Optional['TrackLyrics']: + """Сокращение для:: + + client.tracks_lyrics(track.id, *args, **kwargs) + """ + return await self.client.tracks_lyrics(self.id, *args, **kwargs) + def get_cover_url(self, size: str = '200x200') -> str: """Возвращает URL обложки. @@ -491,6 +506,10 @@ class Track(YandexMusicObject): getSupplement = get_supplement #: Псевдоним для :attr:`get_supplement_async` getSupplementAsync = get_supplement_async + #: Псевдоним для :attr:`get_lyrics` + getLyrics = get_lyrics + #: Псевдоним для :attr:`get_lyrics_async` + getLyricsAsync = get_lyrics_async #: Псевдоним для :attr:`get_cover_url` getCoverUrl = get_cover_url #: Псевдоним для :attr:`get_og_image_url` diff --git a/yandex_music/track/track_lyrics.py b/yandex_music/track/track_lyrics.py index 8afb76b..642d7b1 100644 --- a/yandex_music/track/track_lyrics.py +++ b/yandex_music/track/track_lyrics.py @@ -34,6 +34,22 @@ class TrackLyrics(YandexMusicObject): self.external_lyric_id, ) + def fetch_lyrics(self) -> str: + """Получает текст песни по ссылке :attr:`yandex_music.TrackLyrics.download_url`. + + Returns: + :obj:`str`: Текст песни. + """ + return self.client.request.retrieve(self.download_url).decode('UTF-8') + + async def fetch_lyrics_async(self) -> str: + """Получает текст песни по ссылке :attr:`yandex_music.TrackLyrics.download_url`. + + Returns: + :obj:`str`: Текст песни. + """ + return await self.client.request.retrieve(self.download_url).decode('UTF-8') + @classmethod def de_json(cls, data: dict, client: 'Client') -> Optional['TrackLyrics']: """Десериализация объекта. @@ -54,3 +70,10 @@ class TrackLyrics(YandexMusicObject): data['major'] = LyricsMajor.de_json(data.get('major'), client) return cls(client=client, **data) + + # camelCase псевдонимы + + #: Псевдоним для :attr:`fetch_lyrics` + fetchLyrics = fetch_lyrics + #: Псевдоним для :attr:`fetch_lyrics_async` + fetchLyricsAsync = fetch_lyrics_async