mirror of
https://github.com/navidrome/navidrome.git
synced 2026-01-03 06:15:22 +00:00
Cover Art Archive Plugin (Python)
A Python example plugin that fetches album cover images from the Cover Art Archive API using the MusicBrainz Release MBID.
Features
- Implements the
nd_get_album_imagesmethod of the MetadataAgent plugin interface - Returns front cover images for a given release MBID
- Returns
not foundif no MBID is provided or no images are found - Demonstrates Python plugin development for Navidrome
Prerequisites
- extism-py - Python PDK compiler
curl -Ls https://raw.githubusercontent.com/extism/python-pdk/main/install.sh | bash
Note:
extism-pyrequires Binaryen (wasm-merge,wasm-opt) to be installed.
Building
From the plugins/examples directory:
make coverartarchive-py.ndp
Or directly:
extism-py plugin/__init__.py -o plugin.wasm
zip -j coverartarchive-py.ndp manifest.json plugin.wasm
Installation
-
Copy
coverartarchive-py.ndpto your Navidrome plugins folder -
Enable plugins in
navidrome.toml:[Plugins] Enabled = true Folder = "/path/to/plugins" -
Add to your agents list:
Agents = "coverartarchive-py,spotify,lastfm"
Testing
Extract the wasm file and test:
unzip -p coverartarchive-py.ndp plugin.wasm > coverartarchive-py.wasm
extism call coverartarchive-py.wasm nd_get_album_images --wasi \
--input '{"name":"Dummy","artist":"Portishead","mbid":"76df3287-6cda-33eb-8e9a-044b5e15ffdd"}' \
--allow-host "coverartarchive.org" --allow-host "archive.org"
How It Works
-
Album Image Request (
nd_get_album_images): Receives album metadata including the MusicBrainz Release MBID. -
API Query: Fetches cover art metadata from
https://coverartarchive.org/release/{mbid}. -
Response: Returns the front cover image URL if found.