maps.chandlerswift.com/layers/chains/raising-canes/get_data.py
2025-11-29 21:38:52 -06:00

66 lines
2 KiB
Python
Executable file

#!/usr/bin/env python3
import requests
import json
print("Searching for Raising Cane's locations")
all_results = []
desired_results = 999999
while len(all_results) < desired_results:
res = requests.get("https://prod-cdn.us.yextapis.com/v2/accounts/me/search/vertical/query", params={
"experienceKey": "locator",
"api_key": "6c78315e15b82a7cccbbf3fad5db0958",
"v": "20220511",
"version": "PRODUCTION",
"locale": "en",
"verticalKey": "locations",
"filters": json.dumps({
"builtin.location": {
"$near": {
"lat": 0,
"lng": 0,
"radius": 100000000,
}
}
}),
"limit": 50,
"offset": len(all_results),
"source": "STANDARD",
})
desired_results = int(res.json()['response']['resultsCount'])
all_results.extend(res.json()['response']['results'])
print(f"Fetched {len(all_results)}/{desired_results} results…")
stores = []
for s in all_results:
stores.append({
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [float(s['data']['yextDisplayCoordinate']['longitude']), float(s['data']['yextDisplayCoordinate']['latitude'])], # yes, [lon, lat] since it's [x, y]
},
"properties": {
'name': s['data']['name'],
'nickname': s['data']['c_nickname'],
'address': s['data']['address']['line1'],
'city': s['data']['address']['city'],
'state': s['data']['address']['region'],
'zip': s['data']['address']['postalCode'],
'website': s['data']['websiteUrl'],
'opened': s['data']['c_openDate'],
'hours': s['data']['hours'],
},
})
print(f"""{len(stores)} locations found""")
geojson = {
"type": "FeatureCollection",
"features": stores,
}
with open("data.geojson", "w") as f:
f.write(json.dumps(geojson))