-
-
Save TheMuellenator/4d730d38818d935a9ce4ad9d7a817138 to your computer and use it in GitHub Desktop.
class FlightData: | |
def __init__(self, price, origin_city, origin_airport, destination_city, destination_airport, out_date, return_date): | |
self.price = price | |
self.origin_city = origin_city | |
self.origin_airport = origin_airport | |
self.destination_city = destination_city | |
self.destination_airport = destination_airport | |
self.out_date = out_date | |
self.return_date = return_date |
import requests | |
from flight_data import FlightData | |
TEQUILA_ENDPOINT = "https://tequila-api.kiwi.com" | |
TEQUILA_API_KEY = YOUR FLIGHT SEARCH API KEY | |
class FlightSearch: | |
def get_destination_code(self, city_name): | |
location_endpoint = f"{TEQUILA_ENDPOINT}/locations/query" | |
headers = {"apikey": TEQUILA_API_KEY} | |
query = {"term": city_name, "location_types": "city"} | |
response = requests.get(url=location_endpoint, headers=headers, params=query) | |
results = response.json()["locations"] | |
code = results[0]["code"] | |
return code | |
def check_flights(self, origin_city_code, destination_city_code, from_time, to_time): | |
headers = {"apikey": TEQUILA_API_KEY} | |
query = { | |
"fly_from": origin_city_code, | |
"fly_to": destination_city_code, | |
"date_from": from_time.strftime("%d/%m/%Y"), | |
"date_to": to_time.strftime("%d/%m/%Y"), | |
"nights_in_dst_from": 7, | |
"nights_in_dst_to": 28, | |
"one_for_city": 1, | |
"max_stopovers": 0, | |
"curr": "GBP" | |
} | |
response = requests.get( | |
url=f"{TEQUILA_ENDPOINT}/v2/search", | |
headers=headers, | |
params=query, | |
) | |
try: | |
data = response.json()["data"][0] | |
except IndexError: | |
print(f"No flights found for {destination_city_code}.") | |
return None | |
flight_data = FlightData( | |
price=data["price"], | |
origin_city=data["route"][0]["cityFrom"], | |
origin_airport=data["route"][0]["flyFrom"], | |
destination_city=data["route"][0]["cityTo"], | |
destination_airport=data["route"][0]["flyTo"], | |
out_date=data["route"][0]["local_departure"].split("T")[0], | |
return_date=data["route"][1]["local_departure"].split("T")[0] | |
) | |
print(f"{flight_data.destination_city}: £{flight_data.price}") | |
return flight_data |
from datetime import datetime, timedelta | |
from data_manager import DataManager | |
from flight_search import FlightSearch | |
data_manager = DataManager() | |
sheet_data = data_manager.get_destination_data() | |
flight_search = FlightSearch() | |
ORIGIN_CITY_IATA = "LON" | |
if sheet_data[0]["iataCode"] == "": | |
for row in sheet_data: | |
row["iataCode"] = flight_search.get_destination_code(row["city"]) | |
data_manager.destination_data = sheet_data | |
data_manager.update_destination_codes() | |
tomorrow = datetime.now() + timedelta(days=1) | |
six_month_from_today = datetime.now() + timedelta(days=(6 * 30)) | |
for destination in sheet_data: | |
flight = flight_search.check_flights( | |
ORIGIN_CITY_IATA, | |
destination["iataCode"], | |
from_time=tomorrow, | |
to_time=six_month_from_today | |
) |
there is no registration option in kiwi website i think they ditched free plan or am i doing something wrong? Anyone else experienced? is there an alternative?
current API "https://tequila-api.kiwi.com/v2/search" appears not to be free any longer This is the second API where I am getting the following error from some of the examples {"error_code":403,"message":"You don't have permission to access this resource"} event form the web site API that is the error I was also getting. Location to get code still worked.
Which is the second Api you are using for iata codes?
if i run the program through amendeus and sheety api the code is throws an error i have modified the API instead of Kiwi I used Amanda's flight files API because I'm not able to create the account in Kiwi I don't know the service will be stopped currently so if you guys have same error like me you are facing same error like me just let me know know i will attach this error and the ctepa if you add the another sheet it gives payment required error not able to complete this current project anyone facing same issues like me or some one found different api provider to build this just let me know.
I also get error 403 for fetching flight prices (via search api), altough the part of my code that gets iata codes (via locations api) works. How can I solve this?