Metadata-Version: 2.4
Name: ovos-media-provider-tunein
Version: 0.0.1a4
Summary: OVOS MediaProvider plugin for TuneIn (replaces ovos-skill-tunein)
Author-email: jarbasAI <jarbasai@mailfence.com>
License: Apache-2.0
Project-URL: Homepage, https://github.com/OpenVoiceOS/ovos-media-provider-tunein
Keywords: ovos,ocp,media,tunein,radio,mediaprovider,plugin
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Programming Language :: Python :: 3
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: mediavocab>=1.0.0
Requires-Dist: ovos-plugin-manager<3.0.0,>=2.7.0a1
Requires-Dist: tunein>=0.1.0a1
Provides-Extra: test
Requires-Dist: pytest; extra == "test"
Requires-Dist: pytest-cov; extra == "test"
Dynamic: license-file

# ovos-media-provider-tunein

OVOS **MediaProvider** plugin for [TuneIn](https://tunein.com). Replaces the
deprecated OCP search skill `ovos-skill-tunein`.

It wraps the [`tunein`](https://github.com/TigreGotico/tunein) client, which
emits [`mediavocab.Release`](https://github.com/TigreGotico/mediavocab) objects
directly, and exposes TuneIn's public radio/podcast/IPTV station search to the
OCP pipeline.

## Routing

| Axis | Value |
| --- | --- |
| `media` | `{MediaType.RADIO}` |
| `playback_type` | `{PlaybackType.AUDIO}` |

The pipeline gates this provider out of non-radio queries before paying for a
network search.

## Install

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

The plugin is registered under the `opm.media.provider` entry-point group as
`tunein`. The OCP pipeline loads it in-process. There is nothing to configure.

### Configuration

| Key | Default | Description |
| --- | --- | --- |
| `enrich` | `false` | Issue a per-station `Describe.ashx` call to populate genre, language, country, call-sign and slogan. Off by default to keep search cheap. |

## How it works

`TuneInMediaProvider.search(signals, lang)` builds a query from `signals.title`,
calls `tunein.TuneIn.search(...)`, and returns the `mediavocab.Release` produced
by each station's `to_release()`.

Per mediavocab axiom 8 (station identity), a TuneIn channel is a `Work` with
`MediaType.RADIO`. The playable stream URL is a `Release` with
`StreamMode.CONTINUOUS` (live linear broadcast). A station may expose several
stream URLs (bitrates/protocols), each yielding its own `Release`. The OCP
pipeline filters and ranks across providers.

## Related projects

- [OpenVoiceOS/ovos-plugin-manager](https://github.com/OpenVoiceOS/ovos-plugin-manager): loads this plugin through the `opm.media.provider` entry-point group.
- [TigreGotico/tunein](https://github.com/TigreGotico/tunein): the TuneIn client this plugin wraps.
- [TigreGotico/mediavocab](https://github.com/TigreGotico/mediavocab): the `Work`/`Release` vocabulary this plugin returns.

## License

Apache-2.0
