-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathflight_data.py
49 lines (38 loc) · 2.02 KB
/
flight_data.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
class FlightData:
def __init__(self, price, origin_airport, destination_airport, out_date, return_date,stops):
self.price = price
self.origin_airport = origin_airport
self.destination_airport = destination_airport
self.out_date = out_date
self.return_date = return_date
self.stops = stops
def find_cheapest_flight(data):
if data is None or not data['data']:
print("No flight data")
return FlightData(
price="N/A",
origin_airport="N/A",
destination_airport="N/A",
out_date="N/A",
return_date="N/A",
stops="N/A"
)
first_flight = data['data'][0]
lowest_price = float(first_flight["price"]["grandTotal"])
nr_stops = len(first_flight["itineraries"][0]["segments"]) - 1
origin = first_flight["itineraries"][0]["segments"][0]["departure"]["iataCode"]
destination = first_flight["itineraries"][0]["segments"][nr_stops]["arrival"]["iataCode"]
out_date = first_flight["itineraries"][0]["segments"][0]["departure"]["at"].split("T")[0]
return_date = first_flight["itineraries"][1]["segments"][0]["departure"]["at"].split("T")[0]
cheapest_flight = FlightData(lowest_price, origin, destination, out_date, return_date, nr_stops)
for flight in data["data"]:
price = float(flight["price"]["grandTotal"])
if price < lowest_price:
lowest_price = price
origin = flight["itineraries"][0]["segments"][0]["departure"]["iataCode"]
destination = flight["itineraries"][0]["segments"][nr_stops]["arrival"]["iataCode"]
out_date = flight["itineraries"][0]["segments"][0]["departure"]["at"].split("T")[0]
return_date = flight["itineraries"][1]["segments"][0]["departure"]["at"].split("T")[0]
cheapest_flight = FlightData(lowest_price, origin, destination, out_date, return_date, nr_stops)
print(f"Lowest price to {destination} is £{lowest_price}")
return cheapest_flight