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
This commit is contained in:
2025-09-10 09:22:17 -04:00
parent c857a61d0b
commit 23a71e066d
2 changed files with 35 additions and 9 deletions
+1 -1
View File
@@ -1 +1 @@
0.2.16
0.2.17
+31 -5
View File
@@ -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
_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", []):
if entry.get("iso_3166_1", "").upper() != self.primary_country:
country = entry.get("iso_3166_1", "").upper()
if country != 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: 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()