Home

Awesome

Браузер медиа для плагина Yandex Station

Включайте музыку, плейлисты и радио на Яндекс.Станции из Home Assistant!

hacs_badge Лицензия Поддержка

Пожертвование Yandex Пожертвование PayPal

Скриншот

<details> <summary><b>Корневой раздел: Библиотека</b></summary> <img src="https://raw.githubusercontent.com/alryaz/hass-yandex-music-browser/main/images/library.png" alt="Библиотека"> </details> <details> <summary><b>Раздел: Жанры</b></summary> <img src="https://raw.githubusercontent.com/alryaz/hass-yandex-music-browser/main/images/genres.png" alt="Жанры"> </details> <details> <summary><b>Раздел: Новые релизы</b></summary> <img src="https://raw.githubusercontent.com/alryaz/hass-yandex-music-browser/main/images/new_releases.png" alt="Новые релизы"> </details> <details> <summary><b>Работа компонента с плеером сторонней интеграции</b></summary> <b>- Медиацентр Kodi:</b><br> <img src="https://raw.githubusercontent.com/alryaz/hass-yandex-music-browser/main/images/generic_player.png" alt="Медиацентр Kodi"> </details>

Введение

Проект вырос из Pull-request-а: https://github.com/AlexxIT/YandexStation/pull/133.

Установка

⚠️ Для полноценной работы компонента сперва потребуется установить: AlexxIT/YandexStation и настроить авторизацию. Информация по установке и конфигурации доступна по ссылке.

Установка посредством HACS

👍 ️Рекомендованный способ

  1. Откройте HACS (через Extensions в боковой панели)
  2. Добавьте новый произвольный репозиторий:
    1. Выберите Integration (Интеграция) в качестве типа репозитория
    2. Введите ссылку на репозиторий: https://github.com/alryaz/hass-yandex-music-browser
    3. Нажмите кнопку Add (Добавить)
    4. Дождитесь добавления репозитория (занимает до 10 секунд)
    5. Теперь вы должны видеть доступную интеграцию Yandex Music Browser (Браузер Яндекс Музыки) в списке новых интеграций.
  3. Нажмите кнопку Install чтобы увидеть доступные версии
  4. Установите последнюю версию нажатием кнопки Install
  5. Перезапустите HomeAssistant

Вручную

⚠️ Не рекомендуется

Клонируйте репозиторий во временный каталог, затем создайте каталог custom_components внутри папки конфигурации вашего HomeAssistant (если она еще не существует). Затем переместите папку yandex_music_browser из папки custom_components репозитория в папку custom_components внутри папки конфигурации HomeAssistant. Пример (при условии, что конфигурация HomeAssistant доступна по адресу /mnt/homeassistant/config) для Unix-систем:

git clone https://github.com/alryaz/hass-yandex-music-browser.git hass-yandex-music-browser
mkdir -p /mnt/homeassistant/config/custom_components
mv hass-yandex-music-browser/custom_components/yandex_music_browser /mnt/homeassistant/config/custom_components/

Конфигурация

Из меню Интеграции

  1. Найдите интеграцию Yandex Music Browser (Браузер Яндекс Музыки) в списке интеграций
  2. Нажмите на найденную интеграцию
  3. Следуйте инструкциям на экране для завершения настройки

Используя configuration.yaml

  1. Добавьте yandex_music_browser: куда-нибудь в Ваш файл configuration.yaml (двоеточие на конце обязательно!)
  2. Перезапустите Home Assistant

Возможная конфигурация

