Python Forum

Full Version: How to return the next page from json recursively?
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
I have an api that returns me a json of 5 out of 5 data, for example. In the example I have an output with 9 data. And in the json it gives me a nextBatchToken token which when added to the parameter returns me the next page of the json. I want to save the final.json with the 9 data at once.

I have the following output:
"data": {
"totalCount": 9,
"detections": [
    {
        "source": "detection",
        "uuid": "6122200f",
        "detectionTime": "2022-03-27T01:32:41Z",
        "ingestionTime": "2022-03-27T01:45:34Z",
        "filters": [...]
},
"nextBatchToken": "TOKEN"
}
}
My code:
import requests, json
import datetime, time
archive = open("final.json", "w")
with archive as finaljson:
    date_time_start = datetime.datetime(2022, 3, 26, 21, 00, 00)
    date_time_end = datetime.datetime(2022, 3, 27, 9, 00, 00)
    start = int((time.mktime(date_time_start.timetuple())))
    end = int((time.mktime(date_time_end.timetuple())))
    # response = json.dumps(r.text)
    url_base = 'URL'
    url_path = '/PATH'
    token = 'MY_YOKEN'
    nextBatchToken = ''
    query_params = {
        'nextBatchToken': nextBatchToken,
        'end': end,
        'size': '5',
        'start': start,
        'riskLevels':'critical'
        }
    headers = {'Authorization': 'Bearer ' + token, 'Content-Type': 'application/json;charset=utf-8'}
    response = requests.get(url_base + url_path, params=query_params, headers=headers)
    # archive = response.text
    decodedResponse = json.loads(response.text)
    # decodedResponse = json.dumps(response.json())
    r = decodedResponse['data']
    count = r['totalCount']
    json.dump(response.json(), archive)
    for i in r:
        nextBatchToken = r['nextBatchToken']
        if 'nextBatchToken' in r:
            print('nextBatchToken') #I add the variable here, oculting
            nextBatchToken = r['nextBatchToken']
        else:
            print('cabo')
archive.close()
I tried to make an increment shape but I can't send the json response to the variable and print the next page on this for but no success...

In the output of the file, instead of leaving the token at least once (I changed it for example), it is leaving 4 times and does not add to the parameter.

The json only exits with 5 and the nextBachToken included.
Output:
C:\Users\Sandson\Desktop λ python vai.py MY_TOKEN MY_TOKEN MY_TOKEN MY_TOKEN
The idea is to take the skiptoken, access the next page of the json and save it in csv.
In larger json, I have to do it manually and it's tedious.