НОВОЕ 📢 Ограниченное стартовое предложение: скидка до 70% на первый месяц для любой игры!Посмотреть тарифы

Как воспроизводить YouTube в Lavalink 4

Хостинг LavalinkUpdated Nov 6, 20267 min read

Lavalink 4 воспроизводит YouTube через плагин, а не сам: его встроенный источник YouTube устарел и должен оставаться выключенным. Установите плагин источника YouTube (dev.lavalink.youtube:youtube-plugin), задайте youtube: false в lavalink.server.sources и включите плагин в plugins.youtube. На наших серверах этого оказалось мало: YouTube потребовал вход. Поэтому один раз выполните вход плагина в запасной аккаунт Google и сохраните refresh token. С релизом 1.18.2 одного входа тоже недостаточно (см. «Версия 1.18.2 и вход» ниже). На одном из наших собственных серверов Lavalink 6 ноября 2026 года, с версией 1.18.2, ещё не выпущенными исправлениями и cipher-сервером, плагин нашёл все 12 тестовых песен, но до входа не смог запустить ни одну, а после входа запустил каждый из 10 завершённых тестов (по 15 секунд, без голосового канала).

В документации плагина сказано, что YouTube помечает некоторые запросы и просит «войти, чтобы подтвердить, что вы не бот». Именно это мы увидели на своих серверах. Без входа плагин находил каждую тестовую песню поиском и по ссылке, но затем каждый из его клиентов получал отказ при попытке её воспроизвести:

Client [WEB] failed: This video requires login.
Client [TVHTML5_SIMPLY] failed: Sign in to confirm you’re not a bot
Client [TVHTML5] failed: This video requires login.
Client [WEB_EMBEDDED_PLAYER] failed: This video is unavailable
dev.lavalink.youtube.AllClientsFailedException: (yts.version: 1.18.2) All clients failed to load the item.

В нашем тесте поиск работал без входа, а воспроизведение нет. Ваш бот видит, что песня запустилась и сразу завершилась с ошибкой трека (track exception).

Ещё две вещи время от времени ломают воспроизведение, и документация плагина описывает обе:

  • Шифр подписи. YouTube часто меняет код, который открывает его потоки. Плагин может передать эту работу удалённому cipher-серверу (remoteCipher), например проекту с открытым кодом yt-cipher.
  • Клиенты. Плагин обращается к YouTube как несколько приложений (WEB, MWEB, ANDROID_VR, TV и другие) и пробует их в том порядке, в каком вы их перечислили. Вход при воспроизведении использует только TV, а искать могут только клиенты, помеченные для этого.

Версия 1.18.2 и вход

Вход использует клиент TV, а у TV-клиента в релизе 1.18.2 есть известная проблема: с августа 2026 года YouTube отвечает ему «The page needs to be reloaded» (задача №226 в репозитории плагина на GitHub, 6 ноября 2026 года всё ещё открыта). Разработчики плагина включили исправление 19 августа 2026 года, в тот же день исправление для потоков без длины, а 17 сентября 2026 года исправление соединений с cipher, но к 6 ноября 2026 года релиз с ними так и не вышел. В README плагина объясняется, как вместо релиза загрузить сборку конкретного коммита: хеш коммита в качестве версии, с snapshot: true. Сначала загляните на страницу релизов: там может быть версия новее.

  1. Добавьте плагин в application.yml в lavalink.plugins, указав версию из релизов плагина на GitHub. 1.18.2 (27 июля 2026 года) на 6 ноября 2026 года самый новый релиз. У него есть описанная выше проблема TV-клиента, поэтому прочитайте тот раздел, прежде чем выбирать версию:
lavalink:
  plugins:
    - dependency: "dev.lavalink.youtube:youtube-plugin:1.18.2"
      snapshot: false
  server:
    sources:
      youtube: false
  1. Включите плагин и задайте ему клиентов:
