From af88cea301e454cec1a8f53e0380cab28ef63ca5 Mon Sep 17 00:00:00 2001 From: loki5512344 Date: Mon, 31 Aug 2026 16:19:30 +0200 Subject: [PATCH] fix(music): add spotify-tokener with Chromium for Partner API anonymous tokens Spotify changed their API in Feb 2026 - playlists now require anonymous tokens via the Partner API. The default anonymous token endpoint is blocked from server IPs. Added a custom Dockerfile for spotify-tokener with Chromium installed, and configured LavaSrc to use Partner API with the tokener endpoint. Playlists now load successfully. --- docker-compose.yml | 12 +++++++++++- lavalink/Dockerfile.tokener | 6 ++++++ lavalink/application.yml | 4 +++- 3 files changed, 20 insertions(+), 2 deletions(-) create mode 100644 lavalink/Dockerfile.tokener diff --git a/docker-compose.yml b/docker-compose.yml index ccd1f3b..f9e7e86 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,8 +1,19 @@ services: + spotify-tokener: + build: + context: ./lavalink + dockerfile: Dockerfile.tokener + container_name: spotify-tokener + restart: unless-stopped + environment: + - SPOTIFY_TOKENER_CHROME_PATH=/usr/bin/chromium + lavalink: image: ghcr.io/lavalink-devs/lavalink:4-alpine container_name: loki-lavalink restart: unless-stopped + depends_on: + - spotify-tokener ports: - "127.0.0.1:2333:2333" volumes: @@ -13,7 +24,6 @@ services: JAVA_OPTS: "-Xmx1G -Xms256M" SPOTIFY_CLIENT_ID: ${SPOTIFY_CLIENT_ID} SPOTIFY_CLIENT_SECRET: ${SPOTIFY_CLIENT_SECRET} - PLUGINS_LAVASRC_SPOTIFY_PREFERPARTNERAPI: "true" healthcheck: test: ["CMD-SHELL", "wget -q -O /dev/null --header=Authorization:Hch4HiVCxkKs9JPiSnrt4Q http://localhost:2333/v4/info || exit 1"] interval: 30s diff --git a/lavalink/Dockerfile.tokener b/lavalink/Dockerfile.tokener new file mode 100644 index 0000000..b479768 --- /dev/null +++ b/lavalink/Dockerfile.tokener @@ -0,0 +1,6 @@ +FROM ghcr.io/topi314/spotify-tokener:master +RUN apt-get update && \ + apt-get install -y --no-install-recommends chromium && \ + rm -rf /var/lib/apt/lists/* +ENV SPOTIFY_TOKENER_CHROME_PATH=/usr/bin/chromium +ENV CHROMIUM_FLAGS="--no-sandbox --disable-gpu --headless" diff --git a/lavalink/application.yml b/lavalink/application.yml index 42ef26b..b458141 100644 --- a/lavalink/application.yml +++ b/lavalink/application.yml @@ -25,10 +25,12 @@ plugins: spotify: clientId: "${SPOTIFY_CLIENT_ID}" clientSecret: "${SPOTIFY_CLIENT_SECRET}" + spDc: "AQDVrLVOyLLT3ZuiLoY32uH8HotvY_Lw67ay1lejf55S7O3f_O9IefxZ8XDf3pYklpwl5Klei2NeYUPRZ-cbkpQg5S3RyMjuiTmBxdAuMlugA61_wAy-bXD979aYDK44Bid6UKxLHjh0kFQZ_tX71DAUGezA2XjeLcRi_-TLcKHWKZVKPhGniUOZZEhg2Ij9t6valbqSbDOQ1t0dtQ" countryCode: "RU" playlistLoadLimit: 10 albumLoadLimit: 10 preferPartnerApi: true + customTokenEndpoint: "http://spotify-tokener:8080/api/token" applemusic: countryCode: "RU" mediaType: "music" @@ -55,4 +57,4 @@ logging: level: root: INFO lavalink: INFO - com.github.topi314.lavasrc: DEBUG + com.github.topi314.lavasrc: INFO