Project for HackUPC using the skyscanner API
Virtualenv
helps establish an isolated Python environment.
The environment separates project-specific dependencies and their versions from the Python modules installed locally.
virtualenv -p python3 venv
This creates a virtual environment called venv
.
To run the virtual environment, run the following:
source venv/bin/activate
The following command line prompt will indicate that you’re in the virtual environment:
(venv) >
To deactivate the virtual environment, run the following:
deactivate
At the root of directory of this project, run:
pip install -r src/requirements.txt
Here is the file structure of the directory ./src
.
├── config.py
├── requirements.txt
├── run.py
└── flight
├── __init__.py
├── models.py
└── routes.py
config.py
defines the configuration for the Flask app to run with.requirements.txt
outlines the initial module dependencies of the apprun.py
is the run script for the Flask appflight/__init__.py
defines the Flask app instance.flight/models.py
is where you should define the models of your application.flight/routes.py
defines all the routes (a.k.a. endpoints) that users will be able to interact with in order to check for flights.
Get Request
http://partners.api.skyscanner.net/apiservices/browseroutes/v1.0/UK/GBP/en-GG/BCN-sky/MAN-sky/2018-11-21/2018-11-21?apiKey=ha158486926168541326868639329158
e.g.
http://0.0.0.0:5000/flight/UK/GBP/en-GG/BCN-sky/MAN-sky/2018-11-21/2018-11-21?apiKey=ha158486926168541326868639329158&adults=1&children=0&infants=0&cabinClass=economy&minLayover=200
Response
{
"arriveAt": "MAN-sky",
"departFrom": "BCN-sky",
"flightsInfo": [
{
"arrivalDate": "2018-11-21T16:45:00",
"bestPrice": 1088.03,
"deeplinkUrl": "http://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=Wa3rESSDeivD%2bgLXwmvBVxMjrxY4fRDbWgPSM81Xhyg%2b26qU8rMuHA%2bq9cLv1kvW&url=https%3a%2f%2fwww.skyscanner.net%2ftransport_deeplink%2f4.0%2fUK%2fen-GB%2fGBP%2fgtuk%2f1%2f9772.13880.2018-11-21%2fair%2ftrava%2fflights%3fitinerary%3dflight%7c-32478%7c3696%7c9772%7c2018-11-21T09%3a45%7c10141%7c2018-11-21T11%3a55%7c130%7c-%7c-%7c-%3bflight%7c-32492%7c6177%7c10141%7c2018-11-21T16%3a25%7c13880%7c2018-11-21T16%3a45%7c80%7c-%7c-%7c-%26carriers%3d-32478%2c-32492%26operators%3d-32478%3b-32478%26passengers%3d1%26channel%3ddataapi%26cabin_class%3deconomy%26facilitated%3dfalse%26ticket_price%3d1088.03%26is_npt%3dfalse%26is_multipart%3dfalse%26client_id%3dskyscanner_b2b%26deeplink_ids%3deu-west-1.prod_101ee0a97d39bba136a18c62de392a01%26commercial_filters%3dfalse%26q_datetime_utc%3d2018-10-20T14%3a03%3a00",
"departureDate": "2018-11-21T09:45:00",
"layoverAt": "Brussels International",
"layoverLength": 270
},
{
"arrivalDate": "2018-11-21T18:15:00",
"bestPrice": 94.01,
"deeplinkUrl": "http://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=Wa3rESSDeivD%2bgLXwmvBVxMjrxY4fRDbWgPSM81Xhyg%2b26qU8rMuHA%2bq9cLv1kvW&url=https%3a%2f%2fwww.skyscanner.net%2ftransport_deeplink%2f4.0%2fUK%2fen-GB%2fGBP%2fdhop%2f1%2f9772.13880.2018-11-21%2fair%2ftrava%2fflights%3fitinerary%3dflight%7c-32332%7c9441%7c9772%7c2018-11-21T09%3a35%7c11165%7c2018-11-21T11%3a55%7c140%7c-%7c-%7c-%3bflight%7c-32302%7c7216%7c11165%7c2018-11-21T17%3a30%7c13880%7c2018-11-21T18%3a15%7c105%7c-%7c-%7c-%26carriers%3d-32332%2c-32302%26operators%3d-32332%3b-32302%26passengers%3d1%26channel%3ddataapi%26cabin_class%3deconomy%26facilitated%3dfalse%26ticket_price%3d94.01%26is_npt%3dfalse%26is_multipart%3dfalse%26client_id%3dskyscanner_b2b%26deeplink_ids%3deu-west-1.prod_26045a6840c392012532eda23221ee96%26commercial_filters%3dfalse%26q_datetime_utc%3d2018-10-20T14%3a03%3a00",
"departureDate": "2018-11-21T09:35:00",
"layoverAt": "Dusseldorf International",
"layoverLength": 335
}
]
}
GET Suggest
http://0.0.0.0:5000/suggest/{country}/{currency}/{locale}?query={query}&api={apiKey}
e.g.
http://0.0.0.0:5000/suggest/UK/GBP/EN?query=fr&api=ha158486926168541326868639329158
Response
{
"suggestions": [
{
"PlaceId": "FR-sky",
"PlaceName": "France"
},
{
"PlaceId": "FRAN-sky",
"PlaceName": "Frankfurt"
}
]
}
GET Weather
http://0.0.0.0:5000/weather/{airport}/{date}
e.g.
http://0.0.0.0:5000/weather/BCN-sky/2018-11-21T16:45:00
Response
{
"apparentTemperature": 14.56,
"cloudCover": 0.5,
"cloudCoverError": 0.11,
"dewPoint": 8.25,
"humidity": 0.66,
"icon": "partly-cloudy-day",
"precipType": "rain",
"pressure": 1017.33,
"pressureError": 64.5,
"summary": "Partly Cloudy",
"temperature": 14.56,
"temperatureError": 3.11,
"time": 1542815100,
"uvIndex": 0,
"windBearing": 250,
"windBearingError": 75.28,
"windSpeed": 0.92,
"windSpeedError": 3.51
}