fsb / FileStream /APIs /TMDB /Endpoint.py
BinaryONe
Callback Update
9589968
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