Skip to content

v0.11.0

Choose a tag to compare

@github-actions github-actions released this 09 Jun 13:05
· 11 commits to master since this release

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 mpdris2

Enable (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 → MPD albumart → 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 (mympd also needs [Cover] mympd_uri).
  • Link, don't re-host: remote steps expose the image URL as mpris:artUrl directly. 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.conf as 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.py or [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 BridgeConfig field; 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

What's Changed