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
Hexa is an advanced browser.It can carry out all the functions present in a browser.

Hexa is an advanced browser.It can carry out all the functions present in a browser.It is coded in the language Python using the modules PyQt5 and sys mainly.It is gonna get developed more in the future.It is made specially for the students.Only 1 tab can be used while using it so that the students cant missuse the pandemic situation :)

null 1 Dec 10, 2021
Grail(TM) is a web browser written in Python

Grail is distributed in source form. It requires that you have a Python interpreter and a Tcl/Tk installation, with the Python interpreter configured for Tcl/Tk support.

null 22 Oct 18, 2022
Open source tools to allow working with ESP devices in the browser

ESP Web Tools Allow flashing ESPHome or other ESP-based firmwares via the browser. Will automatically detect the board type and select a supported fir

ESPHome 195 Dec 31, 2022
A script that will warn you, by opening a new browser tab, when there are new content in your favourite websites.

web check A script that will warn you, by opening a new browser tab, when there are new content in your favourite websites. What it does The script wi

Jaime Álvarez 52 Mar 15, 2022
A browser login credentials thief for windows and Linux

Thief ???? A browser login credentials thief for windows and Linux Python script to decrypt login credentials from browsers in windows or linux Decryp

Ash 1 Dec 13, 2021
Simple Python Gemini browser with nice formatting

gg I wasn't satisfied with any of the other available Gemini clients, so I wrote my own. Requires Python 3.9 (maybe older, I haven't checked) and opti

Sarah Taube 2 Nov 21, 2021
Batch generate asset browser previews

When dealing with hundreds of library files it becomes tedious to mark their contents as assets. Using python to automate the process is a perfect fit

null 54 Dec 24, 2022
Integration between the awesome window manager and the firefox web browser.

Integration between the awesome window manager and the firefox web browser.

contribuewwt 3 Feb 2, 2022
KeyBrowser: A program launches a browser and a keylogger at the same time, is used to retrieve a person's personal information

KeyBrowser: A program launches a browser and a keylogger at the same time, is used to retrieve a person's personal information

null 3 Oct 16, 2022
Backend/API for the Mumble.dev, an open source social media application.

Welcome to the Mumble Api Repository Getting Started If you are trying to use this project for the first time, you can get up and running by following

Dennis Ivy 189 Dec 27, 2022
Telegram bot to upload media to telegra.ph

Telegraph @StarkTelegraphBot A star ⭐ from you means a lot to us ! Telegram bot to upload media to telegra.ph Usage Deploy to Heroku Tap on above butt

Stark Bots 24 Dec 29, 2022
Tools for collecting social media data around focal events

Social Media Focal Events The focalevents codebase provides tools for organizing data collected around focal events on social media. It is often diffi

Ryan Gallagher 80 Nov 28, 2022
It really seems like Trump is trying to get his own social media started. Not a huge fan tbh.

FuckTruthSocial It really seems like Trump is trying to get his own social media started. Not a huge fan tbh. (When TruthSocial actually releases, I'l

null 0 Jul 18, 2022
An integrated library for checking email if it is registered on social media

An integrated library for checking email if it is registered on social media

Sidra ELEzz 13 Dec 8, 2022
Mail Me My Social Media stats (SoMeMailMe)

Mail Me My Social Media follower count (SoMeMailMe) TikTok only show data 60 days back in time. With this repo you can easily scrape your follower cou

Daniel Wigh 1 Jan 7, 2022
A python script to decrypt media files encrypted using the Android application 'Secret Calculator Photo Vault'. Supports brute force of PIN also.

A python script to decrypt media files encrypted using the Android application 'Secret Calculator Photo Vault'. Supports brute force of PIN also.

null 3 May 1, 2022
Media Cloud Outlet Filtering

Using ABYZ and Media-Bias Fact-Check outlet databases, I've provided outlet CSV files for both and scripts to intended to match Media Cloud files to respective outlets.

Stephen Scarano 1 Feb 2, 2022
google-resumable-media Apache-2google-resumable-media (🥉28 · ⭐ 27) - Utilities for Google Media Downloads and Resumable.. Apache-2

google-resumable-media Utilities for Google Media Downloads and Resumable Uploads See the docs for examples and usage. Experimental asyncio Support Wh

Google APIs 36 Nov 22, 2022
Yandex OSINT tool

YaSeeker Description YaSeeker - an OSINT tool to get info about any Yandex account using email or login. It can find: Fullname Photo Gender Yandex UID

HowToFind 110 Jan 3, 2023
Recognition of 38 speech commands in russian. Based on Yandex Cup 2021 ML Challenge: ASR

Speech_38_ru_commands Recognition of 38 speech commands in russian. Based on Yandex Cup 2021 ML Challenge: ASR Программа умеет распознавать 38 ключевы

Andrey 9 May 5, 2022