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
Download and archive entire usenet newsgroups over NNTP.

Usenet Archiving Tool This code is for archiving Usenet discussions, not downloading files. Newsgroup posts are saved under the authors name and email

Corey White 2 Dec 23, 2021
🏆 A ranked list of awesome Python open-source libraries and tools. Updated weekly.

Best-of Python 🏆 A ranked list of awesome Python open-source libraries & tools. Updated weekly. This curated list contains 230 awesome open-source pr

Machine Learning Tooling 2.7k Jan 03, 2023
Similarity checking of sign languages

Similarity checking of sign languages This repository checks for similarity betw

Tonni Das Jui 1 May 13, 2022
Org agenda in the console

This Python script reads an org agenda file (i.e. a regular org file with some active dates) and displays an interactive and colored year calendar with detailed information for each day when the mous

Nicolas P. Rougier 113 Jan 03, 2023
Youtube Channel Website

Videos-By-Sanjeevi Youtube Channel Website YouTube Channel Website Features: Free Hosting using GitHub Pages and open-source code base in GitHub. It c

Sanjeevi Subramani 5 Mar 26, 2022
Snakemake worflow to process and filter long read data from Oxford Nanopore Technologies.

Nanopore-Workflow Snakemake workflow to process and filter long read data from Oxford Nanopore Technologies. It is designed to compare whole human gen

5 May 13, 2022
This is the Halloween edition of my Flask Greeting App - HAPPY HALLOWEEEN EVERYONE! :)

HalloweenGreetingApp HAPPY HALLOWEEN EVERYONE! :) This is the Halloween Edition of my Flask Greeting App! Please note, this application is mean to be

Mariya 2 Feb 04, 2022
simple password manager.

simple password manager.

1 Nov 18, 2021
This project intends to take the user's CEP (brazilian adress code) and return the local in which the CEP is placed.

This project aims to simply return the CEP's (the brazilian resident adress code) User of the application. The project uses a request and passes on to

Daniel Soares Saldanha 4 Nov 17, 2021
carrier.py is a Python package/module that's used to save time when programming

carrier.py is a Python package/module that's used to save time when programming, it helps with functions such as 24 and 12 hour time, Discord webhooks, etc

Zacky2613 2 Mar 20, 2022
PREFS is a Python library to store and manage preferences and settings.

PREFS PREFS is a Python library to store and manage preferences and settings. PREFS stores a Python dictionary in a total human-readable file, the PRE

Pat 13 May 26, 2022
tool to automate exploitation of android degubg bridge vulnerability

DISCLAIMER DISCLAIMER: ANY MALICIOUS USE OF THE CONTENTS FROM THIS ARTICLE WILL NOT HOLD THE AUTHOR RESPONSIBLE HE CONTENTS ARE SOLELY FOR EDUCATIONAL

6 Feb 12, 2022
100 Days of Python Programming

100 days of Python Following the initiative of my friend Helber Belmiro, who is almost done with his 100 days of Java, I have decided to start my 100

Henrique Pereira 19 Nov 08, 2021
A package selector for building your confy nest

Hornero A package selector for building your comfy nest About Hornero helps you to install your favourite packages on your fresh installed Linux distr

Santiago Soler 1 Nov 22, 2021
Python script to combine the statistical results of a TOPAS simulation that was split up into multiple batches.

topas-merge-simulations Python script to combine the statistical results of a TOPAS simulation that was split up into multiple batches At the top of t

Sebastian Schäfer 1 Aug 16, 2022
A tool converting rpk (记乎) to apkg (Anki Package)

RpkConverter This tool is used to convert rpk file to Anki apkg. 如果遇到任何问题,请发起issue,并描述情况。如果转换rpk出现问题,请将文件发到邮箱 ssqyang [AT] outlook.com,我会debug并修复问题。 下

9 Nov 01, 2021
Lightweight library for accessing data and configuration

accsr This lightweight library contains utilities for managing, loading, uploading, opening and generally wrangling data and configurations. It was ba

appliedAI Initiative 7 Mar 09, 2022
Aplicação que envia regularmente um email ao utilizador com todos os filmes disponíveis no cartaz dos cinemas Nos.

Cartaz-Cinemas-Nos Aplicação que envia regularmente uma notificação ao utilizador com todos os filmes disponíveis no cartaz dos cinemas Nos. Só funcio

Cavalex 1 Jan 09, 2022
Manjaro CN Repository

Manjaro CN Repository Automatically built packages based on archlinuxcn/repo and manjarocn/docker. Install Add manjarocn to /etc/pacman.conf: Please m

Manjaro CN 28 Jun 26, 2022
PyToQlik is a library that allows you to integrate Qlik Desktop with Jupyter notebooks

PyToQlik is a library that allows you to integrate Qlik Desktop with Jupyter notebooks. With it you can: Open and edit a Qlik app inside a Ju

BIX Tecnologia 16 Sep 09, 2022