import logging import urllib3 from .__init__ import tmdb,search,movie,tv from FileStream.Tools.cleanup import Get_Title_Year #from FileStream.TMDB.__init__ import tmdb,search,movie,tv def get_tvshows(tv_show_id): return tv.details(tv_show_id).__dict__ def search_tmdb_movies(name): # Search for the title in TMDb title, year = Get_Title_Year(name) print("*", title, year,"\n Name :", name ) if title is None : return None search_results = search.multi(title) # Filter results by year try: for result in search_results: if not isinstance(result, dict): result = dict(result) if result.get("media_type") == "movie": release_date= result.get("release_date") or result.get("first_air_date") if release_date and int(release_date.split('-')[0]) == year: #print("\n * TMDB response" ,result, type(result)) return dict(result) except Exception as e : print("* Error at Endpoint", e, result) return None return None def search_tmdb_tv(name): # Search for the title in TMDb title, year = Get_Title_Year(name) #print("*", title, year,"\n Name :", name) if title is None : return None search_results = search.multi(title) # Filter results by year try: for result in search_results: if not isinstance(result, dict): result = dict(result) if result.media_type == "tv": release_date= result.get("release_date") or result.get("first_air_date") if release_date and int(release_date.split('-')[0]) == year: return get_tvshows( result.get("id") ) except Exception as e : print("* Error at Endpoint", e, result) return None return None def search_tmdb_any(title: str, year: str): """ Search for a movie or TV show on TMDb based on title and release year. :param title: The name of the movie or TV show. :param year: The release year. :return: Matched TMDb result or None if no match is found. """ try: # Validate inputs if not isinstance(title, str) or not isinstance(year, int): logging.warning("Invalid input: Title must be a string, and Year must be an integer.") return None # Perform a search query search_results = search.multi(title) if not search_results: logging.info(f"No results found for '{title}' ({year})") return None # Iterate through the results and find a match by media type and year for result in search_results: try: media_type = getattr(result, "media_type", None) release_date = ( getattr(result, "release_date", None) or getattr(result, "first_air_date", None) ) if release_date and release_date.split('-')[0].isdigit(): result_year = int(release_date.split('-')[0]) if result_year == year: if media_type == "tv": return get_tvshows(getattr(result, "id", None)) elif media_type == "movie": return result except Exception as inner_error: logging.error(f"Error processing result {result}: {inner_error}") except Exception as e: logging.error(f"Error in search_tmdb_any: {e}") return None def search_tmdb_any_old(name): # Search for the title in TMDb title, year = Get_Title_Year(name) #print("*", title, year,"\n Name :", name) if title is None : return None search_results = search.multi(title) # Filter results by year try: for result in search_results: #if not isinstance(result, dict): #print(result) #result = result #release_date = result.release_date if result.release_date else result.first_air_date if result.media_type == "tv": release_date=result.release_date or result.first_air_date or result.get("release_date") or result.get("first_air_date") if release_date and int(release_date.split('-')[0]) == year: return get_tvshows( result.id or result.get("id") ) if result.media_type == "movie": release_date=result.release_date or result.get("release_date") or result.get("first_air_date") if release_date and int(release_date.split('-')[0]) == year: return result except Exception as e : print("* Error at Endpoint", e, result) return None return None