plugins:
  youtube:
    enabled: true
    allowSearch: true
    clients:
      - MUSIC
      - ANDROID_VR
      - WEB
      - WEBEMBEDDED
      - TV
    oauth:
      enabled: true
  1. При желании добавьте cipher-сервер в plugins.youtube.remoteCipher (url и password), как описано в README плагина.
  2. Запустите Lavalink. Консоль выведет код и адрес: откройте https://www.google.com/device, введите код и разрешите доступ запасным аккаунтом Google. Авторы плагина предупреждают, что аккаунт могут заблокировать, поэтому никогда не используйте основной.
  3. Затем консоль выведет OAUTH INTEGRATION: Token retrieved successfully. Store your refresh token as this can be reused. с токеном в скобках. Скопируйте его в application.yml, чтобы узел не спрашивал снова после перезапуска:
    oauth:
      enabled: true
      refreshToken: "PASTE_THE_TOKEN_HERE"
  1. Перезапустите Lavalink. При рабочем токене он пишет в лог YouTube access token refreshed successfully.

Refresh token открывает этот аккаунт Google: храните application.yml в тайне.

Часть с плагином установка уже делает: плагин YouTube 1.18.2 с исправлениями PlayNHost лежит в plugins как youtube-plugin-1.18.2-playnhost1.jar, собственный источник YouTube в Lavalink выключен, вход включён, а плагин использует cipher-сервер, который мы держим в своей сети. Исправления это изменения TV-клиента, cipher и длины потоков, которые разработчики плагина включили в августе и сентябре 2026 года, но ещё не выпустили. Вам остаётся одно: вход.

  1. Откройте свой сервер в панели и нажмите Запустить в разделе Console.
  2. Найдите строку OAUTH INTEGRATION: To give youtube-source access to your account, go to https://www.google.com/device and enter code XXXX-XXXX, откройте адрес, введите код и разрешите доступ запасным аккаунтом Google.
  3. Когда консоль выведет Token retrieved successfully, скопируйте токен из скобок, остановите узел и добавьте его в oauth: в файле application.yml в разделе Files, как в шаге 5 выше. Сохраняйте отступы.
  4. Снова запустите узел и убедитесь, что появилась строка YouTube access token refreshed successfully.

Оставьте plugins.youtube.remoteCipher.url как есть: панель записывает его при каждом запуске, а адрес работает только с наших серверов. При переустановке ваш application.yml с токеном сохраняется.

Отдаст ли YouTube серверу конкретную песню, решает YouTube, и это меняется без предупреждения. Мы следим, чтобы узел и плагин работали; обещать то, что разрешит YouTube, мы не можем. Если YouTube вам не нужен вообще, задайте enabled: false в plugins:, youtube:.

Сообщения YouTube в консоли

СообщениеЧто оно значит и что делать
OAUTH INTEGRATION: To give youtube-source access to your account, go to https://www.google.com/device and enter code ...Плагин ждёт входа. Выполните шаги выше.
OAUTH INTEGRATION: The device token has expired. OAuth integration has been canceled.Код не ввели вовремя. Перезапустите узел, чтобы получить новый.
YouTube access token refreshed successfullyСохранённый refresh token работает.
Refreshing YouTube access token failedТокен больше не работает, часто потому что из аккаунта вышли или токен скопировали неверно. Удалите refreshToken, перезапустите узел и войдите снова.
This video requires login. или Sign in to confirm you’re not a bot после Client [...] failed:YouTube отказывается обслуживать сервер без входа. Выполните вход плагина или проверьте, что сохранённый токен ещё работает.
All clients failed to load the item.Все клиенты из вашего списка получили отказ. Строки Client [...] failed: рядом называют причину для каждого.
The page needs to be reloaded от клиента TVHTML5Описанная выше проблема TV-клиента в релизе 1.18.2.

Другие способы слушать музыку без YouTube

Тот же узел может играть из источников, которым вход не нужен. На наших тарифах Bandcamp, Twitch, Vimeo, Niconico и прямые ссылки http включены с самого начала. Плагины вроде LavaSrc добавляют другие сайты, часть которых требует ваших собственных ключей API: Как добавить плагины в Lavalink.

Что дальше

Ваш бот уже у другого хостинга? Перенесите его к нам

ПОСЛЕДНИЕ БЛОГИ