year_score_resolver
¶
Year score resolution logic extracted from ExternalApiOrchestrator.
This module handles the scoring and selection of the best release year from multiple API responses with potentially conflicting years.
YearScoreResolver
¶
YearScoreResolver(
*,
console_logger,
min_valid_year,
current_year,
definitive_score_threshold,
definitive_score_diff,
remaster_keywords=None
)
Resolves the best release year from scored API responses.
Handles: - Aggregating scores by year across multiple API sources - Selecting the best year considering future dates and reissues - Determining if the result is definitive
Initialize the year score resolver.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
console_logger
|
Logger
|
Logger for console output |
required |
min_valid_year
|
int
|
Minimum year to consider valid (e.g., 1900) |
required |
current_year
|
int
|
The current calendar year |
required |
definitive_score_threshold
|
int
|
Min score to consider definitive |
required |
definitive_score_diff
|
int
|
Min difference to prefer one year over another |
required |
remaster_keywords
|
list[str] | None
|
Keywords indicating reissue/remaster editions |
None
|
Source code in src/services/api/year_score_resolver.py
aggregate_year_scores
¶
Aggregate release scores by year, filtering out invalid years.
Source code in src/services/api/year_score_resolver.py
select_best_year
¶
Select the best year from aggregated scores and determine if definitive.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
year_scores
|
defaultdict[str, list[int]]
|
Mapping of year to list of scores |
required |
all_releases
|
list[ScoredRelease] | None
|
Optional list of all scored releases for keyword detection |
None
|
existing_year
|
str | None
|
Current year from library (for stability boost) |
None
|
Returns:
| Type | Description |
|---|---|
tuple[str, bool, int]
|
Tuple of (best_year, is_definitive, confidence_score) |