Metadada is an alternaive Lidarr metadata api based on MusicBrainz database and Meilisearch.
Note that indexing time may vary depending on your hardware. The whole initialization took about 2h hour on my 64G RAM/12 cores desktop. Fortunately many things can still be improved and we expect to reduce it further.
- rust/cargo
- docker
- Get meilisearch and postgresql up and running.
docker compose up -d- Setting up Metadada config file:
cp config.example.toml config.tomlIf running locally, the only thing you need to change is the Musicbrainz token (which can be obtained following the official documentation).
- Install Metadada
cargo install --path .- Run Metadada
metadadaImportant: Prior to starting the API Metadada will check for existing entries in the database, if none are found it will start replicating the MusicBrainz database, Note that this may take a while depending on your hardware.
-
Once the API is up and running, you can browse the avalaible entpoint at
localhost:3000/swagger-ui -
Changing the Lidarr metadata server (adapt the url to your needs)
INSERT INTO Config (Key, Value)
VALUES ('metadatasource', 'http://localhost:3000')
ON CONFLICT(Key) DO UPDATE SET Value = excluded.Value-
mbslave optimization (ignore unused tables)Write our own mb ingestion tool -
pg_notify listener for reindexingWe use native rust mpsc channel - preindexing image and link transformation
- implement
includeTracksparam using meilisearchattributesToRetrieve - setup ranking on meilisearch indexes
- implement /recent endpoints
- Distribute docker multiarch image
- Helm charts (here)
- implement Musicbrainz Live Data Feed ingestion
- Automatic schema update (easy to implement)
- Distribute the musicbrainz ingestion tool as a single binary (as an alternative to mbslave)
All the code in this repository is released under the GNU General Public License, for more information take a look at the LICENSE file.