From cbaec1a4e73c1dc6a684e8ac9f5fb0faddd1395a Mon Sep 17 00:00:00 2001 From: Ray Lyon Date: Sun, 20 Feb 2022 13:47:39 -0500 Subject: [PATCH] -removed unnecessary loop -error handling for unknown year -error handling for 404 -optional --year argument --- streaming-check/movie_check.py | 60 +++++++++++++++++++++++----------- 1 file changed, 41 insertions(+), 19 deletions(-) diff --git a/streaming-check/movie_check.py b/streaming-check/movie_check.py index 240192c..8cdb1a2 100644 --- a/streaming-check/movie_check.py +++ b/streaming-check/movie_check.py @@ -4,6 +4,12 @@ import requests import urllib 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") @@ -21,10 +27,14 @@ sa_headers = { 'x-rapidapi-key': sa_api_token } +args = get_args() movie = input("Enter a movie: ") movie_safe = urllib.parse.quote_plus(movie) -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 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.") @@ -32,43 +42,55 @@ if not tmdb_search["results"]: movie_id = tmdb_search['results'][0]['id'] movie_tile = tmdb_search['results'][0]['title'] -movie_release = datetime.strptime(tmdb_search['results'][0]['release_date'], "%Y-%m-%d") +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_response = requests.request("GET", sa_url, headers=sa_headers, params=sa_querystring).json() +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"] def services_speller(service): if service == "hbo": service_proper = "HBO Max" - if service == "hulu": + elif service == "hulu": service_proper = "Hulu" - if service == "prime": + elif service == "prime": service_proper = "Amazon Prime" - if service == "netflix": + elif service == "netflix": service_proper = "Netflix" - if service == "disney": + elif service == "disney": service_proper = "Disney+" - if service == "apple": + elif service == "apple": service_proper = "Apple TV+" + elif service == "paramount": + service_proper = "Paramount+" + 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: - countries = sa_response["streamingInfo"][s] - for c in countries: - leaving_epoch = sa_response["streamingInfo"][s][c]["leaving"] - leaving_date = datetime.fromtimestamp(int(leaving_epoch)).strftime('%Y-%m-%d') - link = sa_response["streamingInfo"][s][c]["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 + 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