diff --git a/clients/external_clients.py b/clients/external_clients.py index 1d4c16c..1689ec8 100644 --- a/clients/external_clients.py +++ b/clients/external_clients.py @@ -235,6 +235,42 @@ class TMDBClient: return parsed_date _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}") + for entry in release_dates.get("results", []): + country = entry.get("iso_3166_1", "").upper() + _log("INFO", f"🎯 TMDB: Checking fallback 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 fallback {country} {type_name} release date: {parsed_date}") + return parsed_date + + _log("WARNING", f"❌ TMDB: No release dates found for {imdb_id} in any country") return None def _get_tmdb_type_priority(self) -> List[int]: