feat: Add international release date fallback for movies without US dates
Local Docker Build (Dev) / build-dev (push) Successful in 28s

- Add fallback logic to use any available country when US release dates unavailable
- Maintains same release type priority (Digital, Physical, Theatrical)
- Should resolve The Fabric of Christmas (2023) no_valid_date_source issue
- Logs which country is used as fallback for transparency
- Available countries for this movie: AU, BE, CA
This commit is contained in:
2025-09-24 14:05:10 -04:00
parent f49b1632fd
commit fc3bd67138
+36
View File
@@ -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]: