Based on JMusicBot by jagrosh (https://github.com/jagrosh/MusicBot), via the maintained fork by arif-banai (https://github.com/arif-banai/MusicBot). See NOTICE for attribution. Licensed under Apache 2.0. YouTube-side changes had broken playback entirely. Fixes: - Apply the remote signature cipher independently of OAuth. Deciphering and authentication are unrelated, but the cipher was only configured when OAuth was enabled, so the default install fell back to the bundled extractor and failed with "Must find sig function from script: /s/player/<id>/...". Now always applied, and configurable via playback.youtube.remoteCipher.url. - Add the ANDROID client and order the client list by reliability. ANDROID is currently the only client YouTube reliably streams to anonymously. WEB moves last, as YouTube answers it with SABR-only responses carrying no playable format ("No supported audio streams available, available types:"). - Detect sign-in failures across the whole exception graph. The existing hint could never fire: it matched the aggregate AllClientsFailedException message rather than the per-client reasons, and compared against an ASCII apostrophe while YouTube sends U+2019. - Track youtube-source past 1.18.2, which predates the TV client User-Agent fix and the contentLength recovery fix. Measured on previously failing tracks: 5/5 playing, stable across repeat runs (was 1/5). No OAuth required. Adds 17 tests; 676 unit + 48 integration pass.
33 lines
1.5 KiB
Plaintext
33 lines
1.5 KiB
Plaintext
JMusicBot
|
|
Licensed under the Apache License, Version 2.0. See the LICENSE file for terms.
|
|
|
|
This project builds on the work of two upstream repositories:
|
|
|
|
1. JMusicBot — original work
|
|
Copyright 2016-2021 John Grosh (jagrosh) <[email protected]>
|
|
https://github.com/jagrosh/MusicBot
|
|
|
|
2. JMusicBot — maintained fork, the direct ancestor of this repository
|
|
Copyright 2024-2026 Arif Banai (arif-banai)
|
|
https://github.com/arif-banai/MusicBot
|
|
Picked up and modernised the project after the original became unmaintained:
|
|
updated dependencies, Java 25 support, config migration, and much more.
|
|
|
|
This repository is a fork of (2), and therefore also of (1). Nearly all of the
|
|
code is their work; the changes made here are limited to restoring YouTube
|
|
playback after YouTube-side changes broke it.
|
|
|
|
Modified files carry a notice describing what changed, as required by section
|
|
4(b) of the Apache License. The modifications are:
|
|
|
|
- Apply the YouTube remote signature cipher independently of OAuth, and make
|
|
the cipher server configurable.
|
|
- Add the ANDROID client and order the YouTube client list by reliability.
|
|
- Detect YouTube sign-in failures across the whole exception graph so the
|
|
operator gets an actionable message instead of a bare stack trace.
|
|
- Track youtube-source at a commit that post-dates the 1.18.2 release, which
|
|
cannot play most tracks.
|
|
|
|
Third-party components retain their own licenses and copyright notices; see the
|
|
dependency declarations in pom.xml.
|