ovos-media-provider-somafm
July 31, 2026 ยท View on GitHub
OVOS MediaProvider plugin for SomaFM. It replaces
the deprecated OCP search skill
ovos-skill-somafm.
Instead of broadcasting ovos.common_play.query over the bus and waiting for
skills to answer, the OCP pipeline loads MediaProvider plugins in-process,
gates them by routing, and calls search() directly. This plugin wraps the
radiosoma client. Its
converters.station_to_releases function maps each SomaFM channel into
mediavocab.Release objects, one
per stream encoding.
SomaFM is a fixed, curated channel list, so search() is a local filter over
the station catalog. It matches signals.title against the channel name and
description, and signals.content_genres against the channel genre tags.
Install
pip install ovos-media-provider-somafm
Usage
The OCP pipeline discovers and loads this plugin through its entry point. To call it directly:
from mediavocab import Signals
from ovos_media_provider_somafm import SomaFMMediaProvider
provider = SomaFMMediaProvider()
releases = provider.search(Signals(title="deep space"))
A query with neither title nor content_genres set matches every station,
so a bare RADIO request browses the whole catalog.
Routing
| Axis | Value |
|---|---|
media | RADIO |
playback_type | AUDIO |
genre_filter | (none) |
Entry point
[project.entry-points."opm.media.provider"]
somafm = "ovos_media_provider_somafm:SomaFMMediaProvider"
Configuration
| Key | Default | Description |
|---|---|---|
max_results | 10 | Maximum number of matching channels returned per search. |
Related projects
ovos-plugin-manager: defines theMediaProvidertemplate this plugin implements.radiosoma: the SomaFM API client this plugin wraps.mediavocab: theRelease/Signalsvocabulary used to describe search queries and results.ovos-skill-somafm: the deprecated OCP search skill this plugin replaces.
License
Apache-2.0