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:
Alexander
2026-04-28 16:27:14 +02:00
commit a1f6701bac
163 changed files with 95884 additions and 0 deletions
+58
View File
@@ -0,0 +1,58 @@
# minim
## Overview
A lightweight Python library providing unified client interface to 7 music service APIs for media information retrieval and semi-automated music tagging.
## Key Features
- **APIs**: Deezer, Discogs, iTunes, Musixmatch, Qobuz, Spotify, TIDAL
- **Purpose**: Unified interface for metadata retrieval
- **Tagging**: Semi-automated music file tagging
- **License**: MIT
## Source
| Resource | URL |
|----------|-----|
| **Repository** | https://github.com/bbye98/minim |
| **Documentation** | https://bbye98.github.io/minim |
| **PyPI** | https://pypi.org/project/minim |
## Modules
- `minim.audio` - Audio file handlers for reading/writing metadata
- `minim.discogs` - Discogs API client (OAuth support)
- `minim.itunes` - iTunes Search API client
- `minim.qobuz` - Qobuz API client (password auth)
- `minim.spotify` - Spotify Web API client (multiple grant types)
- `minim.tidal` - TIDAL API client (old and new APIs)
## Usage Example
```python
from minim import spotify, itunes, tidal
# Search across services
client_spotify = spotify.WebAPI()
result = client_spotify.search("Galantis", "artist", limit=1)
client_itunes = itunes.SearchAPI()
result = client_itunes.search("Galantis", entity="musicArtist", limit=1)
client_tidal = tidal.API()
result = client_tidal.search("Galantis", type="artist", limit=1)
```
## Installation
```bash
pip install minim
```
## Notes
- Unified Python interface to multiple services
- OAuth support with token caching
- Audio format conversion support
- Best for building Python applications that need multi-source lookup