Yandex Media Browser

Overview

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

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

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

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

Скриншот

Корневой раздел: Библиотека Библиотека
Раздел: Жанры Жанры
Раздел: Новые релизы Новые релизы
Работа компонента с плеером сторонней интеграции - Медиацентр Kodi:
Медиацентр Kodi

Введение

Проект вырос из 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)  # Добавление по имени пользователя: [email protected]
        - 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
Скиншоты результирующей иерархии
Корневой раздел Корневой раздел
Папка "Юзвери" Папка
Папка "И их любимые альбомы" Папка

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

Код Аргумент Вид аргумента Пример вызова
album r'\d+' Согласно REGEX-шаблону album(r'\d+')
artist r'\d+' Согласно REGEX-шаблону artist(r'\d+')
genre r'.+' Согласно REGEX-шаблону genre(r'.+')
genres None Обязательно без значения genres
mix_tag Необязательный параметр mix_tag(),
mix_tag
new_playlists None Обязательно без значения new_playlists
new_releases None Обязательно без значения new_releases
personal_mixes None Обязательно без значения personal_mixes
playlist r'(\d+:)?\d+' Согласно REGEX-шаблону playlist(r'(\d+:)?\d+')
radio Необязательный параметр radio(),
radio
track r'\d+' Согласно REGEX-шаблону track(r'\d+')
user ,
#
Имя пользователя / UID user(abcd.ef),
user(#12345)
user_liked_albums ,
#
Имя пользователя / UID user_liked_albums(abcd.ef),
user_liked_albums(#12345)
user_liked_artists ,
#
Имя пользователя / UID user_liked_artists(abcd.ef),
user_liked_artists(#12345)
user_liked_playlists ,
#
Имя пользователя / UID user_liked_playlists(abcd.ef),
user_liked_playlists(#12345)
user_liked_tracks ,
#
Имя пользователя / UID user_liked_tracks(abcd.ef),
user_liked_tracks(#12345)
user_likes ,
#
Имя пользователя / UID user_likes(abcd.ef),
user_likes(#12345)
user_playlists ,
#
Имя пользователя / UID user_playlists(abcd.ef),
user_playlists(#12345)
yandex_mixes None Обязательно без значения yandex_mixes

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

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

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

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

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

  • Треки (любые)
  • Альбомы (любые)
  • Плейлисты (любые)
  • Исполнители (любые)
  • Радио (некоторые не воспроизводятся / не отображаются)

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

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

  • Треки (некоторые; если трек не поддерживается, включится Skrillex...)
  • Альбомы (некоторые)
  • Плейлисты (только пользователя, авторизованного под станцией)
  • Исполнители (некоторые)
  • Радио (как повезёт!)

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

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

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

  • kodi - открытие по ссылке работает
  • onkyo - открытие по ссылке работает

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

Comments
  • Исправление ошибок запуска. Удалён вход по паролю

    Исправление ошибок запуска. Удалён вход по паролю

    Теперь работает с HA >= 2022.3 Входа через пароль больше нет. Зависимость от интеграции YandexStation стала практически безусловной для рядового пользователя, соответствующие изменения внесены в readme.

    opened by skrashevich 4
  • Поиск по альбомам, исполнителям и т.д.

    Поиск по альбомам, исполнителям и т.д.

    Спасибо за компонент, круто. Получилось транслировать музыку на плеера из LogitechMediaServer.

    Не пойму как (возможно ли) искать по каталогам с музыкой? В частности на первой странице появляются пункты: Artists Albums Tracks Playlists Genres Яндекс.Музыка

    Захожу например в Albums, вываливает я так понимаю все имеющиеся альбомы, до буквы D, далее наверное ограничение какое то срабатывает. А остальные как?

    В идеале нужен поиск по базе альбомов, треков, исполнителей.

    opened by acidquest 1
  • Ошибка при обновлении на версию 0.3

    Ошибка при обновлении на версию 0.3

    интеграции.

    Logger: custom_components.yandex_music_browser Source: custom_components/yandex_music_browser/init.py:311 Integration: Браузер Яндекс Музыки (documentation, issues) First occurred: 18:59:10 (2 occurrences) Last logged: 18:59:59

    No patches enabled, component will shut down

    opened by vorlocsev 1
  • Интеграция перестала работать?

    Интеграция перестала работать?

    Есть ощущение, что Яндекс ужесточает использование своих сервисов. Яндекс браузер - не исключение: у меня также перестали работать Yandex Maps, Yandex Transport.

    У всех так? Это привет нам от Алексея Кудрина? )))

    opened by alexanderznamensky 1
  • После установки интеграции не открывается мультимедиа браузер

    После установки интеграции не открывается мультимедиа браузер

    После установки интеграции перестал работать мультимедиа-браузер. При его открытии появляется ошибка "Unknown error". Устанавливал по инструкции. Интеграция AlexIT установлена, авторизация пройдена. Данную интеграцию через YAML не настраивал - настраивал через GUI.

    Лог:

    2022-06-17 18:17:20 ERROR (MainThread) [custom_components.yandex_music_browser.default] Default authentication failed: No credentials provided
    2022-06-17 18:17:20 ERROR (MainThread) [homeassistant.components.websocket_api.http.connection] [140409586161456] Error handling message: Unknown error (unknown_error)
    Traceback (most recent call last):
    File "/config/custom_components/yandex_music_browser/default.py", line 98, in async_get_music_browser
    authentication = await async_authenticate_using_config_credentials(hass)
    File "/config/custom_components/yandex_music_browser/default.py", line 51, in async_authenticate_using_config_credentials
    raise YandexMusicBrowserAuthenticationError("No credentials provided")
    custom_components.yandex_music_browser.media_browser.YandexMusicBrowserAuthenticationError: No credentials provided
    During handling of the above exception, another exception occurred:
    Traceback (most recent call last):
    File "/usr/src/homeassistant/homeassistant/components/websocket_api/decorators.py", line 27, in _handle_async_response
    await func(hass, connection, msg)
    File "/usr/src/homeassistant/homeassistant/components/media_player/__init__.py", line 1217, in websocket_browse_media
    payload = await player.async_browse_media(media_content_type, media_content_id)
    File "/config/custom_components/yandex_music_browser/patches/generic.py", line 138, in _patch_generic_async_browse_media
    yandex_browse_object = await _patch_root_async_browse_media(
    File "/config/custom_components/yandex_music_browser/patches/_base.py", line 19, in _patch_root_async_browse_media
    music_browser = await async_get_music_browser(self)
    File "/config/custom_components/yandex_music_browser/default.py", line 102, in async_get_music_browser
    raise YandexMusicBrowserAuthenticationError(
    custom_components.yandex_music_browser.media_browser.YandexMusicBrowserAuthenticationError: Could not authenticate with any of the provided patches
    
    opened by Vittaly76 2
  • Ошибка при попытке воспроизведения плейлиста.

    Ошибка при попытке воспроизведения плейлиста.

    Трек из плейлиста воспроизводит, но при попытке воспроизвести плейлист появляется ошибка.

    `Logger: homeassistant.components.websocket_api.http.connection Source: components/squeezebox/media_player.py:486 Integration: Home Assistant WebSocket API (documentation, issues) First occurred: 08:58:18 (2 occurrences) Last logged: 08:59:35

    [139811790874992] Expecting value: line 1 column 1 (char 0) Traceback (most recent call last): File "/usr/src/homeassistant/homeassistant/components/websocket_api/commands.py", line 189, in handle_call_service await hass.services.async_call( File "/usr/src/homeassistant/homeassistant/core.py", line 1627, in async_call task.result() File "/usr/src/homeassistant/homeassistant/core.py", line 1664, in _execute_service await cast(Callable[[ServiceCall], Awaitable[None]], handler.job.target)( File "/usr/src/homeassistant/homeassistant/helpers/entity_component.py", line 204, in handle_service await service.entity_service_call( File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 677, in entity_service_call future.result() # pop exception if have File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 964, in async_request_call await coro File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 714, in _handle_entity_call await result File "/config/custom_components/yandex_music_browser/patches/generic.py", line 84, in _patch_generic_async_play_media return await object.getattribute(self, "async_play_media")( File "/usr/src/homeassistant/homeassistant/components/squeezebox/media_player.py", line 486, in async_play_media content = json.loads(media_id) File "/usr/local/lib/python3.9/json/init.py", line 346, in loads return _default_decoder.decode(s) File "/usr/local/lib/python3.9/json/decoder.py", line 337, in decode obj, end = self.raw_decode(s, idx=_w(s, 0).end()) File "/usr/local/lib/python3.9/json/decoder.py", line 355, in raw_decode raise JSONDecodeError("Expecting value", s, err.value) from None json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0) `

    opened by urtaevS 0
  • Интеграция оверрайдит список источников на вкладке Мультимедиа в HA 2022.5

    Интеграция оверрайдит список источников на вкладке Мультимедиа в HA 2022.5

    Если интеграция активирована, то можно запустить мультимедиа только из нее, а из YandexStation нельзя. Так должно быть: image А так открывается: image Проявляется только на медиаплеерах колонок Яндекса. На mpd работает нормально.

    PLS закройте ишью если трабл в YandexStaion =)

    opened by glebsterx 4
  • Несовместимость если несколько источников?

    Несовместимость если несколько источников?

    Почему то в мобильном приложении HA отображается только яндекс музыка. Других источников нет Screenshot_20220329_100914_io homeassistant companion android

    В тоже время chrome на ПК прямо наоборот Другие источники есть, а яндекс музыки нет

    image

    Home assistant 2022.3.4 Стоит как HA OS на Debian Плагины yandex-music-browser и Яндекс Станции последние из HACS

    opened by moskovskiy82 0
Releases(v0.0.8)
  • v0.0.8(Mar 27, 2022)

  • v0.0.7(Mar 14, 2022)

    :warning: BREAKING CHANGES

    • Авторизация по паролю более не поддерживается (#8)

    :bug: Исправления

    • Исправлена коллизия зависимостей в HA версиях 2022.3+ (#7, #8)

    :wrench: Изменения

    • Убрана фиксация версии библиотеки Yandex Music
    Source code(tar.gz)
    Source code(zip)
  • v0.0.6(Jun 22, 2021)

    • Убран легаси-код, мешавший выполнению службы async_play_media
    • Добавлена упущенная зависимость http
    Source code(tar.gz)
    Source code(zip)
  • v0.0.5(Jun 22, 2021)

    • Исправлен надоедливый баг, при котором для облачных колонок с Алисой на борту ломался браузер после использования его на плеерах, отличных от Яндекс.Станций
    • Убран неверный импорт констант из сторонних компонентов
    • Кеширование корневой ссылки для сторонних плееров (позволяет сохранять иерархию при бегании вверх-вниз); как следствие, исправлен ход по иерархии для сторонних плееров
    Source code(tar.gz)
    Source code(zip)
  • v0.0.4(Jun 21, 2021)

    • Фиксы загрузки патчей по умолчанию
    • Выбор патчей в визуальном конфигураторе
    • Улучшена поддержка сторонних плееров (расширенное впутывание библиотеки)
    • Переименован патч yandex в yandex_station
    Source code(tar.gz)
    Source code(zip)
  • v0.0.3(Jun 21, 2021)

    • Возвращена поддержка радиостанций (в разделе "Жанры")
    • Убрана жёсткая зависимость от компонента yandex_station (однако настоятельно рекомендуется его установить)
    • Исправлены ошибки в навигации по разделам
    Source code(tar.gz)
    Source code(zip)
  • v0.0.2(Jun 21, 2021)

    • Добавлены описания некоторых параметров конфигурации
    • Восстановлен языковой конфигуратор
    • Восстановлен парсер опций меню
    • Исправлена ошибка с переводами для объектов пользователей
    Source code(tar.gz)
    Source code(zip)
  • v0.0.1(Jun 21, 2021)

Owner
Alexander Ryazanov
Freelance developer & photographer from Russia.
Alexander Ryazanov
pyreports is a python library that allows you to create complex report from various sources

pyreports pyreports is a python library that allows you to create complex reports from various sources such as databases, text files, ldap, etc. and p

Matteo Guadrini aka GU 78 Dec 13, 2022
Time tracking program that will format output to be easily put into Gitlab

time_tracker Time tracking program that will format output to be easily put into Gitlab. Feel free to branch and use it yourself! Getting Started Clon

Jake Strasler 2 Oct 13, 2022
A small Python library which gives you the IEEE-754 representation of a floating point number.

ieee754 ieee754 is small Python library which gives you the IEEE-754 representation of a floating point number. You can specify a precision given in t

Bora Canbula 5 Dec 20, 2022
Santa's kitchen helper for python

Santa's Kitchen Helper Introduction/Overview Contents UX User Stories Design Wireframes Color Scheme Typography Imagery Features Exisiting Features Fe

Paul Browne 4 May 31, 2022
Python dictionaries with advanced dot notation access

from box import Box movie_box = Box({ "Robin Hood: Men in Tights": { "imdb stars": 6.7, "length": 104 } }) movie_box.Robin_Hood_Men_in_Tights.imdb_s

Chris Griffith 2.1k Dec 28, 2022
A simple way to read and write LAPS passwords from linux.

A simple way to read and write LAPS passwords from linux. This script is a python setter/getter for property ms-Mcs-AdmPwd used by LAPS inspired by @s

Podalirius 36 Dec 09, 2022
A Klipper plugin for accurate Z homing

Stable Z Homing for Klipper A Klipper plugin for accurate Z homing This plugin provides a new G-code command, STABLE_Z_HOME, which homes Z repeatedly

Matthew Lloyd 24 Dec 28, 2022
sumCulator Это калькулятор, который умеет складывать 2 числа.

sumCulator Это калькулятор, который умеет складывать 2 числа. Но есть условия: Эти 2 числа не могут быть отрицательными (всё-таки это вычитание, а не

0 Jul 12, 2022
An alternative site to emplea.do due to inconsistent service of the app.

feline a agile and fast alternative to emplea.do License: MIT Settings Moved to settings. Basic Commands Setting Up Your Users To create a normal user

Codetiger 8 Nov 10, 2021
Projeto de análise de dados com SQL

Project-Analizyng-International-Debt-Statistics- Projeto de análise de dados com SQL - Plataforma Data Camp Descrição do Projeto : Não é que nós human

Lorrayne Silva 1 Feb 01, 2022
My qtile config with a fresh-looking bar and pywal support

QtileConfig My qtile config with a fresh-looking bar and pywal support. Note: This is my first rice and first github repo. Please excuse my poor codin

Eden 4 Nov 10, 2021
Notebooks for computing approximations to the prime counting function using Riemann's formula.

Notebooks for computing approximations to the prime counting function using Riemann's formula.

Tom White 2 Aug 02, 2022
Integration of Hotwire's Turbo library with Flask.

turbo-flask Integration of Hotwire's Turbo library with Flask, to allow you to create applications that look and feel like single-page apps without us

Miguel Grinberg 240 Jan 06, 2023
Script to calculate the italian fiscal code of a person.

fiscal_code Hi! This is my first public repository, so please be kind if it is not well formatted or it contains errors. I started learning Python abo

FrancescoDiMuro 1 Nov 20, 2021
A collection of modern themes for Tkinter TTK

ttkbootstrap A collection of modern flat themes inspired by Bootstrap. Also includes TTK Creator which allows you to easily create and use your own th

Israel Dryer 827 Jan 04, 2023
Template (v0) do Sistema Chatbot - atividade síncrona - INE5404

ine-5404-sistema-chatbot-template Template (v0) do Sistema Chatbot - atividade síncrona - INE5404 Veja abaixo um exemplo de funcionamento do sistema:

0 Dec 07, 2021
TinyBar - Tiny MacOS menu bar utility to track price dynamics for assets on TinyMan.org

📃 About A simple MacOS menu bar app to display current coins from most popular Liquidity Pools on TinyMan.org

Al 8 Dec 23, 2022
Python PID Controller and Process Simulator (FOPDT) with GUI.

PythonPID_Simulator Python PID Controller and Process Simulator (FOPDT) with GUI. Run the File. Then select Model Values and Tune PID.. Hit Refresh to

19 Oct 14, 2022
Sample microservices application demo

Development mode docker-compose -f docker-compose.yml -f docker-compose.dev.yml up -d or export COMPOSE_FILE='docker-compose.yml:docker-compose.dev.ym

Konstantinos Bairaktaris 1 Nov 14, 2021