This release is a pre-release and may not be stable for production use.
ovos-media-plugin-mass
Music Assistant playback backend for OVOS. It controls
Music Assistant players, playing the
library://<type>/<id> uris that the Music Assistant catalog returns.
It ships one backend on both media stacks: the same plugin works with the
legacy ovos-audio service and with the modern ovos-media service.
| Stack | Entry-point group | Class |
|---|---|---|
ovos-media (current) |
opm.media.audio |
MAssOCPAudioService |
ovos-audio (legacy) |
mycroft.plugin.audioservice |
MAssAudioService |
To search Music Assistant by voice you also need a catalog component:
ovos-media-provider-mass
on the ovos-media stack, or
ovos-skill-music-assistant
on the legacy OCP/ovos-audio stack.
Install
pip install ovos-media-plugin-mass
Configuration
The easiest way is the bundled ovos-mass-autoconfigure command, which scans your
server and writes both the legacy and ovos-media player entries into
mycroft.conf:
$ ovos-mass-autoconfigure
This script will auto configure Music Assistant devices under your mycroft.conf
Make sure your Music Assistant server is accessible from this device
Please enter your Music Assistant server url: http://192.168.1.100:8095
Scanning...
- Found player: HomeLabRenderer - dlna:uuid:4b778a71-0499-485a-a5a4-88140603fba9
mycroft.conf updated!
When more than one player is found, it lists them and prompts for the
default (the only player written to the legacy Audio backends and marked
active: true on the ovos-media side — every other discovered player is
written with active: false):
$ ovos-mass-autoconfigure
This script will auto configure Music Assistant devices under your mycroft.conf
Make sure your Music Assistant server is accessible from this device
Please enter your Music Assistant server url: http://192.168.1.100:8095
Scanning...
- Found player: HomeLabRenderer - dlna:uuid:4b778a71-0499-485a-a5a4-88140603fba9
- Found player: KitchenSpeaker - dlna:uuid:9a11a2f0-0a3b-4e3d-9a0e-2a5b6c7d8e9f
0 - HomeLabRenderer:dlna:uuid:4b778a71-0499-485a-a5a4-88140603fba9
1 - KitchenSpeaker:dlna:uuid:9a11a2f0-0a3b-4e3d-9a0e-2a5b6c7d8e9f
select default mass device: 0
mycroft.conf updated!
Run non-interactively (CI, provisioning scripts) with --url and
--default/--player (index or player_id); without them, and with
multiple players found on a non-tty stdin, the script exits with an error
instead of hanging on input():
$ ovos-mass-autoconfigure --url http://192.168.1.100:8095 --default 0
It emits configuration for both stacks:
// Legacy Audio Service:
{"backends": {"mass-HomeLabRenderer:dlna": {
"active": true, "type": "ovos_mass", "player_type": "dlna",
"identifier": "uuid:4b778a71-0499-485a-a5a4-88140603fba9",
"url": "http://192.168.1.100:8095"}}}
// ovos-media Service:
{"audio_players": {"mass-HomeLabRenderer:dlna": {
"active": true, "module": "ovos-media-audio-plugin-mass", "player_type": "dlna",
"aliases": ["HomeLabRenderer", "Home Lab Renderer"],
"identifier": "uuid:4b778a71-0499-485a-a5a4-88140603fba9",
"url": "http://192.168.1.100:8095"}}}
See docs/configuration.md for the field reference.
Related projects
- py-music-assistant: the shared HTTP client and mediavocab bridge (this plugin's transport layer)
- ovos-media-provider-mass: the Music Assistant MediaProvider (search,
ovos-mediastack) - ovos-skill-music-assistant: the Music Assistant OCP search skill (legacy stack)
- hivemind-homeassistant: exposes OVOS as a player in Home Assistant
Docs
- docs/index.md: overview and how the two stacks fit together
- docs/architecture.md: backends, uri resolution, playback flow
- docs/configuration.md: configuration reference
- docs/faq.md: troubleshooting
Tests
pip install -e .[test]
pytest test/ # unit + end2end (ovoscope), network-free
The end-to-end tests (test/end2end/) drive both backends through
a real ovos-audio AudioService on a FakeBus via ovoscope, with the Music
Assistant HTTP client mocked.
License
Apache-2.0
Metadata
Release files for ovos-media-plugin-mass 0.1.1a1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| ovos_media_plugin_mass-0.1.1a1.tar.gz | 21.3 kB | Without provenance | Details for ovos_media_plugin_mass-0.1.1a1.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| ovos_media_plugin_mass-0.1.1a1-py3-none-any.whl | Python 3 | none | any | Details for ovos_media_plugin_mass-0.1.1a1-py3-none-any.whl |
Total release size: 37.3 kB
Release files / ovos_media_plugin_mass-0.1.1a1.tar.gz
| Download URL | ovos_media_plugin_mass-0.1.1a1.tar.gz |
|---|---|
| Size | 21.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
4a473b9fd3f8c9fc9f99bd17108f197e63b364ba93e9687739babc32433bc2c9
|
|
BLAKE2b-256 checksum How to use checksums |
a4a8c4262ae32332b192af484bce0d57fa2414dab2b8c2ce9e6dd252fc9a4ba7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / ovos_media_plugin_mass-0.1.1a1-py3-none-any.whl
| Download URL | ovos_media_plugin_mass-0.1.1a1-py3-none-any.whl |
|---|---|
| Size | 16.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
71b4bc854a3ec48a23cf86146d2ab666c88340b2d68f414354566810b0f0f211
|
|
BLAKE2b-256 checksum How to use checksums |
aa75a78e10ff69b64650f6d7f863b03c4b234f3775f089878789e77369cd02dd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Security for ovos-media-plugin-mass 0.1.1a1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.