applemusic
¶
iTunes Search API client for retrieving album release information.
This module provides access to Apple's iTunes Search API, which offers: - Album release dates and metadata - Artist information - No authentication required (public API) - Useful for new releases that may not be in other databases yet
The iTunes Search API is particularly valuable for: - Recent releases (Apple gets data directly from labels) - Albums available on Apple Music/iTunes Store - Official release dates and metadata validation
API Reference: https://developer.apple.com/library/archive/documentation/AudioVideo/Conceptual/iTuneSearchAPI/
AppleMusicClient
¶
AppleMusicClient(
console_logger,
error_logger,
make_api_request_func,
score_release_func,
*,
country_code="US",
entity="album",
limit=50
)
Client for iTunes Search API operations.
Provides album search and metadata retrieval using Apple's public iTunes Search API. No authentication required - this is a public API service.
Initialize the iTunes Search API 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[..., Coroutine[Any, Any, dict[str, Any] | None]]
|
Injected function for making API requests |
required |
score_release_func
|
Callable[..., float]
|
Injected function for scoring releases |
required |
country_code
|
str
|
Country code for search results (default: US) |
'US'
|
entity
|
str
|
Type of content to search for (default: album) |
'album'
|
limit
|
int
|
Maximum number of results to return (default: 50) |
50
|
Source code in src/services/api/applemusic.py
get_scored_releases
async
¶
Get scored releases from iTunes Search API with lookup fallback.
Uses the search API first. If no results are found, falls back to looking up the artist and fetching all their albums.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
artist_norm
|
str
|
Normalized artist name |
required |
album_norm
|
str
|
Normalized album name |
required |
Returns:
| Type | Description |
|---|---|
list[ScoredRelease]
|
List of scored releases from iTunes Search API |
Source code in src/services/api/applemusic.py
89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 | |
get_artist_start_year
async
¶
Get artist's earliest release year from iTunes.
iTunes doesn't have an explicit artist start date, so we use the earliest album release year as a proxy.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
artist_norm
|
str
|
Normalized artist name |
required |
Returns:
| Type | Description |
|---|---|
int | None
|
Earliest release year found, or None if no releases found |