Commit graph

25 commits

Author SHA1 Message Date
084337c433
fix(lavalink): persist youtube OAuth refresh token via env var 2026-09-11 12:06:57 +02:00
7e941ba9b3
fix(lavalink): enable youtube-plugin OAuth to bypass 'requires login' errors 2026-09-11 11:59:52 +02:00
affdb684b9
fix(music): add lavasrc-patcher sidecar for auto-applying runtime config
LavaSrc plugin config (preferPartnerApi, customTokenEndpoint, spDc)
doesn't bind from YAML in Lavalink 4. Added a one-shot sidecar container
that applies the config via PATCH endpoint after Lavalink becomes healthy.
Also cleaned up DEBUG logging.
2026-08-31 16:22:14 +02:00
af88cea301
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.
2026-08-31 16:19:30 +02:00
306dc01cd1
chore(lavalink): enable DEBUG logging for lavasrc 2026-08-31 15:27:48 +02:00
4092ad25f7
fix(lavalink): enable Spotify Partner API to bypass playlist restriction
Spotify Feb 2026 API change: /playlists/{id}/items now requires user auth.
Partner API (GraphQL) bypasses this for public playlists.
2026-08-31 15:22:27 +02:00
4cbbb36159
fix(lavalink): drop spotify-tokener, lavasrc uses client credentials
- spotify URL resolution was broken (500 NPE): preferPartnerApi +
  customTokenEndpoint depended on dead spotify-tokener (-32000)
- remove tokener service from compose, remove dead SPOTIFY_* env from
  bot container (bot code never used them)
- spotify metadata now resolves via standard client credentials,
  playback is mirrored to SoundCloud via scsearch providers (ISRC/QUERY)
2026-08-30 00:29:13 +02:00
a7f7c1019e
fix(lavalink): mirror Spotify tracks to SoundCloud (scsearch) instead of YouTube (bot-detection) 2026-08-20 00:50:32 +02:00
5f7d1ee191
fix(lavalink): add remoteCipher (yt-cipher) to fix must-find-sig-function error 2026-08-20 00:45:55 +02:00
2f57d99fa2
fix(lavalink): upgrade youtube-plugin to snapshot f45bbb7a (ABR/missing-fields + client 21.02.35 fixes) 2026-08-20 00:40:58 +02:00
32c1417979
revert(lavalink): remove YouTube OAuth/TV clients, back to standard anonymous clients 2026-08-20 00:30:55 +02:00
89a76d537a
chore(lavalink): persist YouTube OAuth refresh token 2026-08-20 00:17:53 +02:00
facd7cc698
feat(lavalink): add TV, WEBEMBEDDED, TVHTML5_SIMPLY clients + YouTube OAuth for age-restricted tracks 2026-08-20 00:12:38 +02:00
c54a0d66dc
fix(lavalink): commit youtube-plugin jar (was skipped by *.jar gitignore)
lavalink/plugins/youtube-plugin-1.18.2.jar never reached the repo - the
'*.jar' ignore rule silently dropped it from git add. Add an exception and
force-add the jar so Lavalink actually loads the YouTube source.
2026-08-19 14:06:51 +02:00
1aaaa0361b
fix(lavalink): drop lavalink.plugins config block, load jars from plugins/ dir
Lavalink 4.2.2 re-downloads/verifies config-declared plugins on startup and
failed writing to the git-managed plugins bind mount (Permission denied,
container uid 322 vs root-owned files after git pull). Jars in the plugins
directory are loaded directly; remove the duplicate config block.
2026-08-19 14:04:53 +02:00
54cc26e675
chore(lavalink): youtube-plugin 1.18.1 -> 1.18.2
- jar in plugins/ + dependency line in application.yml both bumped
- lavasrc-plugin 4.8.3 already latest (Lavalink v4 compatible)
- lavalink image 4-alpine already tracks latest 4.2.2 (moving tag)
2026-08-19 13:58:12 +02:00
530fec43b3
fix(music): add spotify-tokener for anonymous token, enable Partner API
- Add spotify-tokener service (ghcr.io/topi314/spotify-tokener:master)
- Configure lavasrc to use it via customTokenEndpoint
- Enable preferPartnerApi for playlist loading via Partner API
- spotify-tokener handles the TOTP token generation properly
2026-07-18 00:16:12 +02:00
521e640409
fix(music): auto-leave 3min, voice disconnect, playlist limit 10
- Auto-leave timer: 2 -> 3 min
- Proper voice disconnect via JDA AudioManager on auto-leave
- Remove DEBUG stats log (change to TRACE)
- Increase playlistLoadLimit to 10 (up to 1000 tracks)
- Remove preferPartnerApi (Partner API anon token broken)
2026-07-18 00:14:34 +02:00
c281da8088
fix(music): revert to lavasrc 4.8.2, remove preferPartnerApi
- lavasrc 4.8.2 uses /tracks endpoint for playlists (4.8.3 /items
  returns 401 for new Spotify apps)
- Remove preferPartnerApi (anonymous token extraction broken on
  current Spotify web player)
- playlistLoadLimit stays at 10 (1000 tracks)
2026-07-17 23:42:08 +02:00
ea9e77de01
fix(music): spotify playlists, auto-leave, stats logging
- Fix Spotify playlist loading (401 error) by enabling preferPartnerApi
  in lavasrc (uses Partner API instead of v1 /items endpoint)
- Remove noisy DEBUG stats logging (change to TRACE)
- Increase auto-leave timer from 2 to 3 minutes
- Add proper voice disconnect on auto-leave via JDA AudioManager
- Increase playlist/album load limit from 6 to 10 (1000 tracks)
2026-07-17 23:23:52 +02:00
28ce94b0ca
fix: enable spotify source in lavalink, add User-Agent to booru API requests 2026-07-12 23:34:24 +02:00
2e8d482940
add lavalink plugins (youtube, lavasrc) 2026-07-12 22:45:32 +02:00
42948520e8 fix: update lavasrc 4.8.3, disable broken spotify, JDA 6.4.2 migration 2026-07-03 21:04:35 +02:00
108f63f7ec fix: music system improvements, radio refactoring, lavalink config 2026-07-03 01:24:36 +02:00
29a21e4178 v2.3: Major refactoring, Lavalink music system, Spotify support, CI/CD
- Full refactoring: max 200 lines/file, max 3 files/dir, KISS/DRY/SOLID
- Lavalink client 3.4.0 + LavaSrc plugin (Spotify, Apple Music, Deezer)
- 3-bot architecture: main (!), music (q!), radio (r!)
- Filters: bassboost, nightcore, vaporwave, equalizer
- Slash commands for music (/play, /skip, etc.)
- Persistent queue in SQLite, auto-leave timer
- Radio manager with auto-reconnect
- Custom welcome GIF greetings via nekos.life
- JDA 5.6.1, gson 2.14, hikaricp 6.3, all deps updated
- Fixed YouTube playback via ytmsearch (LavaSrc)
- CI/CD: Docker publish + release workflows
- SpotBugs: all real bugs fixed, ignoreFailures=false
- Checkstyle: Google Style (adapted), 0 violations
2026-07-02 23:48:36 +02:00