Mopidy-Songhive
Mopidy extension for playing music from a Songhive instance.
Features
- Browse libraries, playlists, artists, albums, genres and tags
- Followed podcasts exposed in their own folder, one sub-folder per show; episodes stream straight from the source enclosure URL
- Favorite tracks exposed as a browsable folder
- Full text search across tracks, albums and artists (plus cached federated objects)
- Playlist editing: create, delete, rename, add/remove/reorder tracks
- Streams through Songhive's
/api/v1/stream/{track_id}endpoint, including optional server-side transcoding - Federated content: remote objects resolve and play through the instance's remote lookup
- Direct URL lookup — paste any Songhive or federated URL prefixed with
songhive:(e.g.songhive:https://music.example.com/tracks/abc123) - Track metadata is cached on disk and seeded straight from collection listings, so queueing a browsed album, playlist or podcast needs no extra requests; metadata is re-fetched when a track plays to stay fresh, and the remaining lookups run concurrently
Requirements
- Mopidy >= 4.0
- Python >= 3.9
Installation
Install by running:
pip install mopidy-songhive
Or install the development version:
pip install -e .
Configuration
Add the extension to your mopidy.conf:
[songhive]
enabled = true
hostname = https://music.example.com
api_token = <your api token>
api_token is optional: without it the extension runs anonymously and
only sees public content; playlists and favorites become read-only.
Create a token on the Songhive web interface under Settings → API
tokens. Tokens are sent as Authorization: Bearer headers and, for
audio streaming, injected into GStreamer's HTTP source — they are only
ever sent to the configured hostname.
Additional options:
# Comma-separated allowlist of library names to show (default: all)
libraries = Music, Audiobooks
# Format for displaying album names (default: {title})
album_format = {title} ({release_year})
# Format for displaying playlist names (default: {name}).
# Available keys: name, provider, owner — e.g. disambiguate playlists
# synced from multiple external providers:
playlist_format = {name} [{provider}]
# Optional server-side transcoding for streams
transcode_format = opus # mp3|ogg|flac|aac|opus
transcode_bitrate = 128 # kbps
URI scheme
songhive:track:123, songhive:album:123, songhive:artist:123,
songhive:playlist:123, songhive:library:123,
songhive:genre:rock, songhive:tag:favorites,
songhive:podcast:123 / songhive:podcast_episode:123 for podcasts,
songhive:remote:<object_id> for federated content, and
songhive:<http(s) url> for direct URL lookups.
Metadata
Release files for Mopidy-Songhive 0.1.5
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| mopidy_songhive-0.1.5.tar.gz | 38.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| mopidy_songhive-0.1.5-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 70.2 kB
Release files / mopidy_songhive-0.1.5.tar.gz
| Download URL | mopidy_songhive-0.1.5.tar.gz |
|---|---|
| Size | 38.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
9a59810a3c3b06fd829c0bd7201c93a0c665bbf66701abb3e599e613b3f70aed
|
|
BLAKE2b-256 checksum How to use checksums |
ec29d0346439131e52e31ce4ab294c9cf0d8d9105729a119a09366ce2585e148
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.14.8
|
Release files / mopidy_songhive-0.1.5-py3-none-any.whl
| Download URL | mopidy_songhive-0.1.5-py3-none-any.whl |
|---|---|
| Size | 31.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
019e0772500747fad7c6ff448a8e85be618733309a62e059e4a665925fcaad40
|
|
BLAKE2b-256 checksum How to use checksums |
259b06c4e8c7ec658fd8a42d6870d019f199b05203321bd950625d555035cfd9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.14.8
|