a1f6701bac
- 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
92 lines
4.5 KiB
Markdown
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 |
|