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:
@@ -73,26 +73,48 @@ class TMDBClient:
|
|||||||
|
|
||||||
def get_digital_release_date(self, imdb_id: str) -> Optional[str]:
|
def get_digital_release_date(self, imdb_id: str) -> Optional[str]:
|
||||||
"""Get digital release date for a movie"""
|
"""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)
|
movie = self.find_by_imdb(imdb_id)
|
||||||
if not movie:
|
if not movie:
|
||||||
|
_log("WARNING", f"❌ TMDB: Movie not found for {imdb_id}")
|
||||||
return None
|
return None
|
||||||
|
|
||||||
tmdb_id = movie.get("id")
|
tmdb_id = movie.get("id")
|
||||||
|
_log("INFO", f"✅ TMDB: Found movie ID {tmdb_id} for {imdb_id}")
|
||||||
if not tmdb_id:
|
if not tmdb_id:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
release_dates = self._get(f"/movie/{tmdb_id}/release_dates")
|
release_dates = self._get(f"/movie/{tmdb_id}/release_dates")
|
||||||
if not release_dates:
|
if not release_dates:
|
||||||
|
_log("WARNING", f"❌ TMDB: No release dates data for movie {tmdb_id}")
|
||||||
return None
|
return None
|
||||||
|
|
||||||
for entry in release_dates.get("results", []):
|
_log("INFO", f"🔍 TMDB: Got release dates data, looking for {self.primary_country} digital releases")
|
||||||
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"])
|
|
||||||
|
|
||||||
|
# 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
|
return None
|
||||||
|
|
||||||
def get_theatrical_release_date(self, imdb_id: str) -> Optional[str]:
|
def get_theatrical_release_date(self, imdb_id: str) -> Optional[str]:
|
||||||
@@ -283,7 +305,11 @@ class ExternalClientManager:
|
|||||||
"""Manager for all external API clients"""
|
"""Manager for all external API clients"""
|
||||||
|
|
||||||
def __init__(self):
|
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.omdb = OMDbClient()
|
||||||
self.jellyseerr = JellyseerrClient()
|
self.jellyseerr = JellyseerrClient()
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user