mirror of
https://github.com/navidrome/navidrome.git
synced 2026-05-03 06:51:16 +00:00
74 lines
2.0 KiB
Markdown
74 lines
2.0 KiB
Markdown
# Cover Art Archive Plugin (Python)
|
|
|
|
A Python example plugin that fetches album cover images from the [Cover Art Archive](https://coverartarchive.org/) API using the MusicBrainz Release MBID.
|
|
|
|
## Features
|
|
|
|
- Implements the `nd_get_album_images` method of the MetadataAgent plugin interface
|
|
- Returns front cover images for a given release MBID
|
|
- Returns `not found` if no MBID is provided or no images are found
|
|
- Demonstrates Python plugin development for Navidrome
|
|
|
|
## Prerequisites
|
|
|
|
- [extism-py](https://github.com/extism/python-pdk) - Python PDK compiler
|
|
```bash
|
|
curl -Ls https://raw.githubusercontent.com/extism/python-pdk/main/install.sh | bash
|
|
```
|
|
|
|
> **Note:** `extism-py` requires [Binaryen](https://github.com/WebAssembly/binaryen/) (`wasm-merge`, `wasm-opt`) to be installed.
|
|
|
|
## Building
|
|
|
|
From the `plugins/examples` directory:
|
|
|
|
```bash
|
|
make coverartarchive-py.ndp
|
|
```
|
|
|
|
Or directly:
|
|
|
|
```bash
|
|
extism-py plugin/__init__.py -o plugin.wasm
|
|
zip -j coverartarchive-py.ndp manifest.json plugin.wasm
|
|
```
|
|
|
|
## Installation
|
|
|
|
1. Copy `coverartarchive-py.ndp` to your Navidrome plugins folder
|
|
|
|
2. Enable plugins in `navidrome.toml`:
|
|
```toml
|
|
[Plugins]
|
|
Enabled = true
|
|
Folder = "/path/to/plugins"
|
|
```
|
|
|
|
3. Add to your agents list:
|
|
```toml
|
|
Agents = "coverartarchive-py,spotify,lastfm"
|
|
```
|
|
|
|
## Testing
|
|
|
|
Extract the wasm file and test:
|
|
|
|
```bash
|
|
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
|
|
|
|
1. **Album Image Request (`nd_get_album_images`)**: Receives album metadata including the MusicBrainz Release MBID.
|
|
|
|
2. **API Query**: Fetches cover art metadata from `https://coverartarchive.org/release/{mbid}`.
|
|
|
|
3. **Response**: Returns the front cover image URL if found.
|
|
|
|
## API Reference
|
|
|
|
- [Cover Art Archive API](https://musicbrainz.org/doc/Cover_Art_Archive/API)
|