diff --git a/README.md b/README.md index 604da5f..2e796bd 100644 --- a/README.md +++ b/README.md @@ -129,6 +129,9 @@ curl "http://localhost:8080/debug/movie/tt1674782/history" # Show date priority logic and available sources curl "http://localhost:8080/debug/movie/tt1674782/priority" + +# Debug TMDB API lookup step by step +curl "http://localhost:8080/debug/tmdb/tt1674782" ``` ### Response Examples diff --git a/nfoguard.py b/nfoguard.py index 24557f4..12dbf7b 100644 --- a/nfoguard.py +++ b/nfoguard.py @@ -1246,6 +1246,80 @@ async def debug_movie_priority_logic(imdb_id: str): except Exception as e: return {"error": str(e), "imdb_id": imdb_id} +@app.get("/debug/tmdb/{imdb_id}") +async def debug_tmdb_lookup(imdb_id: str): + """Debug TMDB API lookup for a specific movie""" + try: + if not imdb_id.startswith("tt"): + imdb_id = f"tt{imdb_id}" + + result = { + "imdb_id": imdb_id, + "tmdb_api_enabled": movie_processor.external_clients.tmdb.enabled, + "tmdb_api_key_configured": bool(movie_processor.external_clients.tmdb.api_key), + "steps": {} + } + + if not movie_processor.external_clients.tmdb.enabled: + result["error"] = "TMDB API not enabled - check TMDB_API_KEY environment variable" + return result + + # Step 1: Find movie by IMDb ID + _log("INFO", f"TMDB Debug: Looking up {imdb_id}") + tmdb_movie = movie_processor.external_clients.tmdb.find_by_imdb(imdb_id) + result["steps"]["1_find_by_imdb"] = { + "found": bool(tmdb_movie), + "tmdb_movie": tmdb_movie if tmdb_movie else None + } + + if not tmdb_movie: + result["error"] = f"Movie {imdb_id} not found in TMDB" + return result + + tmdb_id = tmdb_movie.get("id") + result["tmdb_id"] = tmdb_id + + # Step 2: Get release dates + if tmdb_id: + _log("INFO", f"TMDB Debug: Getting release dates for TMDB ID {tmdb_id}") + release_dates_result = movie_processor.external_clients.tmdb._get(f"/movie/{tmdb_id}/release_dates") + result["steps"]["2_release_dates"] = { + "raw_response": release_dates_result, + "has_results": bool(release_dates_result and release_dates_result.get("results")) + } + + # Step 3: Look for US digital releases + if release_dates_result and release_dates_result.get("results"): + us_releases = [] + for country_data in release_dates_result["results"]: + if country_data.get("iso_3166_1") == "US": + us_releases = country_data.get("release_dates", []) + break + + result["steps"]["3_us_releases"] = { + "found_us_data": bool(us_releases), + "us_releases": us_releases + } + + # Step 4: Look for digital releases (type 4) + digital_releases = [r for r in us_releases if r.get("type") == 4] + result["steps"]["4_digital_releases"] = { + "digital_count": len(digital_releases), + "digital_releases": digital_releases + } + + # Step 5: Test the full digital release function + digital_date = movie_processor.external_clients.tmdb.get_digital_release_date(imdb_id) + result["steps"]["5_final_result"] = { + "digital_date": digital_date, + "success": bool(digital_date) + } + + return result + + except Exception as e: + return {"error": str(e), "imdb_id": imdb_id, "traceback": str(e)} + # --------------------------- # Main # ---------------------------