year_search_coordinator
¶
Year search coordination logic extracted from ExternalApiOrchestrator.
This module handles the coordination of API calls to fetch release year information from multiple providers (MusicBrainz, Discogs, Apple Music).
YearSearchCoordinator
¶
YearSearchCoordinator(
*,
console_logger,
error_logger,
config,
preferred_api,
musicbrainz_client,
discogs_client,
applemusic_client,
release_scorer,
max_concurrent_api_calls=50
)
Coordinates API calls to fetch release year information.
Handles: - Script-optimized search (Cyrillic, CJK, etc.) - Concurrent API queries across multiple providers - API priority ordering based on configuration
Initialize the year search coordinator.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
console_logger
|
Logger
|
Logger for console output |
required |
error_logger
|
Logger
|
Logger for error output |
required |
config
|
AppConfig
|
Typed application configuration |
required |
preferred_api
|
str
|
Preferred API name for ordering |
required |
musicbrainz_client
|
MusicBrainzClient
|
MusicBrainz API client |
required |
discogs_client
|
DiscogsClient
|
Discogs API client |
required |
applemusic_client
|
AppleMusicClient
|
Apple Music API client |
required |
release_scorer
|
ReleaseScorer
|
Release scoring service |
required |
max_concurrent_api_calls
|
int
|
Maximum concurrent API requests (default 50). Prevents socket exhaustion on large libraries. |
50
|
Source code in src/services/api/year_search_coordinator.py
fetch_all_api_results
async
¶
Fetch scored releases from all API providers with script-aware logic.