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