v0.11.0
v0.11.0 — cover-art sources for tagged tracks & web radio
Second stable release of the asyncio + dbus-fast mpDris2, the MPRIS 2 D-Bus bridge for MPD, powering the odio streamer (b0bbywan/odios). This cycle grows the cover-art pipeline from 5 to 7 steps with remote sources for tagged albums and web radio, and trims the daemon down (no more i18n or libnotify).
Install:
curl -fsSL https://apt.odio.love/key.gpg | sudo gpg --dearmor -o /usr/share/keyrings/odio.gpg
echo "deb [signed-by=/usr/share/keyrings/odio.gpg] https://apt.odio.love stable main" \
| sudo tee /etc/apt/sources.list.d/odio.list
sudo apt update
sudo apt install mpdris2Enable (D-Bus activated — default):
The shipped systemd user unit is Type=dbus with a matching D-Bus service file, so mpDris2 auto-starts on the first MPRIS call (playerctl, a media key, a desktop applet, …). No manual enable required.
Enable eagerly (optional — run before any client asks):
systemctl --user enable --now mpDris2.service✨ What's new
- 7-step cover pipeline: the local resolver (MPD
readpicture→ filesystem regex → MPDalbumart→ CUE/cdda fallback) now hands off to remote sources when nothing local is found. - Remote cover-URL sources for tagged tracks: MusicBrainz/CAA, iTunes, Deezer. Opt-in and prioritised via
[Cover] sources(an ordered list; the order is the lookup priority, unlisted = off). - Web-radio cover sources for
http(s)://streams: Radio Browser station favicon and myMPD WebradioDB, opt-in via[Cover] stream_sources(mympdalso needs[Cover] mympd_uri). - Link, don't re-host: remote steps expose the image URL as
mpris:artUrldirectly. Nothing is downloaded or cached to disk, and the cover cache is gone. - Covers resolved off the critical path: artwork is fetched asynchronously and carried across MPRIS re-emits, so metadata never blocks on a slow lookup.
⚙️ Configuration
- INI config at
~/.config/mpDris2/mpDris2.conf, with/etc/mpDris2/mpDris2.confas fallback. Example template shipped at/usr/share/doc/mpdris2/mpdris2.conf. - Sections:
[Connection](host,port,password),[Library](music_dir,cover_regex),[Cover](sources,stream_sources,mympd_uri),[Bling](cdprev). - The MusicBrainz/CAA source needs the optional
[cover]extra (pip install '.[cover]'); iTunes, Deezer, Radio Browser and myMPD are stdlib-only. - CLI overrides config:
-H/--host,-p/--port,--music-dir,--config,--use-journal,--no-reconnect,-v/--verbose.
🔥 Removed
- Desktop notifications dropped: no more
notify.pyor[Notify]section. Modern desktops raise their own bubbles off the exported MPRIS metadata, so a second libnotify layer was redundant. - i18n dropped (babel + gettext): the daemon is English-only, removing the translation toolchain and runtime.
- Cover config folded into a single
BridgeConfigfield; cover-source plumbing unified into one registry.
🏗️ CI / Dev
- Dependabot added (pip + github-actions, grouped into one PR per ecosystem).
- Added bridge MPRIS-callback test coverage.
- README overhaul: badges, Features, table of contents, cover-art pipeline table, plus Used in / Contributing / Credits / License sections.
🙏 Thanks
- @pbattino for the web-radio cover work that inspired this cycle and for suggesting the Radio Browser API (odios#33).
Full changelog: v0.10.1...v0.11.0