diff --git a/clients/external_clients.py b/clients/external_clients.py index 1689ec8..4c15520 100644 --- a/clients/external_clients.py +++ b/clients/external_clients.py @@ -236,10 +236,53 @@ class TMDBClient: _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 - _log("INFO", f"🌍 TMDB: Trying fallback to any available country for {imdb_id}") + # Fallback: First try English-speaking countries, then any country + 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", []): 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}") releases = entry.get("release_dates", [])