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
清晰易读的7x7像素点阵中文字体和取模工具

FontChinese7x7 上古神器 III : 7x7像素点阵中文字体 想要在低分辨率屏幕上显示中文, 却发现中文字体实在是太大? 找了全网发现字体库最小也只有12x12? 甚至是好不容易找到了一个8x8字体, 结果发现字体收费且明确说明不得以任何形式嵌入到软件当中? 那就让这个项目来解决你的问

Angelic47 72 Dec 12, 2022
Reload all Blender add-on modules

Reload-Addon This add-on creates a list of the modules that the add-on selected in the drop-down menu contains and reloads them with the keyboard shor

2 Dec 02, 2021
A simple, light-weight and highly maintainable online judge system for secondary education

y³OJ a simple, light-weight and highly maintainable online judge system for secondary education 一个简单、轻量化、易于维护的、为中学信息技术学科课业教学设计的 Online Judge 系统。 Onlin

20 Oct 04, 2022
Mdisk - 🚧 On Construction 🚧

Mdisk Install For Package pip install mdisk pip install git+https://github.com/HeimanPictures/Mdisk.git Usage You can use this as python module or via

AkKiL 6 Aug 08, 2022
You'll learn about Iterators, Generators, Closure, Decorators, Property, and RegEx in detail with examples.

07_Python_Advanced_Topics Introduction 👋 In this tutorial, you will learn about: Python Iterators: They are objects that can be iterated upon. In thi

Milaan Parmar / Милан пармар / _米兰 帕尔马 252 Dec 23, 2022
Sardana integration into the Jupyter ecosystem.

sardana-jupyter Sardana integration into the Jupyter ecosystem.

Marc Espín 1 Dec 23, 2021
Control your gtps with gtps-tools!

Note Please give credit to me! Do not try to sell this app, because this app is 100% open source! Do not try to reupload and rename the creator app! S

Jesen N 6 Feb 16, 2022
[CVPR 2020] Rethinking Class-Balanced Methods for Long-Tailed Visual Recognition from a Domain Adaptation Perspective

Rethinking Class-Balanced Methods for Long-Tailed Visual Recognition from a Domain Adaptation Perspective [Arxiv] This is PyTorch implementation of th

Abdullah Jamal 22 Nov 19, 2022
This app is to use algorithms to find the root of the equation

In this repository, I made an amazing app with tkinter python language and other libraries the idea of this app is to use algorithms to find the root of the equation I used three methods from numeric

Mohammad Al Jadallah 3 Sep 16, 2022
Release for Improved Denoising Diffusion Probabilistic Models

improved-diffusion This is the codebase for Improved Denoising Diffusion Probabilistic Models. Usage This section of the README walks through how to t

OpenAI 1.2k Dec 30, 2022
Advanced IPv4 Subnet Calculator in Python3

Advanced IPv4 Subnet Calculator in Python3 Table of Contents Getting Started Installation How it works? SVI Configuration Template Previews Getting St

Osama Abbas 1 May 10, 2022
This app converts an pdf file into the audio file.

PDF-to-Audio This app takes an pdf as an input and convert it into audio, and the library text-to-speech starts speaking the preffered page given in t

Ojas Barawal 3 Aug 04, 2021
Persian Kaldi profile for Rhasspy built from open speech data

Persian Kaldi Profile A Rhasspy profile for Persian (fa). Installation Get started by first installing Vosk: # Create virtual environment python3 -m v

Rhasspy 12 Aug 08, 2022
A PDM plugin to publish to PyPI

PDM Publish A PDM plugin to publish to PyPI NOTE: Consider if you need this over using twine directly Installation If you installed pdm via pipx: pipx

Branch Vincent 20 Aug 06, 2022
A multi purpose password managing and generating tool called Kyper.

Kyper A multi purpose password managing and generating tool called Kyper. Setup The setup for Kyper is fairly simple only involving the command python

Jan Dorian Poczekaj 1 Feb 05, 2022
Быстрый локальный старт

Быстрый локальный старт

Anton Ogorodnikov 1 Sep 28, 2021
poetry2nix turns Poetry projects into Nix derivations without the need to actually write Nix expressions

poetry2nix poetry2nix turns Poetry projects into Nix derivations without the need to actually write Nix expressions. It does so by parsing pyproject.t

Nix community projects 405 Dec 29, 2022
CoreSE - basic of social Engineering tool

Core Social Engineering basic of social Engineering tool. just for fun :) About First of all, I must say that I wrote such a project because of my int

Hamed Mohammadvand 7 Jun 10, 2022
0xFalcon - 0xFalcon Tool For Python

0xFalcone Installation Install 0xFalcone Tool: apt install git git clone https:/

Alharb7 6 Sep 24, 2022
Old versions of Deadcord that are problematic or used as reference.

⚠️ Unmaintained and broken. We have decided to release the old version of Deadcord before our v1.0 rewrite. (which will be equiped with much more feat

Galaxzy 1 Feb 10, 2022