# Конфигурация интеграции
yandex_music_browser:
  # Язык для отображения
  # Поддерживаемые языки:
  # - en: Английский (поддерживается интеграцией)
  # - ru: Русский (поддерживается интеграцией)
  # - uk: Украинский (поддерживается интеграцией)
  # - az: Азербайджанский
  # - be: Белорусский
  # - he: Иврит
  # - hy: Армянский
  # - ka: Грузинский
  # - kk: Казахский
  # - tr: Турецкий
  # - uz: Узбекский
  #
  # Языки, не поддерживаемые интеграцией, будут отображать контент на выбранном языке,
  # но элементы управления будут на английском.
  language: ru
  
  # Опции для меню браузера
  menu_options:
    # Предустановка: Новые релизы
    - new_releases
    
    # Создание папки в корне:
    - title: "Юзвери"
      image: "http://www.pngall.com/wp-content/uploads/2016/06/Nyan-Cat-Free-Download-PNG.png"
      items:
        - user(abcd.ef)  # Добавление по имени пользователя: abcd.ef@yandex.ru
        - user(#12345)  # Добавление по ID
        
        # Иерархия многоуровневая и многотипная.
        - title: "И их любимые альбомы"
          class: "albums"
          items:
            # На одном уровне может находиться сколько угодно объектов каких-либо типов.
            - album(10413482)  # Carpenter Brut - Blood Machines
            - album(448629)  # The Karaoke Machine Presents - Gwen Stefani
            - track(24945454)  # Five Finger Death Punch - Wrong Side of Heaven
Скиншоты результирующей иерархии
<details> <summary><b>Корневой раздел</b></summary> <img src="https://raw.githubusercontent.com/alryaz/hass-yandex-music-browser/main/images/hierarchy/root.png" alt="Корневой раздел"> </details> <details> <summary><b>Папка "Юзвери"</b></summary> <img src="https://raw.githubusercontent.com/alryaz/hass-yandex-music-browser/main/images/hierarchy/users.png" alt="Папка &quot;Юзвери&quot;"> </details> <details> <summary><b>Папка "И их любимые альбомы"</b></summary> <img src="https://raw.githubusercontent.com/alryaz/hass-yandex-music-browser/main/images/hierarchy/albums.png" alt="Папка &quot;И их любимые альбомы&quot;"> </details>

Перечень доступных предустановок

КодАргументВид аргументаПример вызова
albumr'\d+'Согласно REGEX-шаблонуalbum(r'\d+')
artistr'\d+'Согласно REGEX-шаблонуartist(r'\d+')
genrer'.+'Согласно REGEX-шаблонуgenre(r'.+')
genresNoneОбязательно без значенияgenres
mix_tag<mix_tag_id>Необязательный параметрmix_tag(<mix_tag_id>),<br>mix_tag
new_playlistsNoneОбязательно без значенияnew_playlists
new_releasesNoneОбязательно без значенияnew_releases
personal_mixesNoneОбязательно без значенияpersonal_mixes
playlistr'(\d+:)?\d+'Согласно REGEX-шаблонуplaylist(r'(\d+:)?\d+')
radio<radio_id>Необязательный параметрradio(<radio_id>),<br>radio
trackr'\d+'Согласно REGEX-шаблонуtrack(r'\d+')
user<username>,<br>#<user_id>Имя пользователя / UIDuser(abcd.ef),<br>user(#12345)
user_liked_albums<username>,<br>#<user_id>Имя пользователя / UIDuser_liked_albums(abcd.ef),<br>user_liked_albums(#12345)
user_liked_artists<username>,<br>#<user_id>Имя пользователя / UIDuser_liked_artists(abcd.ef),<br>user_liked_artists(#12345)
user_liked_playlists<username>,<br>#<user_id>Имя пользователя / UIDuser_liked_playlists(abcd.ef),<br>user_liked_playlists(#12345)
user_liked_tracks<username>,<br>#<user_id>Имя пользователя / UIDuser_liked_tracks(abcd.ef),<br>user_liked_tracks(#12345)
user_likes<username>,<br>#<user_id>Имя пользователя / UIDuser_likes(abcd.ef),<br>user_likes(#12345)
user_playlists<username>,<br>#<user_id>Имя пользователя / UIDuser_playlists(abcd.ef),<br>user_playlists(#12345)
yandex_mixesNoneОбязательно без значенияyandex_mixes

Примечание: Вызовы к функции library (при фактической доступности таковой) невозможны. Это обусловлено внутренней обработкой иерархии. Вызовы library с числовым аргументом выполняют роль навигации по иерархии.

Что поддерживается

Проект поддерживает проигрывание почти всех типов медиа, которые получаемы библиотекой yandex-music.

Яндекс станции (Мини, колонки, и т.д.)

В локальном режиме

В облачном режиме

В облачном режиме есть множество огрехов относительно воспроизведения. При этом, доступны:

Другие плееры

Плееры, принимающие на вход ссылку в службу media_player.play_media, смогут воспроизводить треки.

Протестировано на следующих интеграциях:

Также плееры могут перехватывать media_type == yandex. В качестве media_id будет использоваться тип и идентификатор объекта, к примеру: track:12345. Компонент попробует разобраться, что к чему.