diff --git a/streaming-check/movie_check.py b/streaming-check/movie_check.py index 8cdb1a2..32f1ce2 100644 --- a/streaming-check/movie_check.py +++ b/streaming-check/movie_check.py @@ -6,10 +6,6 @@ from datetime import datetime import os import argparse -def get_args(): - parser = argparse.ArgumentParser(description='Search movie streaming availability.') - parser.add_argument('--year', type=int, help='Specify movie release year') - return parser.parse_args() tmdb_api_token = os.environ.get("TMDB_API_TOKEN") sa_api_token = os.environ.get("SA_API_TOKEN") @@ -27,40 +23,47 @@ sa_headers = { 'x-rapidapi-key': sa_api_token } -args = get_args() -movie = input("Enter a movie: ") -movie_safe = urllib.parse.quote_plus(movie) -if args.year: - tmdb_search = requests.get(f"{tmdb_url}/search/movie?language=en-US&query={movie_safe}&page=1&include_adult=false&primary_release_year={args.year}", headers=tmdb_headers).json() -else: - tmdb_search = requests.get(f"{tmdb_url}/search/movie?language=en-US&query={movie_safe}&page=1&include_adult=false", headers=tmdb_headers).json() - -if not tmdb_search["results"]: - print("I'm having trouble finding that movie. Check your spelling and try again.") - exit() - -movie_id = tmdb_search['results'][0]['id'] -movie_tile = tmdb_search['results'][0]['title'] -movie_release_check = tmdb_search['results'][0]['release_date'] - -if movie_release_check: - movie_release = datetime.strptime(tmdb_search['results'][0]['release_date'], "%Y-%m-%d") -else: movie_release = "???" - -movie_rating = tmdb_search['results'][0]['vote_average'] - -sa_querystring = {"country":"us","tmdb_id":f"movie/{movie_id}","output_language":"en"} -sa_request = requests.request("GET", sa_url, headers=sa_headers, params=sa_querystring) +def get_args(): + parser = argparse.ArgumentParser(description='Search movie streaming availability.') + parser.add_argument('--year', type=int, help='Specify movie release year') + return parser.parse_args() -if sa_request.status_code == 404: - print("I'm having trouble finding that movie. Check your spelling and try again.") - exit() +def tmdb_lookup(tmdb_url, tmdb_headers, tmdb_params): + tmdb_search = requests.get(f"{tmdb_url}/search/movie", params=tmdb_params, headers=tmdb_headers).json() -sa_response = sa_request.json() + if not tmdb_search["results"]: + print("I'm having trouble finding that movie. Check your spelling and try again.") + exit() + + movie_id = tmdb_search['results'][0]['id'] + movie_title = tmdb_search['results'][0]['title'] + movie_release_check = tmdb_search['results'][0]['release_date'] + + if movie_release_check: + movie_release = datetime.strptime(tmdb_search['results'][0]['release_date'], "%Y-%m-%d") + else: movie_release = "???" + + movie_rating = tmdb_search['results'][0]['vote_average'] + + return movie_id,movie_title,movie_release,movie_rating + + +def sa_lookup(sa_url, sa_headers, movie_id): + sa_querystring = {"country":"us","tmdb_id":f"movie/{movie_id}","output_language":"en"} + sa_request = requests.request("GET", sa_url, headers=sa_headers, params=sa_querystring) + + + if sa_request.status_code == 404: + print("I'm having trouble finding that movie. Check your spelling and try again.") + exit() + + sa_response = sa_request.json() + services = sa_response["streamingInfo"] + + return sa_response, services -services = sa_response["streamingInfo"] def services_speller(service): if service == "hbo": @@ -80,17 +83,45 @@ def services_speller(service): else: return service return service_proper - -print(movie_tile + f" ({movie_release.year})") -print(f"Rating: {movie_rating}") -if not services: - print("Streaming not available :(") -for s in services: - leaving_epoch = sa_response["streamingInfo"][s]["us"]["leaving"] - leaving_date = datetime.fromtimestamp(int(leaving_epoch)).strftime('%Y-%m-%d') - link = sa_response["streamingInfo"][s]["us"]["link"] - print(f"Available on {services_speller(s)}") - if leaving_epoch != 0: - print(f"Will be leaving {s} on {leaving_date}") - print(f"Watch here: {link}") \ No newline at end of file + +def main(): + + args = get_args() + movie = input("Enter a movie: ") + movie_safe = urllib.parse.quote_plus(movie) + + tmdb_params = { + "language": "en-US", + "query": movie_safe, + "page": 1, + "include_adult": False + } + + if args.year: + tmdb_params["primary_release_year"] = args.year + + movie_id, movie_title, movie_release, movie_rating = tmdb_lookup(tmdb_url, tmdb_headers, tmdb_params) + + print(movie_title + f" ({movie_release.year})") + print(f"Rating: {movie_rating}\n") + + sa_response, services = sa_lookup(sa_url, sa_headers, movie_id) + + if not services: + print("Streaming not available :(") + + for s in services: + leaving_epoch = sa_response["streamingInfo"][s]["us"]["leaving"] + leaving_date = datetime.fromtimestamp(int(leaving_epoch)).strftime('%Y-%m-%d') + link = sa_response["streamingInfo"][s]["us"]["link"] + + print(f"Available on {services_speller(s)}") + + if leaving_epoch != 0: + print(f"Will be leaving on {leaving_date}") + + print(f"Watch here: {link}\n") + +if __name__ == "__main__": + main() \ No newline at end of file