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,52 @@
|
||||
# Music Metadata API
|
||||
|
||||
## Overview
|
||||
|
||||
A high-performance metadata enrichment API for music servers, backed by SQLite databases containing 256 million tracks. Written in Go with OpenAPI 3.1 spec.
|
||||
|
||||
## Key Features
|
||||
|
||||
- **Coverage**: 256M tracks in SQLite databases
|
||||
- **Performance**: 100 req/s with burst capacity of 200
|
||||
- **Batch API**: Up to 400 entities per request
|
||||
- **Data**: Images, genres, labels, copyright, release dates, ISRC
|
||||
- **License**: MIT
|
||||
|
||||
## Source
|
||||
|
||||
| Resource | URL |
|
||||
|----------|-----|
|
||||
| **Repository** | https://github.com/Aunali321/music-metadata-api |
|
||||
| **API Docs** | Swagger UI at `/docs` endpoint |
|
||||
|
||||
## API Endpoints
|
||||
|
||||
| Endpoint | Description |
|
||||
|----------|-------------|
|
||||
| `POST /batch/lookup` | Batch lookup (up to 400 entities) |
|
||||
| `GET /lookup/isrc/{isrc}` | Lookup tracks by ISRC |
|
||||
| `GET /lookup/track/{id}` | Lookup track by ID |
|
||||
| `GET /lookup/artist/{id}` | Lookup artist by ID |
|
||||
| `GET /lookup/album/{id}` | Lookup album by ID |
|
||||
| `GET /lookup/album/{id}/tracks` | Get all tracks in album |
|
||||
| `GET /search/track?q=&limit=` | Search tracks by name |
|
||||
| `GET /search/artist?q=&limit=` | Search artists by name |
|
||||
|
||||
## Self-Hosting
|
||||
|
||||
```bash
|
||||
# Docker
|
||||
docker run -p 8080:8080 \
|
||||
-v /path/to/databases:/data:ro \
|
||||
ghcr.io/aunali321/music-metadata-api:latest
|
||||
|
||||
# Or build locally (requires Go 1.24+)
|
||||
./metadata-api -db /path/to/main_database.sqlite3
|
||||
```
|
||||
|
||||
## Notes
|
||||
|
||||
- **Requires separate SQLite databases** (not included in repo)
|
||||
- Independent open-source project (not affiliated with Spotify)
|
||||
- Best for high-volume bulk lookups
|
||||
- OpenAPI 3.1 spec available at `/openapi.yaml`
|
||||
Reference in New Issue
Block a user