프로젝트 후기
코드를 최대한 깔끔하게 쓰기 위해 파이썬의 OOP장점을 살리고 싶었다.
하지만 클래스와 메소드를 생성하면서 솔직히 머릿속은 너무 복잡해져서 한동안 고생했던 프로젝트이다.
또한, API 사이트의 문서들이 영어로 도배되어있어 이해하는데 오래걸렸다.
매번 새로운 프로젝트를 접할 때마다 쉽지 않은거 같다.
프로젝트 설명
City | IATA Code | Lowest Price |
---|---|---|
Paris | 1000000 | |
Berlin | 60000 | |
Tokyo | 766000 | |
Sydney | 870000 | |
Istanbul | 150000 | |
Kuala Lumpur | 650000 | |
New York | 379000 | |
San Francisco | 400000 | |
Cape Town | 600000 |
City | IATA Code | Lowest Price |
---|---|---|
Paris | PAR | 1000000 |
Berlin | BER | 60000 |
Tokyo | TYO | 766000 |
Sydney | SYD | 870000 |
Istanbul | IST | 150000 |
Kuala Lumpur | KUL | 650000 |
New York | NYC | 379000 |
San Francisco | SFO | 400000 |
Cape Town | CPT | 600000 |
TEQUILA API를 활용하여 목적지로 향하는 최저가 항공권 검색
구글 시트의 Lowest Price보다 저렴할 경우 twilio API를 활용해 문자 발송
결과 화면
from data_manager import DataManager
from flight_search import FlightSearch
from flight_data import FlightData
from notification_manager import NotificationManager
notification_manager = NotificationManager()
data_manager = DataManager()
flight_search = FlightSearch()
# main 파일에 구글 시트 데이터 동기화
sheet_data = data_manager.get_sheet_data()
# 만약 IATA코드가 비어있다면if sheet_data[0]["iataCode"] == "" :
# flight_serach의 get_destination_code메소드로 IATA코드 가져오기for row in sheet_data :
row["iataCode"] = flight_search.get_destination_code(row["city"])
# main 파일의 구글 시트 내용을 data_manager의 destination_data와 동기화
data_manager.destination_data = sheet_data
# 구글 시트에 업데이트
data_manager.update_destination_code()
for row in sheet_data :
try :
# TEQUILA API를 통해 가져온 값
ticket = flight_search.search_ticket(row["iataCode"])
price = ticket["data"][0]["price"]
departure_iata = ticket["data"][0]["cityCodeFrom"]
departure_city = ticket["data"][0]["cityFrom"]
destination_city = ticket["data"][0]["cityTo"]
destination_iata = ticket["data"][0]["cityCodeTo"]
local_arrival = ticket["data"][0]["local_arrival"]
local_departure = ticket["data"][0]["local_departure"]
# flight_data로 정보 전달
flight_data = FlightData(price,departure_city,destination_city,departure_iata,destination_iata,local_arrival,local_departure)
print(f"{flight_data.destination_city} : ${flight_data.price} won")
# 만약 구글시트의 최저가보다 검색한 가격이 싸다면if flight_data.price < row["lowestPrice"] :
# 트윌리오를 통해 메세지 발송
notification_manager.send_sms(price,departure_city,destination_city,departure_iata,destination_iata,local_arrival,local_departure)
except IndexError :
# 항공 티켓을 찾지 못할 경우 예외 잡기print(f"{flight_data.destination_city}로 향하는 티켓을 검색하지 못했습니다.")
구글 시트 매니저.py