functions, better formatting

This commit is contained in:
2022-03-28 18:59:11 -04:00
parent cbaec1a4e7
commit b732735187

View File

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