#!/usr/bin/python3 import requests import json query={ "columns": [ # no clue what any of this is, so here it stays { "data": None, "name": "", }, { "name": "sortId", "s": True, }, { "name": "region", "s": True, }, { "name": "county", "s": True, }, { "name": "roadway", "s": True, }, { "name": "description1", }, { "data": 6, "name": "", }, ], "start": 0, "length": 100, } cameras = [] available_cameras = 999_999 # lots while len(cameras) < available_cameras: res = requests.get("https://511wi.gov/List/GetData/Cameras", { "query": json.dumps(query), "lang": "en", }) res.raise_for_status() res = res.json() available_cameras = res['recordsTotal'] for c in res['data']: cameras.append({ "type": "Feature", "geometry": { "type": "Point", "coordinates": [c['longitude'], c['latitude']], # yes, [lon, lat] since it's [x, y] }, "properties": { 'address': c['displayName'], 'website': c['videoUrl'], 'originalData': c, }, }) query['start'] += 100 geojson = { "type": "FeatureCollection", "features": cameras, } with open("data.geojson", "w") as f: f.write(json.dumps(geojson)) print(f"{len(cameras)} locations found")