From 23a71e066d152a965bcf867e3b76f4058e6cbeda Mon Sep 17 00:00:00 2001 From: SBCrumb Date: Wed, 10 Sep 2025 09:22:17 -0400 Subject: [PATCH] Fix TMDB country configuration and add comprehensive API debugging - Fixed ExternalClientManager to properly use TMDB_COUNTRY environment variable - Added detailed TMDB API call logging to debug why external clients return None - Will show available countries, release types, and specific API responses - Should resolve the "no_valid_date_source" issue for rename-first movies Version bumped to 0.2.17 --- VERSION | 2 +- clients/external_clients.py | 42 ++++++++++++++++++++++++++++++------- 2 files changed, 35 insertions(+), 9 deletions(-) diff --git a/VERSION b/VERSION index 9097948..0fcb3bb 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.2.16 +0.2.17 diff --git a/clients/external_clients.py b/clients/external_clients.py index cfcb38c..a2b953d 100644 --- a/clients/external_clients.py +++ b/clients/external_clients.py @@ -73,26 +73,48 @@ class TMDBClient: def get_digital_release_date(self, imdb_id: str) -> Optional[str]: """Get digital release date for a movie""" + _log("INFO", f"🔍 TMDB: Looking for digital release date for {imdb_id}") movie = self.find_by_imdb(imdb_id) if not movie: + _log("WARNING", f"❌ TMDB: Movie not found for {imdb_id}") return None tmdb_id = movie.get("id") + _log("INFO", f"✅ TMDB: Found movie ID {tmdb_id} for {imdb_id}") if not tmdb_id: return None release_dates = self._get(f"/movie/{tmdb_id}/release_dates") if not release_dates: + _log("WARNING", f"❌ TMDB: No release dates data for movie {tmdb_id}") return None - for entry in release_dates.get("results", []): - if entry.get("iso_3166_1", "").upper() != self.primary_country: - continue - - for release in entry.get("release_dates", []): - if release.get("type") == 4 and release.get("release_date"): # Digital release - return _parse_date_to_iso(release["release_date"]) + _log("INFO", f"🔍 TMDB: Got release dates data, looking for {self.primary_country} digital releases") + # Debug: Show all available countries + countries = [entry.get("iso_3166_1") for entry in release_dates.get("results", [])] + _log("INFO", f"📍 TMDB: Available countries: {countries}") + + for entry in release_dates.get("results", []): + country = entry.get("iso_3166_1", "").upper() + if country != self.primary_country: + continue + + _log("INFO", f"🎯 TMDB: Found {country} release data") + releases = entry.get("release_dates", []) + _log("INFO", f"🎬 TMDB: Release types available: {[r.get('type') for r in releases]}") + + for release in releases: + release_type = release.get("type") + release_date = release.get("release_date") + _log("INFO", f"📅 TMDB: Type {release_type}, Date: {release_date}") + + if release_type == 4 and release_date: # Digital release + parsed_date = _parse_date_to_iso(release_date) + _log("INFO", f"✅ TMDB: Found digital release date: {parsed_date}") + return parsed_date + + _log("WARNING", f"❌ TMDB: No digital release found for {imdb_id} in {self.primary_country}") return None def get_theatrical_release_date(self, imdb_id: str) -> Optional[str]: @@ -283,7 +305,11 @@ class ExternalClientManager: """Manager for all external API clients""" def __init__(self): - self.tmdb = TMDBClient() + # Get country from environment, default to US + tmdb_country = os.environ.get("TMDB_COUNTRY", "US") + _log("INFO", f"🌍 TMDB: Initializing with country: {tmdb_country}") + + self.tmdb = TMDBClient(primary_country=tmdb_country) self.omdb = OMDbClient() self.jellyseerr = JellyseerrClient()