Skip to content

oknozor/metadada

Repository files navigation

Metadada

Metadada is an alternaive Lidarr metadata api based on MusicBrainz database and Meilisearch.

Important Notes

⚠️ Metadada is not stable yet and may not be a fit for your use case, proceed at your own risk.

Initialization and indexing

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.

Running locally

Prerequisites

  • rust/cargo
  • docker
  1. Get meilisearch and postgresql up and running.
docker compose up -d
  1. Setting up Metadada config file:
cp config.example.toml config.toml

If running locally, the only thing you need to change is the Musicbrainz token (which can be obtained following the official documentation).

  1. Install Metadada
cargo install --path .
  1. Run Metadada
metadada

Important: 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.

  1. Once the API is up and running, you can browse the avalaible entpoint at localhost:3000/swagger-ui

  2. 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

Todos

  • mbslave optimization (ignore unused tables) Write our own mb ingestion tool
  • pg_notify listener for reindexing We use native rust mpsc channel
  • preindexing image and link transformation
  • implement includeTracks param using meilisearch attributesToRetrieve
  • 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)

Licence

All the code in this repository is released under the GNU General Public License, for more information take a look at the LICENSE file.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages