Python Forum

Full Version: Export to csv instead of json
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Below python scripts gives response in json format. How can alter code to export response in csv format instead of json?

import requests
import datetime
import time
import json

base_url = "https://api.people.ai/pull/v1/export/activities"

def getAccessToken(client_id, client_secret):
    response = requests.post("https://api.people.ai/auth/v1/tokens",
                             data={"client_id": client_id,
                                   "client_secret": client_secret})

    if response.status_code != 200:
        raise RuntimeError(response.text)

    token_data = response.json()
    access_token = token_data["access_token"]
    
    return access_token

def get(url):
    response = requests.get(url if url.startswith("https") else base_url + url, headers = {
        "Authorization": "Bearer " + access_token,
    })
    
    if response.status_code != 200:
        raise RuntimeError(response.text)

    data = response.json()

    return data

def post(url, data):
    response = requests.post(url if url.startswith("https") else base_url + url, headers = {
        "Authorization": "Bearer " + access_token,
        'Content-Type': 'application/json'
    }, data=json.dumps(data))

    if response.status_code != 200:
        raise RuntimeError(response.text)

    data = response.json()
        
    return data

def get_state(id):
    return get("/jobs/{}".format(id))["state"]

def pretty_print(data):
    print(json.dumps(data, indent=4))

if __name__ == '__main__':

    client_id = '#######'
    client_secret = '########'
    
    access_token = getAccessToken(client_id, client_secret)

    job = post("/jobs", {
            "start_date": "2019-10-01",
            "end_date": "2019-10-01",
            "activity_type": "Email",  # Email, Meeting, Call, All
            "export_type": "Snapshot",    # Delta or Snapshot
            "output_format": "JSONLines",  # JSONLines or JSON
    })
    print('Job started...')
    pretty_print(job)

    job_id = job['job_id']
    state = get_state(job_id)

    print('Waiting for job {}...'.format(job_id))

    while state == "Running" or state == 'Queued':
        state = get_state(job_id)
        print(str(datetime.datetime.now()) + ": State: " + state)
        time.sleep(20)

    if get_state(job_id) == 'Completed':  
        print("Job summary...")
        pretty_print(get("/jobs/{}".format(job_id)))

    print("Fetching data...")
    response = requests.get(base_url + "/jobs/{}/data".format(job_id), 
    headers = {
        "Authorization": "Bearer " + access_token,
    })

    data = response.text.split('\n')

    for i in range(len(data)-1):
        pretty_print(json.loads(data[i]))

Thanks micseydel