File size: 4,829 Bytes
3e7992c e566133 c37663e e566133 c37663e e566133 87159d4 f38cb66 87159d4 bb25507 d2db4be 44dd42b 87159d4 06de700 dd524d1 87159d4 bb25507 87159d4 f38cb66 87159d4 f38cb66 87159d4 3e7992c 800d7f0 3e7992c e566133 87159d4 e566133 87159d4 e566133 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 |
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 |