I am working on generating a XML report from API querying and I am hoping to get some guidance in limiting the number of iterations in "for loop".
Here is the code I've written so far:
import json
import os
import requests
dserviceIP = "10.50.110.80"
apiPort = "60000"
busName_ST = ("ST1", "ST2", "ST3", "ST4", "ST5", "ST6", "ST7", "ST8", "ST9", "ST10")
buses_ST = ("33", "34", "35", "36", "37", "38", "39", "40", "41", "42")
listNumberOfEvents = "5" # Number of events to query in the list of schedules (Buses)
sessionID = "s12345"
def getSchedule():
for bus in buses_ST:
scheduleUrl = f"http://{dserviceIP}:{apiPort}/test/buses/{bus}/schedule?session={sessionID}"
requestSchedule = requests.get(scheduleUrl)
jsonRequestSchedule = json.loads(requestSchedule.text)
scheduleID = []
for scheduleIdList in jsonRequestSchedule['events']:
scheduleID.append(scheduleIdList['id'])
for eventID in scheduleID:
eventUrl = f"http://{dserviceIP}:{apiPort}/test/buses/{bus}/events/{eventID}?session={sessionID}"
example of response from requestSchedule = requests.get(scheduleUrl) , from the response I'm hoping to only extract the first 5 id to use it as the next part of my API HTTP query. see eventID
{
"busid": "response_example",
"events": [
{
"id": "X002"
},
{
"id": "X004"
},
{
"id": "X006"
},
{
"id": "X008"
},
{
"id": "X0010"
},
{
"id": "X0012"
},
...
...
{
"id": "X0248"
}
]
}
expect the result of my eventUrl as
http://10.50.110.80:60000/test/buses/33/events/X002?session=s12345
http://10.50.110.80:60000/test/buses/33/events/X004?session=s12345
http://10.50.110.80:60000/test/buses/33/events/X006?session=s12345
http://10.50.110.80:60000/test/buses/33/events/X008?session=s12345
http://10.50.110.80:60000/test/buses/33/events/X010?session=s12345
http://10.50.110.80:60000/test/buses/34/events/X002?session=s12345
http://10.50.110.80:60000/test/buses/34/events/X004?session=s12345
...
http://10.50.110.80:60000/test/buses/34/events/X010?session=s12345
http://10.50.110.80:60000/test/buses/35/events/X002?session=s12345
...
Any advise in getting me through this roadblock is much appreciated.
CodePudding user response:
Use list slicing like [:5].
for event in jsonRequestSchedule['events'][:5]:
eventUrl = f"http://{dserviceIP}:{apiPort}/test/buses/{bus}/events/{event['id']}?session={sessionID}"
