Skip to content

Instantly share code, notes, and snippets.

@chriswhong
Created July 7, 2021 20:57
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save chriswhong/65c164a6b3afe013f4a3f62ef6da5d04 to your computer and use it in GitHub Desktop.
Save chriswhong/65c164a6b3afe013f4a3f62ef6da5d04 to your computer and use it in GitHub Desktop.
qri transform for storing mta elevator statuses
load("encoding/csv.star", "csv")
load("encoding/json.star", "json")
load("http.star", "http")
def download(ctx):
# send an http get request to the elevator outages page
raw = http.get('https://traintime.lirr.org/api/ElevEsc?api_key=dwrxfpcsp42pcwxfbpd90zde5fjeb05pcdaqjw3j').body()
data = json.loads(raw)
stations = data['Stations']
stationKeys = stations.keys()
# shape the data into an array of arrays
csvData = [['station', 'type', 'location', 'status' ]]
for key in stationKeys:
stationData = stations[key]
if 'elevator' in stationData:
for elevatorRecord in stationData['elevator']:
csvData.append([key, 'elevator', elevatorRecord['LOC'], elevatorRecord['STAT']])
if 'escalator' in stationData:
for elevatorRecord in stationData['escalator']:
csvData.append([key, 'escalator', elevatorRecord['LOC'], elevatorRecord['STAT']])
return csvData
# print('%s' % csvData)
# print('%s' % stationKeys)
# set the body
def transform(ds, ctx):
# ctx.download is whatever download() returned
csvData = ctx.download
# set the dataset body
print('%s' % csvData)
ds.set_body(csv.write_all(csvData,comma=","), parse_as='csv')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment