Metadata-Version: 2.4
Name: ovos-media-provider-mass
Version: 0.0.1a5
Summary: OVOS MediaProvider plugin for Music Assistant (replaces ovos-skill-music-assistant)
Author-email: JarbasAI <jarbasai@mailfence.com>
License: Apache-2.0
Project-URL: Homepage, https://github.com/OpenVoiceOS/ovos-media-provider-mass
Project-URL: Source, https://github.com/OpenVoiceOS/ovos-media-provider-mass
Keywords: ovos,OpenVoiceOS,OCP,media,music,music-assistant,MediaProvider
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Requires-Python: >=3.12
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: mediavocab>=1.0.0
Requires-Dist: ovos-plugin-manager<3.0.0,>=2.8.0a1
Requires-Dist: py-music-assistant>=0.0.1
Provides-Extra: test
Requires-Dist: pytest; extra == "test"
Requires-Dist: pytest-cov; extra == "test"
Requires-Dist: ovoscope>=0.20.0a1; extra == "test"
Dynamic: license-file

# ovos-media-provider-mass

OVOS **MediaProvider** plugin for [Music Assistant](https://www.music-assistant.io/).

It is the catalog/search half of the Music Assistant integration for the `ovos-media` stack. Given a parsed media request, it searches a Music Assistant server and returns ranked, playable `mediavocab.Release` objects.

Playback of the returned `library://…` uris is done by the companion [`ovos-media-plugin-mass`](https://github.com/OpenVoiceOS/ovos-media-plugin-mass) audio backend. This plugin supersedes the catalog/search half of the legacy OCP skill [`ovos-skill-music-assistant`](https://github.com/OpenVoiceOS/ovos-skill-music-assistant).

## Routing

| Axis | Value |
|---|---|
| `media` | `MUSIC`, `RADIO`, `PODCAST`, `AUDIOBOOK` |
| `playback_type` | `AUDIO` |
| `genre_filter` | *(none)* |

## Install

```bash
pip install ovos-media-provider-mass
```

The `opm.media.provider` plugin type is available in `ovos-plugin-manager` 2.11.6a1 and later.

## Configure

Per-provider settings live under `media_providers` in `mycroft.conf`, keyed by
the provider's entry-point name:

```json
{
  "media_providers": {
    "music_assistant": {
      "url": "http://192.168.1.100:8095",
      "max_results": 10
    }
  }
}
```

`url` is required (the provider reports itself unavailable without it). Set
`"enabled": false` to disable without uninstalling.

## Related projects

- [py-music-assistant](https://github.com/TigreGotico/py-music-assistant): shared HTTP client and mediavocab bridge (this provider's transport layer)
- [ovos-media-plugin-mass](https://github.com/OpenVoiceOS/ovos-media-plugin-mass): Music Assistant playback backend (plays the `library://` uris this provider returns)
- [ovos-skill-music-assistant](https://github.com/OpenVoiceOS/ovos-skill-music-assistant): the legacy OCP search skill this provider supersedes

## Docs

- [docs/index.md](docs/index.md): overview and how it fits the ovos-media stack
- [docs/configuration.md](docs/configuration.md): configuration reference

## Tests

```bash
pip install -e .[test]
pytest test/                                            # unit + end2end, network-free
MASS_SERVER_URL=http://<host>:8095 pytest test/live/    # opt-in, real server
```

The end-to-end tests ([test/end2end/](test/end2end/)) discover the provider
through its real `opm.media.provider` entry-point and drive the full
discover → `serves()` gate → `search_safe` path the OCP pipeline takes, with the
Music Assistant client mocked.

## License

Apache-2.0
