Files
metadata-agregator/docs/research/README.md
T
Alexander a1f6701bac 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
2026-04-28 16:28:53 +02:00

92 lines
4.5 KiB
Markdown

# Music Metadata Providers & Aggregators Research
Open-source projects that can be queried via API to lookup artist/album/track information.
> **For deep analysis**: See [REVERSE_ENGINEERING_PROMPT.md](./REVERSE_ENGINEERING_PROMPT.md) for agent prompts to perform comprehensive architectural analysis of any project.
>
> **Execution plan**: See [REVERSE_ENGINEERING_PLAN.md](./REVERSE_ENGINEERING_PLAN.md) for the ordered plan covering all 17 projects.
>
> **Aggregator ERDs**: See [AGGREGATORS_ERD.md](./AGGREGATORS_ERD.md) for entity relationship diagrams of Tier 2 aggregators.
>
> **Architecture Analysis**: See [AGGREGATORS_ANALYSIS.md](./AGGREGATORS_ANALYSIS.md) for deep critique of aggregator flaws and proposed redesign.
>
> **Proposed Schema**: See [../PROPOSED_ERD.md](../PROPOSED_ERD.md) for the ground-up ERD design addressing all identified flaws.
## Quick Reference
| Project | Type | API | Sources | Stars |
|---------|------|-----|---------|-------|
| [MusicBrainz](./musicbrainz-server/) | Database | REST | Self | Large |
| [AcoustID](./acoustid/) | Fingerprinting | REST | MusicBrainz | - |
| [ListenBrainz](./listenbrainz/) | Recommendations | REST | Self | - |
| [music-metadata-api](./music-metadata-api/) | Bulk Lookup | REST | Pre-aggregated | New |
| [MiniMediaMetadataAPI](./minimediametadataapi/) | Aggregator | REST | 5 providers | 29 |
| [Lidarr Metadata](./lidarr-metadata-api/) | Enhanced MB | REST | MusicBrainz | - |
| [Harmony](./harmony/) | Aggregator | REST | 10+ providers | 218 |
| [GraphBrainz](./graphbrainz/) | Enhanced MB | GraphQL | Extensions | ~400 |
| [Bedrock-API](./bedrock-api/) | Streaming | gRPC | 6 providers | - |
| [minim](./minim/) | Library | Python | 7 APIs | - |
| [MusicMetaLinker](./musicmetalinker/) | Entity Linking | Python | 4 sources | - |
| [Meelo](./meelo/) | Server | REST | MB, Genius | 1,095 |
| [Melodee](./melodee/) | Server | Multi | 5 sources | 62 |
| [Navidrome](./navidrome/) | Server | Subsonic | Last.fm | High |
| [gonic](./gonic/) | Server | Subsonic | Last.fm | - |
| [LMS](./lms/) | Server | Subsonic | MusicBrainz | 1,569 |
| [Accentor](./accentor/) | Server | REST | User-controlled | - |
## Categories
### Tier 1: Dedicated Metadata Services
Core services focused on providing metadata:
- **[MusicBrainz Server](./musicbrainz-server/)** - The canonical open music encyclopedia
- **[AcoustID](./acoustid/)** - Audio fingerprinting → MusicBrainz lookup
- **[ListenBrainz](./listenbrainz/)** - Recommendations, popularity, similar artists
- **[music-metadata-api](./music-metadata-api/)** - 256M tracks, batch API
- **[MiniMediaMetadataAPI](./minimediametadataapi/)** - Multi-provider aggregation
- **[Lidarr Metadata API](./lidarr-metadata-api/)** - Enhanced MusicBrainz for Lidarr
### Tier 2: Aggregators (Multi-Source)
Projects that combine data from multiple sources:
- **[Harmony](./harmony/)** - Intelligent multi-source merge, MusicBrainz seeding
- **[GraphBrainz](./graphbrainz/)** - GraphQL interface with extensible schema
- **[Bedrock-API](./bedrock-api/)** - gRPC streaming aggregator
- **[minim](./minim/)** - Python library for 7 music APIs
- **[MusicMetaLinker](./musicmetalinker/)** - Entity linking across databases
### Tier 3: Self-Hosted Servers with Metadata APIs
Streaming servers that expose comprehensive metadata:
- **[Meelo](./meelo/)** - For collectors, flexible metadata parsing
- **[Melodee](./melodee/)** - All-in-one with multiple APIs
- **[Navidrome](./navidrome/)** - Popular, lightweight
- **[gonic](./gonic/)** - Minimal Go implementation
- **[LMS](./lms/)** - C++, comprehensive MusicBrainz support
- **[Accentor](./accentor/)** - Metadata-focused, user-controlled
## Recommendations
| Use Case | Best Choice |
|----------|-------------|
| Canonical metadata source | [MusicBrainz](./musicbrainz-server/) |
| Multi-source aggregation | [Harmony](./harmony/) or [GraphBrainz](./graphbrainz/) |
| High-volume lookups | [music-metadata-api](./music-metadata-api/) |
| Lightweight self-hosted | [MiniMediaMetadataAPI](./minimediametadataapi/) |
| Audio fingerprint → metadata | [AcoustID](./acoustid/) |
| GraphQL API | [GraphBrainz](./graphbrainz/) |
| All-in-one streaming + metadata | [Melodee](./melodee/) or [Meelo](./meelo/) |
| Python integration | [minim](./minim/) |
## License Summary
| License | Projects |
|---------|----------|
| MIT | music-metadata-api, Melodee, GraphBrainz, Bedrock-API, minim, MusicMetaLinker |
| GPL-3.0 | MiniMediaMetadataAPI, Lidarr, Meelo, Navidrome, gonic, LMS |
| GPL-2.0 | MusicBrainz, ListenBrainz |
| AGPL-3.0 | Accentor |