Skip to content

Instantly share code, notes, and snippets.

@chadmhorner
Created March 4, 2019 14:47
Show Gist options
  • Save chadmhorner/6c3bfddba499f30bf76e7efd8b22c60b to your computer and use it in GitHub Desktop.
Save chadmhorner/6c3bfddba499f30bf76e7efd8b22c60b to your computer and use it in GitHub Desktop.
from readypipe import requests, starting_task, subtask, schedule, save, open_browser
from json import loads
API_KEY = 'your_api_key_here'
BASE_URL = 'https://dev.virtualearth.net/REST/v1/Routes/driving?key=' + API_KEY + '&o=json&jsonp=Microsoft.Maps.NetworkCallbacks.f83b5e&c=en-US&fi=true&errorDetail=true&wp.0=%s&wp.1=%s&ra=routeproperties,routepath&optmz=timeWithTraffic&du=mi&tt=departure&maxSolns=3&rpo=Points'
AIRPORT_COORDINATES = {
'JFK': '40.643391,-73.781937',
'EWR': '40.692150,-74.181557',
'LGA': '40.773415,-73.870674',
}
NEIGHBORHOOD_COORDINATES = {
'Bryant Park': '40.75395,-73.98535',
'Hudson Yards': '40.75466,-74.00378',
'One World Trade': '40.71302,-74.01319',
'Long Island City': '40.75072,-73.94103',
'Downtown Brooklyn': '40.69363,-73.98288',
'West Village': '40.73214,-74.00506',
'Upper West Side': '40.78535,-73.9770',
'Upper East Side': '40.78031,-73.9666',
'Williamsburg': '40.71372,-73.95863',
'Prospect Park': '40.6790,-73.9787',
'Harlem': '40.80589,-73.95244',
}
@starting_task
def load_routes():
for airport in AIRPORT_COORDINATES.keys():
for neighborhood in NEIGHBORHOOD_COORDINATES.keys():
#schedule both ways
schedule('scrape_route', (airport, neighborhood))
schedule('scrape_route', (neighborhood, airport))
@subtask
def scrape_route(a, b):
route = BASE_URL % (COORDINATES[a], COORDINATES[b])
page = requests.get(route)
page_json = loads(page.text[40:-1])
resource_sets = page_json.get('resourceSets', [])
if len(resource_sets) > 0:
resource_sets = resource_sets[0]
resources = resource_sets.get('resources')[0]
travel_duration = resources.get('travelDuration')
travel_duration_traffic = resources.get('travelDurationTraffic')
data = {
'origin': a,
'destination': b,
'origin_coordinates': COORDINATES[a],
'destination_coordinates': COORDINATES[b],
'travel_duration_without_traffic': int(travel_duration)/60.0,
'travel_duration': int(travel_duration_traffic)/60.0,
}
save('travel_duration', data)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment