Metadata-Version: 2.4
Name: ovos-skill-music-assistant
Version: 0.1.6a7
Summary: ovos mass skill plugin
Author-email: JarbasAi <jarbasai@mailfence.com>
License-Expression: Apache-2.0
Project-URL: Homepage, https://github.com/OpenVoiceOS/ovos-skill-music-assistant
Keywords: ovos,skill,plugin
Requires-Python: >=3.12
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: ovos-utils>=0.0.38
Requires-Dist: ovos-bus-client>=0.1.0
Requires-Dist: ovos-workshop>=0.0.16
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; extra == "test"
Requires-Dist: ovos-ocp-pipeline-plugin; extra == "test"
Dynamic: license-file

> # ⚠️ DEPRECATED
>
> This OCP **search skill** is deprecated and unmaintained. OCP search skills
> (`OVOSCommonPlaybackSkill` + `@ocp_search`) are replaced by **MediaProvider**
> plugins once the [`ovos-media`](https://github.com/OpenVoiceOS/ovos-media)
> stack becomes the default player — the catalog/search half moves to
> [`ovos-media-provider-mass`](https://github.com/OpenVoiceOS/ovos-media-provider-mass)
> and playback moves to
> [`ovos-media-plugin-mass`](https://github.com/OpenVoiceOS/ovos-media-plugin-mass).
> Both packages are published, but they only do anything once `ovos-media` is
> running as your player — installing them does not replace this skill under
> the legacy OCP/`ovos-audio` stack.
>
> - **How MediaProviders work / how to migrate:** https://github.com/OpenVoiceOS/ovos-media/blob/dev/docs/media-providers.md
> - **Base-class deprecation:** [ovos-workshop#423](https://github.com/OpenVoiceOS/ovos-workshop/pull/423)
>
> This skill keeps working until the `ovos-media` stack flips to default and
> this repository is archived.

# <img src='./res/mass.png' card_color='#40DBB0' width='50' height='50' style='vertical-align:bottom'/> Music Assistant Skill

OCP search skill for [Music Assistant](https://www.music-assistant.io/).

It answers OCP `play …` requests with playable results from a Music Assistant
server. The companion
[ovos-media-plugin-mass](https://github.com/OpenVoiceOS/ovos-media-plugin-mass)
plays back the returned `library://` uris.

On the modern `ovos-media` stack, the
[ovos-media-provider-mass](https://github.com/OpenVoiceOS/ovos-media-provider-mass)
MediaProvider serves the catalog/search role. This skill is the equivalent for
the legacy OCP/`ovos-audio` stack.

## Configure

Set your Music Assistant server URL in the skill settings (`settings.json`):

```json
{ "url": "http://192.168.1.100:8095" }
```

## Related projects

- [ovos-media-plugin-mass](https://github.com/OpenVoiceOS/ovos-media-plugin-mass): Music Assistant playback backend
- [ovos-media-provider-mass](https://github.com/OpenVoiceOS/ovos-media-provider-mass): Music Assistant MediaProvider (ovos-media stack)
- [py-music-assistant](https://github.com/TigreGotico/py-music-assistant): shared HTTP client and mediavocab bridge

## Docs

- [docs/index.md](docs/index.md) — overview, search flow, and tests

## Tests

```bash
pip install -e .[test]
pytest test/                  # unit + end2end (ovoscope), network-free
```

The end-to-end tests ([test/end2end/](test/end2end/)) run the real OCP pipeline
in a `ovoscope` MiniCroft. A spoken utterance is classified into an
`ovos.common_play.query`, this skill answers, and OCP selects a winner to play.
The tests mock the Music Assistant HTTP client.

## Credits
- JarbasAi

## Category
**Entertainment**

## Tags
#audio
#music
#OCP
#entertainment
