Дорабатываем Яндекс.Станцию для просмотра YouTube / Хабр
На Яндекс.Станции неудобно смотреть YouTube. Нет рекомендаций, подписок и даже поиск нормально не работает. Поэтому я написал телеграмм бота для отправки на неё любого видео.
Под катом история, как я это сделал несмотря на то, что официального открытого API нет.
С чего все началось?
Я инженер. Постоянно изучаю, как работают разные технологии и вещи вокруг, а также делаю много интересных проектов сам. Когда друзья подарили мне Яндекс.Станцию, я зареверсил протокол активации и развил идею передачи данных, ориентированной на wow-эффект.
У меня глупый (не smart) телевизор, а в качестве основной медиа приставки я использую Станцию. Все отлично, да только YouTube смотреть на ней совсем неудобно. Нельзя войти в аккаунт Ютуба, а значит, никаких рекомендаций и подписок. Кроме того, поиск по видео в Станции, как я понял, осуществляется через Яндекс. Видео. К сожалению такая схема не очень хорошо работает. Иногда не находятся видео даже если дословно произнести название, а новые видео вообще нельзя посмотреть, пока поисковик Яндекса их не проиндексирует.
Я почти смирился с тем, что YouTube на Станции смотреть нельзя, но все изменилось пару недель назад.
Что же произошло?
После клика по кнопке видео улетело на Яндекс.Станцию и воспроизвелось дальше там. Прямо как ChromeCast или AirPlay. Восторг! Но я обрадовался не самому функционалу, а потенциальной возможности отправить любое видео на станцию.
Я и думать забыл про сериал — на все выходные ушел в реверс инжиниринг и разработку.
Давайте разбираться.
Открываем «Кинопоиск» или «Яндекс.Видео» в Хроме — там отличные инструменты для web разработки. Находим нужную кнопку, кликаем правой клавишей мыши, выбираем «Исследовать элемент».
Можно много, что там поизучать, но нас интересует, какой запрос выполняется при клике по этой кнопке. Переходим во вкладку «Network» инструментов разработчика и смотрим запросы.
Да, отлетает много статистики, но сразу видно 2 интересных запроса. Это devices_online_stats и station.
Получаем список устройств
devices_online_stats — запрос активных устройств пользователя. Простой GET запрос. Если вы авторизованы в Яндексе, то можете узнать о своих устройствах просто открыв в браузере ссылку:
quasar.yandex.ru/devices_online_stats
Что в ответе:
{ "items":[ { "icon":"https://avatars.mds.yandex.net/get-yandex-station/1540981/yandexstationicon/orig", "id":"************", "name":"Яндекс Станция", "online":true, "platform":"yandexstation", "screen_capable":true, "screen_present":true } ], "status":"ok" }
Интересно и достаточно интуитивно.
Воспроизводим видео
Запрос на yandex.ru/video/station отправляется методом POST. Повторим его из консоли, получив команду следующим образом:
Запускаем в терминале и получаем ответ:
{ "status": "play", "msg": "success", "code": 1 }
Через пару секунд видео запускается на станции. Успех!
Собираем
Я удалил все «лишние» поля из запроса так, чтобы он остался рабочим. Для отправки видео на Станцию в тело и заголовки POST запроса нужно положить всего 4 параметра:
- SessionID — авторизация в Яндексе
- x-csrf-token
- provider_item_id — ссылка на видео (или идентификатор для некоторых сервисов)
- device — Идентификатор устройства, который мы получили ранее
Что за x-csrf-token? Не будем сейчас углубляться. Его можно получить просто GET запросом на frontend.vh.yandex.ru/csrf_token если вы авторизованы в Яндексе.
К этому моменту я уже стал оборачивать все в скрипт на Python. В итоге функция для отправки видео на станцию выглядит примерно так:
def sendToScreen(video_url): # Auth and getting Session_id auth_data = { 'login': config.login, 'passwd': config.password } s = requests.Session() s.get("https://passport.yandex.ru/") s.post("https://passport.yandex.ru/passport?mode=auth&retpath=https://yandex.ru", data=auth_data) Session_id = s.cookies["Session_id"] # Getting x-csrf-token token = s.get('https://frontend.vh.yandex.ru/csrf_token').text # Getting devices info TODO: device selection here devices_online_stats = s.get("https://quasar.yandex.ru/devices_online_stats").text devices = json.loads(devices_online_stats)["items"] # Preparing request headers = { "x-csrf-token": token, } data = { "msg": { "provider_item_id": video_url }, "device": devices[0]["id"] } if "https://www.youtube" in video_url: data["msg"]["player_id"] = "youtube" # Sending command with video to device res = s.post("https://yandex.ru/video/station", data=json.dumps(data), headers=headers) return res.text
Вы могли заметить, что я добавляю поле player_id если прислана ссылка с Ютуба. Дело в том, что на Станции есть несколько плееров с кодами youtube, vh и ott. По умолчанию используется vh, но тогда ломается превью и название ролика. Кроме того, его состояние не сбрасывается при смене ролика, что часто вызывает ошибки (Возможно, не все поля в запросе были «лишними»). Плеер ott, как я понял, используется для стриминговых сервисов, а это значит, что в перспективе можно смотреть IPTV через станцию.
Что в итоге?
Сейчас у меня есть бот, через которого мы отправляем видео с Ютуба на Станцию. Просто нажимаем «Поделиться» в приложении YouTube и отправляем ссылку Боту. Кстати, я назвал его «Ящик» и сделал логотип).
Я не стал делать его публичным, чтобы не собирать логины и пароли. Но вы можете развернуть такого же для себя или доработать для OAuth авторизации или отправки видео с других сайтов. Все исходники доступны на GitHub.
Я хотел сделать расширение для браузера, чтобы работало совсем как AirPlay с любыми видео, но понял, что удобнее отправлять из приложения с телефона. А для такого сценария лучше подходит бот. Вот видео его работы:
Заключение
Когда инженеру нехватает функционала, он доделывает его сам. Мы теперь действительно регулярно пользуемся этим ботом — очень удобно 🙂
Разработчики Яндекса, пожалуйста не ломайте этот запрос. Это не уязвимость. Работает только с аутентификацией. А если есть возможность — сделайте API устройств публичным — столько всего можно еще сделать!
Спасибо, что читаете мои статьи! Надеюсь, вам было интересно.
Успехов!
Соловьёв LIVE, передача, смотреть онлайн // Смотрим
Соловьёв LIVE, передача, смотреть онлайн // СмотримПрофиль
программа
12+
Смотрим всё
Смотрим всё
Авторская политическая программа журналиста, радио- и телеведущего Владимира Соловьева.
В прямом эфире – новости и размышления, прямые включения корреспондентов, обсуждение повестки с признанными экспертами из разных областей.
Большой субботний выпуск.
Москва. Кремль. Путин
Соловьев.
live. Монолог
- общество
- передача
- Владимир Соловьев
- политика
- Вести FM: популярное
- Вести FM: политические шоу
- Вести FM: все программы
Авто-геолокация
Воспроизведение видео в Яндекс Браузере.
Справочная информация- Какие форматы видео можно воспроизводить в Яндекс Браузере?
- Просмотр видео в отдельном окне
- Прекращение поддержки Flash
- Проблемы с видео
Яндекс.Браузер может открывать видеофайлы со следующими расширениями: mp4, swf, avi, webm, mpg, ogv, x-m4v, wmv, м4в.
Видеофайлы с расширениями MOV, QUICKTIME и FLV не поддерживаются.
Примечание. Видео появляется в отдельном окне, если вы сами запустили видео или оно воспроизводится со звуком. Всплывающие окна с видео недоступны в режиме инкогнито.
Вы можете просматривать видео в отдельном окне Яндекс.Браузера. Например, вы можете одновременно запустить приложение и сопровождающие его видео-инструкции. Окно видеопроигрывателя отображается поверх других окон, поэтому вы можете просматривать его независимо от используемого приложения. Вы можете перетащить окно в любое место на экране или изменить размер окна. Видео продолжится, даже если вы свернете Яндекс Браузер. Если видео в формате HTML5 содержит субтитры (например, видео на Youtube имеют значок на панели управления), они также появятся в новом окне.
Нажмите → Настройки → Инструменты.
В разделе Просматривать видео поверх других вкладок и программ отключите параметр Показывать всплывающую кнопку на видео или Автоматически открывать видео в отдельном окне.
Видео в отдельном окне
По умолчанию видео открывается в отдельном окне при переходе на другую вкладку или программу. Если этого не произошло, наведите курсор на верхнюю часть видеопроигрывателя и нажмите .
Наконечник. Вы можете перетащить значок на видеопроигрыватель в любое место.
Управление видео
Используйте сочетания клавиш для быстрого управления.
Пауза/воспроизведение | Пробел |
Перейти на 5 секунд вперед | → |
Перемотать на 5 секунд назад | ← |
Вы также можете замедлить или ускорить видео. Для этого нажмите → Скорость и выберите скорость из списка.
Управление видео в отдельном окне
Вы можете скрыть кнопку всплывающего видео или отключить автоматическое всплывающее видео:
Если вы не хотите, чтобы видео появлялось в отдельном окне, отключите обе опции.
Технология Flash использовалась в браузерах для воспроизведения мультимедийных файлов и запуска игр. Adobe прекратила его поддержку и распространение в 2021 году.
Большинство сайтов уже используют другие форматы воспроизведения контента, такие как HTML5 или WebGL. Эти технологии с открытым исходным кодом быстрее и стабильнее, значительно безопаснее, чем Flash, и потребляют меньше энергии.
Если вы посещаете сайт, использующий Flash, обратитесь в его службу поддержки.
Откройте → Дополнения и отключите все расширения.
Если это решит вашу проблему, просмотрите свои расширения и снова включите их, пока не найдете то, которое вызвало проблему.
Отключить проблемное расширение. Вы можете сообщить разработчикам о проблеме.
Очистите кеш, чтобы Яндекс.Браузер не загружал неверную копию сохраненной ранее страницы.
Нажмите → Настройки → Система.
Если в разделе Производительность выбран параметр Использовать аппаратное ускорение, если возможно, снимите его. Если параметр не выбран, выберите его.
Закройте Яндекс.Браузер, нажав Ctrl + Shift + Q.
Перезапустите браузер, чтобы изменения вступили в силу.
Нажмите Пуск → Панель инструментов → Диспетчер устройств.
Открыть видеоадаптеры: появится список видеокарт.
Щелкните правой кнопкой мыши имя вашей видеокарты.
В контекстном меню выберите Обновить драйверы.
Нажмите → Настройки → Веб-сайты.
В нижней части страницы нажмите Дополнительные параметры сайта.
В разделе Защищенное содержимое включите параметр Разрешить воспроизведение защищенного содержимого.
Некоторые службы используют уникальные идентификаторы устройств для защиты контента. Чтобы активировать их, перейдите в раздел Идентификаторы защищенного контента и включите параметр Разрешить сайтам использовать идентификаторы для воспроизведения защищенного контента (только для Windows).
Проверьте версию вашего браузера.
Если версия ниже 20.4.3, обновите браузер.
Если у вас актуальная версия Яндекс Браузера, выполните в консоли команду sudo /path to the browser folder/browser/update-ffmpeg. По умолчанию браузер устанавливается в opt/yandex/browser.
Если нет, убедитесь, что драйвер камеры установлен правильно, и при необходимости переустановите его:
Нажмите Пуск → Панель управления → Диспетчер устройств.
Открыть видеоадаптеры: появится список видеокарт.
Щелкните правой кнопкой мыши имя вашей видеокарты.
В контекстном меню выберите Обновить драйверы.
Если можно, укажите вручную в настройках Яндекс.Браузера:
Нажмите → Настройки → Сайты.
Откройте Дополнительные настройки сайта.
В разделе «Доступ к вашей камере» выберите свою камеру и включите параметр «Спросить разрешение».
Если это не помогло, обратитесь в службу поддержки Яндекс.Браузера.
Нажмите «Пуск» → «Настройки» → «Система».
Найдите версию Windows в разделе «О программе». Например, «Windows 10 Pro N».
Закрыть Яндекс.Браузер. Для этого нажмите → Дополнительно → Закрыть браузер или клавиши Ctrl + Shift + Q.
Перезапустите Яндекс.Браузер и проверьте, воспроизводится ли видео.
Видео не воспроизводится; они загружаются на мой компьютер
Если владелец сайта не разрешает вам открывать файл в браузере, файл загружается на компьютер пользователя. Чтобы открыть его в Яндекс.Браузере, перетащите значок скачанного файла, который появится справа от поля. Вы можете ввести поисковые запросы в адресной строке, и Яндекс.Браузер поймет, что вам нужно.
«}}»> в браузер или используйте сочетание клавиш Ctrl + O и выберите файл в папке «Загрузки».
Проблемы с воспроизведением видео
Если в Яндекс.Браузере вместо видео отображается черный экран, изображение дрожит в онлайн-играх или видео долго загружается, все время зависает или останавливается при переходе в полноэкранный режим , попробуйте один из следующих способов.
Проверьте расширения Яндекс.Браузера
Измените настройки аппаратного ускорения
Попробуйте включить или отключить аппаратное ускорение:
Проверьте, решило ли это проблему.
Обновите драйверы видеокарты
Проверьте, решило ли это проблему.
Если проблема не исчезнет, напишите нам. В письме укажите, что драйвера обновлены.
Защищенный контент не воспроизводится
Примечание. Защищенный контент не воспроизводится в режиме инкогнито.
Если видео, содержание которого защищено авторскими правами, не воспроизводится:
Обновить и перезапустить Яндекс Браузер
Устаревшая версия Яндекс Браузера может не поддерживать технологию, необходимую для быстрой загрузки видео. Установите последнее обновление Яндекс.Браузера.
При первом запуске Яндекс.Браузера некоторые плагины, необходимые для корректной работы системы шифрования контента, могут не подключаться. Чтобы исправить эту ошибку, перезапустите Яндекс.Браузер, и плагины подключатся автоматически.
Разрешить воспроизведение защищенного содержимого
NPAPI и Unity не поддерживаются
Яндекс.Браузер больше не поддерживает плагин NPAPI, на котором работает Unity Web Player. Эта технология устарела. Unity также прекратила поддержку этого плагина.
В Linux не работает видео в Яндекс Браузере
Если видео HTML5 или видео с защищенным содержимым не воспроизводится:
Не могу отключить автозапуск видео при переходе на сайт
Когда вы переходите на определенные сайты, видео начинает воспроизводиться автоматически. К сожалению, запретить автовоспроизведение видео на сайтах в Яндекс.Браузере невозможно.
Браузер не видит веб-камеру
Проверьте, распознают ли другие программы камеру.
Ошибка «Необходимые видеокодеки не найдены» в Windows
Если на сайте (например, kinopoisk.ru) не воспроизводится видео и появляется сообщение «Видеокодеки не обнаружены», это означает, что у вас Версия Windows N/KN, не имеющая необходимых видеокодеков.
Проверьте версию Windows:
Выберите версию Windows:
Не Windows N/KNWindows 7 N/KNWindows 8 N/KNWindows 8.1 N/KNWindows 10 N/KN
Напишите нам, используя форму.
Если не помогло, напишите нам через форму.
Загрузите и установите Media Feature Pack для Windows 8 N/KN.
Загрузите и установите Media Feature Pack для Windows 8.1 N/KN.
Загрузите и установите Media Feature Pack для Windows 10 N/KN.
Звук тихий или звука нет вообще
Чтобы найти решения проблем со звуком в видео, см. Проблемы со звуком.
Связаться со службой поддержки
Была ли статья полезной?
Перенос из Apple Music на YouTube
Перенесите все свои плейлисты, песни и любимые альбомы из Apple Music на YouTube.
С FreeYourMusic вы можете перенести плейлист за несколько простых шагов, не платя 💰💰💰 за долгосрочную подписку. Скачать Windows
Скачать Linux
Скачать Linux
Мы также доступны на
Androidiosmacoswindows
NO 💳 Credit Card Trany
, как выдвинуть
Apple Music Playlis это позволяет вам
легко переносить вашу музыкальную библиотеку
Выбрать Apple Music в качестве источника
Используйте текущую платформу Apple Music в качестве источника и начните передавать плейлисты с помощью FreeYourMusic.
Как перенести
плейлист Apple Music на YouTube
После того, как вы установите FreeYourMusic, вы сможете
легко перенести свою музыкальную библиотеку
Выберите YouTube в качестве места назначения
Выберите YouTube в качестве платформы, на которой вы хотите создавать новый плейлист. Все, что вам нужно сделать, это всего лишь одно нажатие кнопки!
Как перенести
плейлист Apple Music на YouTube
Как только вы установите FreeYourMusic, это позволит0326, чтобы легко перенести свою музыкальную библиотеку
Выберите списки воспроизведения для передачи
Найдите списки воспроизведения, альбомы или треки, которые вы хотите перенести из службы Apple Music на YouTube, и выберите всю музыку, которую хотите переместить.
Как перенести
плейлист Apple Music на YouTube
После того, как вы установите FreeYourMusic, вы сможете
легко перенести свою музыкальную библиотеку
Подтвердите свои действия и готово!
Передача завершена. Ваши песни и плейлисты Apple Music были перемещены на YouTube, и вы можете начать пользоваться своим новым сервисом потоковой передачи музыки.
Загрузить сейчас
Вы когда-нибудь задумывались 🤔 каково это использовать другие сервисы потоковой передачи музыки?
Создание новых плейлистов с нуля может быть 😩😭😤 и занимать много времени… С FreeYourMusic это никогда не было проще.
Этот простой инструмент поможет вам сэкономить ⏳ при переходе с Apple Music на YouTube. В отличие от любых других приложений, с FreeYourMusic вы можете бесплатно перенести все свои музыкальные плейлисты на новую платформу, не покупая ежемесячную подписку.
Загрузите наше приложение для iOS, Android или настольного устройства и откройте для себя самый простой способ перемещения ваших любимых музыкальных плейлистов и альбомов.
Загрузить Windows
Загрузить Linux
Загрузить Linux
Мы также доступны на
AndroidiOSmacOSWindows
Вы когда-нибудь задумывались 🤔 каково это использовать другие сервисы потоковой передачи музыки?
Создание новых плейлистов с нуля может быть 😩😭😤 и занимать много времени… С FreeYourMusic это никогда не было проще.
Этот простой инструмент поможет вам сэкономить ⏳ при переходе с Apple Music на YouTube. В отличие от любых других приложений, с FreeYourMusic вы можете бесплатно перенести все свои музыкальные плейлисты на новую платформу, не покупая ежемесячную подписку.
Загрузите наше приложение для iOS, Android или настольного устройства и откройте для себя самый простой способ перемещения ваших любимых музыкальных плейлистов и альбомов.
Загрузить Windows
Загрузить Linux
Загрузить Linux
Мы также доступны для
AndroidiOSmacOSWindows
Есть вопросы?
Сколько плейлистов и песен я могу переместить одновременно?
Доступны две версии нашего приложения — бесплатная и премиум. Если вы используете бесплатную версию нашего приложения, вы можете перемещать один плейлист за сеанс. Вы также можете купить полную версию FreeYourMusic, которая даст вам доступ к неограниченной передаче за сеанс. Вы платите только один раз и получаете пожизненные обновления и поддержку.
Сколько времени займет перенос Apple Music на YouTube?
Всего несколько кликов! Начните с выбора Apple Music в качестве исходной музыкальной платформы, а затем выберите следующий пункт назначения — службу потоковой передачи YouTube. Как только вы выберете свои плейлисты и альбомы для процесса переноса, FYM перенесет их в течение нескольких минут или меньше.
Могу ли я использовать платформу YouTube в качестве источника для переноса моей библиотеки на YouTube?
Конечно. FreeYourMusic поддерживает самые популярные музыкальные сервисы. Вы можете передавать музыку из Amazon Music, Apple Music, Deezer, Pandora, SoundCloud, Spotify, Tidal, YouTube, YouTube Music, Napster, Qobuz, QQ Music (QQ 音乐), Yandex Music, VK Music (VKontakte Music/BOOM), Anghami , Zvuk (Звук), Gaana, JioSaavn, Resso, Boomplay, Резервное копирование файлов (Excel/CSV) — все, что вам нужно сделать, это выбрать плейлист, который вы хотите переместить, а затем позволить FYM переместить его в место назначения.