NOWOŚĆ 📢 Ograniczona oferta na start: do 70% zniżki na pierwszy miesiąc, na każdą grę!Zobacz plany

Jak odtwarzać YouTube w Lavalink 4

Hosting LavalinkUpdated Nov 6, 20267 min read

Lavalink 4 odtwarza YouTube przez plugin, a nie sam z siebie: jego wbudowane źródło YouTube jest przestarzałe i powinno zostać wyłączone. Zainstaluj plugin źródła YouTube (dev.lavalink.youtube:youtube-plugin), ustaw youtube: false w lavalink.server.sources i włącz plugin w plugins.youtube. Na naszych serwerach to nie wystarczyło: YouTube wymagał logowania, więc zaloguj plugin raz na zapasowe konto Google i zachowaj refresh token. Przy wydaniu 1.18.2 samo logowanie też nie wystarcza (zobacz „Wersja 1.18.2 i logowanie” niżej). Na jednym z naszych własnych serwerów Lavalink, 6 listopada 2026, z wersją 1.18.2, niewydanymi poprawkami i serwerem cipher, plugin znalazł wszystkie 12 utworów testowych, ale przed zalogowaniem nie uruchomił żadnego z nich, a po zalogowaniu uruchomił każdy z 10 ukończonych testów (po 15 sekund, bez kanału głosowego).

Dokumentacja pluginu mówi, że YouTube oznacza niektóre żądania i prosi o „zalogowanie się, aby potwierdzić, że nie jesteś botem”. To właśnie widzieliśmy na naszych serwerach. Bez logowania plugin znajdował każdy utwór testowy wyszukiwaniem i linkiem, ale potem każdy z jego klientów był odrzucany przy próbie odtworzenia:

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.

W naszym teście wyszukiwanie działało bez logowania, odtwarzanie nie. Twój bot widzi, że utwór startuje i od razu kończy się wyjątkiem ścieżki (track exception).

Dwie inne rzeczy co jakiś czas psują odtwarzanie, a dokumentacja pluginu opisuje obie:

  • Szyfr podpisu. YouTube często zmienia kod, który odblokowuje jego strumienie. Plugin może zlecić tę pracę zdalnemu serwerowi cipher (remoteCipher), takiemu jak otwartoźródłowy yt-cipher.
  • Klienci. Plugin rozmawia z YouTube jako kilka aplikacji (WEB, MWEB, ANDROID_VR, TV i inne) i próbuje ich w kolejności, jaką podasz. Tylko TV używa logowania do odtwarzania, a wyszukiwać mogą tylko klienci do tego oznaczeni.

Wersja 1.18.2 i logowanie

