mirror of
https://github.com/gesellix/Bose-SoundTouch.git
synced 2026-08-13 22:26:14 +00:00
Selecting a Radio Browser station from the player UI returned HTTP 500 and the speaker dropped to INVALID_SOURCE. The play path sent the speaker a ContentItem with source="URL" and an absolute location (https://all.api.radio-browser.info/soundtouch/stations/byuuid/<uuid>). source="URL" makes the speaker fetch that location as a raw audio stream, but the URL returns station JSON, not audio, so the speaker rejects it. "URL" was never a real source: it is not in the speaker's sourceprovider registry and never persisted in any datastore. The rest of the stack is already built for the native RADIO_BROWSER source (BMX registry provider 39 with base URL .../soundtouch, a seeded RADIO_BROWSER source, marge classification, and the documented relative location form). Working RADIO_BROWSER items use source="RADIO_BROWSER" with a relative location="/stations/byuuid/<uuid>", which the speaker resolves against the registry base URL and plays directly. - stations.ResolveContentItem: emit source=RADIO_BROWSER for the provider - RadioBrowserSearch: emit the relative /stations/byuuid/<uuid> playback href so the speaker prepends the registry base URL - marge classifier: match the relative /stations/byuuid/ segment (covers both the relative and legacy absolute forms) - tests updated to assert the native source + relative location Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>