musicbrainz
¶
MusicBrainz API client for music metadata retrieval.
This module provides the MusicBrainz-specific implementation for fetching and scoring music releases from the MusicBrainz database.
LifeSpan
¶
Bases: TypedDict
Type definition for artist life span data from MusicBrainz.
Area
¶
Bases: TypedDict
Type definition for area data from MusicBrainz.
Alias
¶
Bases: TypedDict
Type definition for artist alias from MusicBrainz.
ArtistCredit
¶
Bases: TypedDict
Type definition for artist credit from MusicBrainz.
TextRepresentation
¶
Bases: TypedDict
Type definition for text representation from MusicBrainz.
ReleaseEvent
¶
Bases: TypedDict
Type definition for release event from MusicBrainz.
Label
¶
Bases: TypedDict
Type definition for a label from MusicBrainz.
LabelInfo
¶
Bases: TypedDict
Type definition for label info from MusicBrainz.
CoverArtArchive
¶
Bases: TypedDict
Type definition for cover arts archive from MusicBrainz.
Recording
¶
Bases: TypedDict
Type definition for recording from MusicBrainz.
Track
¶
Bases: TypedDict
Type definition for a track from MusicBrainz.
Medium
¶
Bases: TypedDict
Type definition for medium from MusicBrainz.
Release
¶
Bases: TypedDict
Type definition for release from MusicBrainz.
ReleaseGroup
¶
Bases: TypedDict
Type definition for a release group from MusicBrainz.
MusicBrainzReleasesResponse
¶
Bases: TypedDict
Type definition for MusicBrainz releases API response.
MusicBrainzClient
¶
MusicBrainzClient(
console_logger,
error_logger,
make_api_request_func,
score_release_func,
analytics,
)
Bases: BaseApiClient
MusicBrainz API client for fetching music metadata.
Initialize MusicBrainz client.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
console_logger
|
Logger
|
Logger for console output |
required |
error_logger
|
Logger
|
Logger for error messages |
required |
make_api_request_func
|
Callable[..., Awaitable[dict[str, Any] | None]]
|
Function to make API requests with rate limiting |
required |
score_release_func
|
Callable[..., float]
|
Function to score releases for originality |
required |
analytics
|
Analytics
|
Analytics instance for performance tracking |
required |
Source code in src/services/api/musicbrainz.py
get_artist_info
async
¶
Get artist information from MusicBrainz.
Uses non-fielded search to match both canonical names and aliases. Combined with script_detection.detect_primary_script(), enables canonical name resolution for non-Latin artists. Issue #102.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
artist_norm
|
str
|
Normalized artist name |
required |
include_aliases
|
bool
|
Whether to include aliases in the response |
False
|
Returns:
| Type | Description |
|---|---|
dict[str, Any] | None
|
Artist information or None if not found |
Source code in src/services/api/musicbrainz.py
get_artist_activity_period
async
¶
Get artist's activity period from MusicBrainz.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
artist_norm
|
str
|
Normalized artist name |
required |
Returns:
| Type | Description |
|---|---|
tuple[str | None, str | None]
|
Tuple of (begin_year, end_year) or (None, None) if not found |
Source code in src/services/api/musicbrainz.py
get_artist_region
async
¶
Get an artist's region/country from MusicBrainz.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
artist_norm
|
str
|
Normalized artist name |
required |
Returns:
| Type | Description |
|---|---|
str | None
|
Region/country name or None if not found |
Source code in src/services/api/musicbrainz.py
get_canonical_artist_name
async
¶
Get the canonical MusicBrainz artist name from an alias.
Used by _perform_primary_search for non-Latin scripts (detected via script_detection.detect_primary_script). Issue #102.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
artist_norm
|
str
|
Normalized artist name (may be alias) |
required |
Returns:
| Type | Description |
|---|---|
str | None
|
Canonical artist name or None if not found |
Source code in src/services/api/musicbrainz.py
get_scored_releases
async
¶
Retrieve and score releases from MusicBrainz.
Uses multiple search strategies with fallbacks if precise queries fail.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
artist_norm
|
str
|
Normalized artist name |
required |
album_norm
|
str
|
Normalized album name |
required |
artist_region
|
str | None
|
Artist's region for scoring |
required |
artist_orig
|
str | None
|
Original artist name (before normalization) |
None
|
album_orig
|
str | None
|
Original album name (before normalization) |
None
|
Returns:
| Type | Description |
|---|---|
list[ScoredRelease]
|
List of scored releases sorted by score |