58 lines
2.3 KiB
Python
58 lines
2.3 KiB
Python
from amadeus import Client, Location, ResponseError
|
|
|
|
def filter_other_countries(airports):
|
|
country_codes_wights = {}
|
|
for airport in airports:
|
|
country_code = airport["address"]["countryCode"]
|
|
country_codes_wights[country_code] = country_codes_wights.get(country_code, 0) + 1
|
|
country_code = max(country_codes_wights, key=country_codes_wights.get)
|
|
return [airport for airport in airports if airport["address"]["countryCode"] == country_code]
|
|
|
|
|
|
class TravelAPI:
|
|
def __init__(self, client_id, client_secret):
|
|
self.client = Client(client_id=client_id, client_secret=client_secret)
|
|
|
|
def get_airport(self, search):
|
|
try:
|
|
airport_locations = self.client.reference_data.locations.get(
|
|
keyword=search,
|
|
subType=Location.AIRPORT,
|
|
)
|
|
return filter_other_countries(airport_locations.data)
|
|
except ResponseError as e:
|
|
print(f"Amadeus API ResponseError in get_airport: {e}")
|
|
return []
|
|
except Exception as e:
|
|
print(f"Unexpected error in get_airport: {e}")
|
|
return []
|
|
|
|
def get_city(self, search, country_code="IT"):
|
|
try:
|
|
city_locations = self.client.reference_data.locations.get(
|
|
keyword=search,
|
|
subType=Location.CITY,
|
|
countryCode=country_code
|
|
)
|
|
return city_locations.data
|
|
except ResponseError as e:
|
|
print(f"Amadeus API ResponseError in get_city: {e}")
|
|
return []
|
|
except Exception as e:
|
|
print(f"Unexpected error in get_city: {e}")
|
|
return []
|
|
|
|
def get_flight(self, origin_location_code, destination_location_code, departure_date, adults=1):
|
|
try:
|
|
offers = self.client.shopping.flight_offers_search.get(
|
|
originLocationCode=origin_location_code,
|
|
destinationLocationCode=destination_location_code,
|
|
departureDate=departure_date,
|
|
adults=adults)
|
|
return offers.data
|
|
except ResponseError as e:
|
|
print(f"Amadeus API ResponseError in get_flight: {e}")
|
|
return []
|
|
except Exception as e:
|
|
print(f"Unexpected error in get_flight: {e}")
|
|
return [] |