feat: initial implementation of metadata aggregator
- gRPC service with MusicBrainz provider - PostgreSQL schema with migrations - Service layer with database-first caching - Repository pattern for data access - YAML configuration support - Research documentation for 17 music metadata projects
This commit is contained in:
@@ -0,0 +1,54 @@
|
||||
# Lidarr Metadata API
|
||||
|
||||
## Overview
|
||||
|
||||
Custom metadata API that powers Lidarr (music collection manager). Built on top of MusicBrainz with enhanced artist/album data.
|
||||
|
||||
## Key Features
|
||||
|
||||
- **Purpose**: Metadata backend for Lidarr
|
||||
- **Data Source**: MusicBrainz PostgreSQL + Solr
|
||||
- **API**: REST
|
||||
- **License**: GPL-3.0
|
||||
|
||||
## Source
|
||||
|
||||
| Resource | URL |
|
||||
|----------|-----|
|
||||
| **Repository** | https://github.com/Lidarr/LidarrAPI.Metadata |
|
||||
| **Lidarr Main** | https://github.com/Lidarr/Lidarr |
|
||||
| **Documentation** | https://wiki.servarr.com/lidarr |
|
||||
|
||||
## Architecture
|
||||
|
||||
Requires:
|
||||
- MusicBrainz PostgreSQL database
|
||||
- Solr search server
|
||||
|
||||
```
|
||||
docker-compose.yml # Base services (MusicBrainz DB, Solr)
|
||||
docker-compose.dev.yml # Dev mode (exposed ports)
|
||||
docker-compose.prod.yml # Production (metadata service in Docker)
|
||||
```
|
||||
|
||||
## Self-Hosting
|
||||
|
||||
```bash
|
||||
git clone https://github.com/Lidarr/LidarrAPI.Metadata.git
|
||||
cd LidarrAPI.Metadata
|
||||
|
||||
# Start with Docker Compose
|
||||
docker-compose -f docker-compose.yml -f docker-compose.prod.yml up
|
||||
|
||||
# Or run directly
|
||||
python server.py
|
||||
# or
|
||||
lidarr-metadata-server
|
||||
```
|
||||
|
||||
## Notes
|
||||
|
||||
- Powers the Lidarr ecosystem (music management for *arr stack)
|
||||
- Enhanced MusicBrainz data with better album matching
|
||||
- Community-hosted instance at `api.musicinfo.pro`
|
||||
- Requires significant resources (~350GB for full MusicBrainz mirror)
|
||||
Reference in New Issue
Block a user