Add Bose SoundTouch Favorites provider#3891
Conversation
🔒 Dependency Security Report📦 Modified Dependencies
|
| Name | Skip Reason |
|---|---|
| torch | Dependency not found on PyPI and could not be audited: torch (2.11.0+cpu) |
| torchaudio | Dependency not found on PyPI and could not be audited: torchaudio (2.11.0+cpu) |
| ✅ No known vulnerabilities found |
Automated Security Checks
- ✅ Vulnerability Scan: Passed - No known vulnerabilities
- ✅ Trusted Sources: All packages have verified source repositories
- ✅ Typosquatting Check: No suspicious package names detected
- ✅ License Compatibility: All licenses are OSI-approved and compatible
- ✅ Supply Chain Risk: Passed - packages appear mature and maintained
Manual Review
Maintainer approval required:
- I have reviewed the changes above and approve these dependency updates
To approve: Comment /approve-dependencies or manually add the dependencies-reviewed label.
|
Thanks for the review. I pushed updates addressing the WebSocket session, narrower exceptions, MA-specific setup errors, typed Player properties, MediaType values, config categories, and removed the hardcoded plugin version. For the categories subject, I consolidated the per-button categories into a single Favorites category and added DIVIDER entries for each favorite. This keeps the UI clean and readable without the need to create six separate categories. |
6088ef0 to
f47ac7d
Compare
|
Hi @Odn0, heads-up: #3938 just landed a refactor of the plugin sources architecture. The old The new contract on the provider:
AudioSources are browseable under the new top-level "Live Inputs" node, are favoritable, and play through the standard |
Thanks for the heads-up. I’m trying to make sure I understand the intended model before changing the plugin. In this provider, a SoundTouch favorite button is currently only a physical trigger: when preset 1-6 is pressed, the plugin maps that preset to a configured MA media item and calls play_media for the configured target player. That target player is one Bose speaker; if the user wants to handle multiple Bose speakers, they would configure multiple instances of the plugin. Do you expect each configured SoundTouch favorite to be exposed as its own AudioSource, even though it is not really an external/live audio source by itself, but rather a shortcut to an existing MA media item? Or should the physical button handling remain separate, and only true live/external inputs be modeled as AudioSources? |
|
@Odn0 not sure but believe that you might want to consider maybe renaming this plugin provider from "bose_soundtouch_favorites" to just "soundtouch_favorites" as that name chance removes that company name which would better follow the naming scheme / naming convention of other providers in MA, or if @marcelveldt have better suggestion for the best name to use for this and other providers for long-term standardization of provider names(?). Maybe its just my OCD, however does not look to be an a single standard naming scheme / naming convention guideline for providers, like for example the Apple AirPlay Receiver is only called "AirPlay Receiver", and the Amazon Alexa Player Provider is called only Alexa, while the Google Cast Player Provider is only called "Chromecast" in the manifest but refered to as "Google Cast" in the end-user documentation, as well as there are other providers which uses the manufacturer name when they use it in the brand, such as AriaCast Receiver, Spotify Connect, LastFM Scrobbler, and Plex Connect. IMHO naming conventions that establish a unified standardized rules for file names and code elements are vitally importnat because they establish a predictable framework, ensuring your team and external developers can instantly find and understand critical directories/files without relying on guesswork. And recently having and using a single naming scheme has also become important to make different AI agent tools work properly. |
|
@Odn0 you can ignore my previous message. I was trying to be smart/lazy by tagging all pluginsoure related PR's that a change was upcoming to PluginSources but your feature is not about that. |
|
No worries @marcelveldt, I understand. Thanks for clarifying. @Hedda, regarding the provider name, I’m happy to follow the project’s preferred naming convention if there is one, and I can rename it if needed. I originally included If the maintainers prefer |
|
SearchResults has typed attributes, |
Thanks for the review. I updated the provider to use the stable I also removed unsupported media types from the search options, switched the provider logging to
|
|
Just one last comment from me. One of the others will have a look as well soon. |
Hi Music Assistant community,
I created this plugin after the Bose SoundTouch end of life, to keep using the physical preset buttons on SoundTouch speakers with Music Assistant.
Summary
Adds a Bose SoundTouch Favorites plugin provider that listens for physical SoundTouch favorite button presses and maps them to configured Music Assistant media.
Motivation
Following the Bose SoundTouch end of life, SoundTouch speakers lost several connected-service features, including presets through the product buttons and the Bose app.
The purpose of this plugin is to restore a similar workflow in Music Assistant by associating Music Assistant favorites/media with the physical preset buttons on Bose SoundTouch speakers.
Reference: https://www.bose.com/soundtouch-end-of-life
Tested devices
Tested with:
Validation
uv run ruff check music_assistant/providers/bose_soundtouch_favoritesuv run mypy music_assistant/providers/bose_soundtouch_favoritesNote: full
pre-commit run --all-filescurrently fails on existing mypy errors outside this provider.