Z logowania korzysta klient TV, a klient TV w wydaniu 1.18.2 ma znany problem: od sierpnia 2026 YouTube odpowiada mu „The page needs to be reloaded” (zgłoszenie #226 w repozytorium pluginu na GitHubie, wciąż otwarte 6 listopada 2026). Twórcy pluginu scalili poprawkę 19 sierpnia 2026, tego samego dnia poprawkę dla strumieni bez podanej długości, a 17 września 2026 poprawkę połączeń z cipherem, ale do 6 listopada 2026 nie wyszło żadne wydanie z nimi. README pluginu wyjaśnia, jak zamiast wydania załadować build konkretnego commitu: hash commitu jako wersja, z snapshot: true. Najpierw sprawdź stronę wydań, czy nie ma nowszej wersji.

  1. Dodaj plugin do application.yml w lavalink.plugins, z wersją z wydań pluginu na GitHubie. 1.18.2 (27 lipca 2026) jest najnowszym wydaniem na 6 listopada 2026. Ma opisany wyżej problem klienta TV, więc przeczytaj tę sekcję przed wyborem wersji:
lavalink:
  plugins:
    - dependency: "dev.lavalink.youtube:youtube-plugin:1.18.2"
      snapshot: false
  server:
    sources:
      youtube: false
  1. Włącz plugin i podaj mu klientów:
plugins:
  youtube:
    enabled: true
    allowSearch: true
    clients:
      - MUSIC
      - ANDROID_VR
      - WEB
      - WEBEMBEDDED
      - TV
    oauth:
      enabled: true
  1. Opcjonalnie dodaj serwer cipher w plugins.youtube.remoteCipher (url i password), jak opisuje README pluginu.
  2. Uruchom Lavalink. Konsola wypisze kod i adres: otwórz https://www.google.com/device, wpisz kod i zezwól na dostęp zapasowym kontem Google. Autorzy pluginu ostrzegają, że konto może zostać zamknięte, więc nigdy nie używaj głównego.
  3. Konsola wypisze wtedy OAUTH INTEGRATION: Token retrieved successfully. Store your refresh token as this can be reused. z tokenem w nawiasach. Skopiuj go do application.yml, żeby node nie pytał ponownie po restarcie:
    oauth:
      enabled: true
      refreshToken: "PASTE_THE_TOKEN_HERE"
  1. Zrestartuj Lavalink. Przy działającym tokenie zapisuje w logu YouTube access token refreshed successfully.

Refresh token otwiera to konto Google: trzymaj application.yml w tajemnicy.

Instalacja robi już część dotyczącą pluginu: plugin YouTube 1.18.2 z poprawkami PlayNHost leży w plugins jako youtube-plugin-1.18.2-playnhost1.jar, własne źródło YouTube Lavalink jest wyłączone, logowanie jest włączone, a plugin używa serwera cipher, który prowadzimy we własnej sieci. Poprawki to zmiany w kliencie TV, cipherze i długości strumieni, które twórcy pluginu scalili w sierpniu i wrześniu 2026, ale jeszcze nie wydali. Ty robisz jedno: logowanie.

  1. Otwórz swój serwer w panelu i kliknij Uruchom w Console.
  2. Znajdź linię OAUTH INTEGRATION: To give youtube-source access to your account, go to https://www.google.com/device and enter code XXXX-XXXX, otwórz adres, wpisz kod i zezwól na dostęp zapasowym kontem Google.
  3. Gdy konsola wypisze Token retrieved successfully, skopiuj token z nawiasów, zatrzymaj node i dodaj go w oauth: w application.yml w Files, jak w kroku 5 wyżej. Zachowaj wcięcia.
  4. Uruchom node ponownie i sprawdź, czy pojawia się YouTube access token refreshed successfully.

Zostaw plugins.youtube.remoteCipher.url bez zmian: panel zapisuje go przy każdym starcie, a adres działa tylko z naszych serwerów. Ponowna instalacja zachowuje twój application.yml razem z tokenem.

To, czy YouTube poda dany utwór serwerowi, zależy od YouTube i zmienia się bez zapowiedzi. My dbamy, by node i plugin działały; nie możemy obiecać, na co pozwoli YouTube. Jeśli w ogóle nie chcesz YouTube, ustaw enabled: false w plugins:, youtube:.

Komunikaty YouTube w konsoli

KomunikatCo oznacza i co zrobić
OAUTH INTEGRATION: To give youtube-source access to your account, go to https://www.google.com/device and enter code ...Plugin czeka na logowanie. Wykonaj kroki wyżej.
OAUTH INTEGRATION: The device token has expired. OAuth integration has been canceled.Kod nie został wpisany na czas. Zrestartuj node, aby dostać nowy.
YouTube access token refreshed successfullyZapisany refresh token działa.
Refreshing YouTube access token failedToken już nie działa, często dlatego, że konto zostało wylogowane albo token skopiowano źle. Usuń refreshToken, zrestartuj i zaloguj się ponownie.
This video requires login. lub Sign in to confirm you’re not a bot po Client [...] failed:YouTube odmawia obsługi serwera bez logowania. Zaloguj plugin albo sprawdź, czy zapisany token nadal działa.
All clients failed to load the item.Każdy klient z twojej listy został odrzucony. Linie Client [...] failed: obok podają powód dla każdego z nich.
The page needs to be reloaded od klienta TVHTML5Opisany wyżej problem klienta TV z wydania 1.18.2.

Inne sposoby na muzykę bez YouTube

Ten sam node może odtwarzać ze źródeł, które nie wymagają logowania. W naszych planach Bandcamp, Twitch, Vimeo, Niconico i bezpośrednie linki http są włączone od początku. Pluginy takie jak LavaSrc dodają kolejne serwisy, z których część wymaga twoich własnych kluczy API: Jak dodać pluginy do Lavalink.

Dalej

Twój bot działa już gdzie indziej? Przenieś go do nas

NASZE OSTATNIE WPISY