| import logging |
| import urllib3 |
| from .__init__ import tmdb,search,movie,tv |
| from FileStream.Tools.cleanup import Get_Title_Year |
| |
|
|
|
|
| def get_tvshows(tv_show_id): |
| return tv.details(tv_show_id).__dict__ |
|
|
| def search_tmdb_movies(name): |
| |
| title, year = Get_Title_Year(name) |
| print("*", title, year,"\n Name :", name ) |
| if title is None : |
| return None |
| search_results = search.multi(title) |
| |
| 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: |
| |
| return dict(result) |
| except Exception as e : |
| print("* Error at Endpoint", e, result) |
| return None |
| return None |
|
|
| def search_tmdb_tv(name): |
| |
| title, year = Get_Title_Year(name) |
| |
| if title is None : |
| return None |
| search_results = search.multi(title) |
| |
| 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: |
| |
| 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 |
|
|
| |
| search_results = search.multi(title) |
| if not search_results: |
| logging.info(f"No results found for '{title}' ({year})") |
| return None |
|
|
| |
| 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): |
| |
| title, year = Get_Title_Year(name) |
| |
| if title is None : |
| return None |
| search_results = search.multi(title) |
| |
| try: |
| for result in search_results: |
| |
| |
| |
| |
| 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 |