Prior art: AllThePlaces' implementation:35dc669bef/locations/spiders/raising_canes_us.py35dc669bef/locations/storefinders/yext_answers.pyRequested-By: Eric Villnow
66 lines
2 KiB
Python
Executable file
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))
|