Spaces:
Running
Running
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 |