-
Notifications
You must be signed in to change notification settings - Fork 345
Expand file tree
/
Copy pathcomplex_flight_search.py
More file actions
64 lines (54 loc) · 2.03 KB
/
Copy pathcomplex_flight_search.py
File metadata and controls
64 lines (54 loc) · 2.03 KB
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#!/usr/bin/env python3
"""Complex flight search with multiple filters.
This example demonstrates how to search for flights with detailed filters
including airlines, duration limits, and layover restrictions.
"""
from fli.models import (
Airline,
Airport,
FlightSearchFilters,
FlightSegment,
LayoverRestrictions,
MaxStops,
PassengerInfo,
SeatType,
TripType,
)
from fli.search import SearchFlights
def main():
from datetime import datetime, timedelta
# Create detailed filters
filters = FlightSearchFilters(
trip_type=TripType.ONE_WAY,
passenger_info=PassengerInfo(adults=2, children=1, infants_on_lap=1),
flight_segments=[
FlightSegment(
departure_airport=[[Airport.JFK, 0]],
arrival_airport=[[Airport.LHR, 0]],
travel_date=(datetime.now() + timedelta(days=30)).strftime("%Y-%m-%d"),
)
],
seat_type=SeatType.BUSINESS,
stops=MaxStops.ONE_STOP_OR_FEWER,
airlines=[Airline.BA, Airline.VS], # British Airways and Virgin Atlantic
max_duration=720, # 12 hours in minutes
layover_restrictions=LayoverRestrictions(
airports=[Airport.BOS, Airport.ORD], # Prefer these layover airports
max_duration=180, # Maximum 3-hour layover
),
)
search = SearchFlights()
results = search.search(filters)
print(f"Found {len(results)} flights:")
for i, flight in enumerate(results, 1):
print(f"\n--- Flight {i} ---")
print(f"Price: ${flight.price}")
print(f"Duration: {flight.duration} minutes")
print(f"Stops: {flight.stops}")
for j, leg in enumerate(flight.legs, 1):
print(f"\nLeg {j}: {leg.airline.value} {leg.flight_number}")
print(f" From: {leg.departure_airport.value} at {leg.departure_datetime}")
print(f" To: {leg.arrival_airport.value} at {leg.arrival_datetime}")
print(f" Duration: {leg.duration} minutes")
if __name__ == "__main__":
main()