feat: Prioritize English-speaking countries in release date fallback
Local Docker Build (Dev) / build-dev (push) Successful in 26s

- Add two-tier international fallback: English-speaking first, then any country
- English-speaking countries: GB, CA, AU, NZ, IE
- For The Fabric of Christmas (2023): will try AU, CA before BE
- Maintains cultural relevance while ensuring comprehensive coverage
- Clear logging shows which tier is used for transparency
This commit is contained in:
2025-09-24 14:06:11 -04:00
parent fc3bd67138
commit aa9f9d9194
+45 -2
View File
@@ -236,10 +236,53 @@ class TMDBClient:
_log("WARNING", f"❌ TMDB: No release dates found for {imdb_id} in {self.primary_country}") _log("WARNING", f"❌ TMDB: No release dates found for {imdb_id} in {self.primary_country}")
# Fallback: Try any available country if primary country has no dates # Fallback: First try English-speaking countries, then any country
_log("INFO", f"🌍 TMDB: Trying fallback to any available country for {imdb_id}") english_speaking_countries = {"GB", "CA", "AU", "NZ", "IE"} # UK, Canada, Australia, New Zealand, Ireland
# First pass: Try English-speaking countries
_log("INFO", f"🇺🇸 TMDB: Trying English-speaking countries fallback for {imdb_id}")
for entry in release_dates.get("results", []): for entry in release_dates.get("results", []):
country = entry.get("iso_3166_1", "").upper() country = entry.get("iso_3166_1", "").upper()
if country not in english_speaking_countries:
continue
_log("INFO", f"🎯 TMDB: Checking English-speaking country {country}")
releases = entry.get("release_dates", [])
if not releases:
continue
# Collect all available releases with their types and dates
available_releases = []
for release in releases:
release_type = release.get("type")
release_date = release.get("release_date")
if release_date:
parsed_date = _parse_date_to_iso(release_date)
if parsed_date:
available_releases.append((release_type, parsed_date))
# Apply TMDB release type priority order
tmdb_priority = self._get_tmdb_type_priority()
for preferred_type in tmdb_priority:
for release_type, parsed_date in available_releases:
if release_type == preferred_type:
release_type_names = {
1: "Premiere", 2: "Limited Theatrical", 3: "Theatrical",
4: "Digital", 5: "Physical", 6: "TV Premiere"
}
type_name = release_type_names.get(release_type, f"Type {release_type}")
_log("INFO", f"✅ TMDB: Using English-speaking {country} {type_name} release date: {parsed_date}")
return parsed_date
# Second pass: Try any remaining country as last resort
_log("INFO", f"🌍 TMDB: Trying any available country as last resort for {imdb_id}")
for entry in release_dates.get("results", []):
country = entry.get("iso_3166_1", "").upper()
if country in english_speaking_countries or country == self.primary_country:
continue # Already tried these
_log("INFO", f"🎯 TMDB: Checking fallback country {country}") _log("INFO", f"🎯 TMDB: Checking fallback country {country}")
releases = entry.get("release_dates", []) releases = entry.get("release_dates", [])