#!/usr/bin/env python3 import requests import json print("Searching for Culver's locations") response = requests.get('https://hosted.where2getit.com/lite?action=getstategeojsonmap&appkey=EC84928C-9C0B-11E4-B999-D8F4B845EC6E').json() stores = [] state_names = {} for f in response['states']['features']: state_names[f['properties']['name']] = f['properties']['regiondesc'] for s in response['labels']['features']: if s['properties']['num_stores'] > 0: state = s['properties']['name'] print(f"Searching {state}...", end="") json_data = { 'request': { 'appkey': '1099682E-D719-11E6-A0C4-347BDEB8F1E5', 'formdata': { 'geolocs': { 'geoloc': [ { 'addressline': state, 'state': state_names[state], }, ], }, 'stateonly': 1, }, }, } response = requests.post('https://hosted.where2getit.com/culvers/rest/locatorsearch', json=json_data) count = 0 for store in response.json()['response']['collection']: # I tried a bunch of other things and this is the only one that matched :facepalm: if "coming soon" in store['name'].lower(): # store['comingsoondate']: # not store['dine_in'] and not store['takeout']: # not store['opendate']: # store['comingsoondate']: # print(f"{store['name']} not yet open") continue stores.append({ "type": "Feature", "geometry": { "type": "Point", "coordinates": [float(store['longitude']), float(store['latitude'])], # yes, [lon, lat] since it's [x, y] }, "properties": { 'address': store['address1'], 'city': store['city'], 'state': store['state'], 'zip': store['postalcode'], 'website': store['url'], }, }) count += 1 print(count) if not count == s['properties']['num_stores']: print(f"Inequal for {state}: {count} != {s['properties']['num_stores']}") print(f"""{len(stores)} locations found""") geojson = { "type": "FeatureCollection", "features": stores, } with open("culvers-data.geojson", "w") as f: f.write(json.dumps(geojson))