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
Myrepo - A tool to create your own Arch Linux repository

myrepo A (experimental) tool to create your own Arch Linux repository Example We

Anton Hvornum 5 Feb 19, 2022
Your copilot to studies and work (Pomodoro-timer, Translate and Notes app)

Copylot Your copilot to studies and work (Pomodoro-timer, Translate and Notes app) Copylot are three applications in one: Pomodoro Translate Notes Cop

Eduardo Mendes 20 Dec 16, 2022
This is a small compiler to demonstrate how compilers work.

This is a small compiler to demonstrate how compilers work. It compiles our own dialect to C, while being written in Python.

Md. Tonoy Akando 2 Jul 19, 2022
Automated GitHub profile content using the USGS API, Plotly and GitHub Actions.

Top 20 Largest Earthquakes in the Past 24 Hours Location Mag Date and Time (UTC) 92 km SW of Sechura, Peru 5.2 11-05-2021 23:19:50 113 km NNE of Lobuj

Mr. Phantom 28 Oct 31, 2022
This is the course repository for the Spring 2022 iteration of MACS 30123 "Large-Scale Computing for the Social Sciences" at the University of Chicago.

Large-Scale Computing for the Social Sciences Spring 2022 - MACS 30123/MAPS 30123/PLSC 30123 Instructor Information TA Information TA Information Cour

6 May 06, 2022
The program calculates the BMI of people

Programmieren Einleitung: Das Programm berechnet den BMI von Menschen. Es ist sehr einfach zu handhaben, so können alle Menschen ihren BMI berechnen.

2 Dec 16, 2021
The code for 2021 MGTV AI Challenge Anti Stealing Link, and the online result ranks 10th.

赛题介绍 芒果TV-第二届“马栏山杯”国际音视频算法大赛-防盗链 随着业务的发展,芒果的视频内容也深受网友的喜欢,不少视频网站和应用开始盗播芒果的视频内容,盗链网站不经过芒果TV的前端系统,跳过广告播放,且消耗大量的服务器、带宽资源,直接给公司带来了巨大的经济损失,因此防盗链在日常运营中显得尤为重要

tongji40 16 Jun 17, 2022
A promo calculator for sports betting odds.

Sportbetter Calculation Toolkit Parlay Calculator This is a quick parlay calculator that considers some of the common promos offered. It is used to id

Luke Bhan 1 Sep 08, 2022
Calibre Libgen Non-fiction / Sci-tech store plugin

CalibreLibgenSci A Libgen Non-Fiction/Sci-tech store plugin for Calibre Installation Download the latest zip file release from here Open Calibre Navig

IDDQD 9 Dec 27, 2022
tgEasy | Easy for a Brighter Shine | Monkey Patcher Addon for Pyrogram

tgEasy | Easy for a Brighter Shine | Monkey Patcher Addon for Pyrogram

Jayant Hegde Kageri 35 Nov 12, 2022
Persistent/Immutable/Functional data structures for Python

Pyrsistent Pyrsistent is a number of persistent collections (by some referred to as functional data structures). Persistent in the sense that they are

Tobias Gustafsson 1.8k Dec 31, 2022
Artificial intelligence based on 5-dimensional quantum selection

Deep Thought An artificial intelligence based on 5-dimensional quantum selection. Algorithm The payload Make an random bit array (e.g. 1101...) Conver

Larry Holst 3 Dec 14, 2022
A python script to search for k-uniform Euclidean tilings.

k-uniform-solver A python script to search for k-uniform Euclidean tilings. This project's aim is to replicate and extend the list of k-uniform Euclid

3 Dec 06, 2022
Social reading and reviewing, decentralized with ActivityPub

BookWyrm Social reading and reviewing, decentralized with ActivityPub Contents Joining BookWyrm Contributing About BookWyrm What it is and isn't The r

BookWyrm 1.4k Jan 08, 2023
Data Applications Project

DBMS project- Hotel Franchise Data and application project By TEAM Kurukunda Bhargavi Pamulapati Pallavi Greeshma Amaraneni What is this project about

Greeshma 1 Nov 28, 2021
A simple weather app.

keather A simple weather app. This is currently not finished. Dependencies: yay -S python-beautifulsoup4 tk

1 Jan 09, 2022
A minimalist personal blogging system that natively supports Markdown, LaTeX, and code highlighting.

December Welcome to the December blogging system's code repository! Introduction December is a minimalist personal blogging system that natively suppo

TriNitroTofu 10 Dec 05, 2022
Meera 2 May 12, 2022
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
Un Assistente Vocale scritto in Python e altamente personalizzabile

Un Assistente Vocale scritto in Python e altamente personalizzabile

Marco 2 May 06, 2022