diff --git a/README.md b/README.md index cc4b651..d15cb42 100644 --- a/README.md +++ b/README.md @@ -619,6 +619,8 @@ sequence: - Альбом на Яндекс.Музыке - [пример](https://music.yandex.ru/album/2150009) - Исполнитель на Яндекс.Музыке - [пример](https://music.yandex.ru/artist/41114) - Плейлист на Яндекс.Музыке - [пример](https://music.yandex.ru/users/music.partners/playlists/2050) +- Аудиокнига на Яндекс.Музыке - [пример](https://music.yandex.ru/album/24893061) +- Аудиокнига на Яндекс.Книгах - [пример](https://books.yandex.ru/audiobooks/QwRzXWTS) Только на устройствах с экраном (большая Станция или Модуль) diff --git a/custom_components/yandex_station/core/utils.py b/custom_components/yandex_station/core/utils.py index 8316ffb..3b36ed0 100644 --- a/custom_components/yandex_station/core/utils.py +++ b/custom_components/yandex_station/core/utils.py @@ -184,6 +184,7 @@ def play_video_by_descriptor(provider: str, item_id: str): r"(https?://ok\.ru/video/\d+|https?://vk.com/video-?[0-9_]+)" ), "vk": re.compile(r"https://vk\.com/.*(video-?[0-9_]+)"), + "bookmate": re.compile(r"https://books\.yandex\.ru/audiobooks/(\w+)"), } @@ -224,6 +225,21 @@ async def get_media_payload(session, text: str) -> dict | None: except: return None + elif k == "bookmate": + try: + r = await session.post( + "https://api-gateway-rest.bookmate.yandex.net/audiobook/album", + json={"audiobook_uuid": m[1]}, + ) + resp = await r.json() + return { + "command": "playMusic", + "type": "album", + "id": resp["album_id"], + } + except: + return None + return None