Python Forum
Export to csv instead of json - Printable Version

+- Python Forum (https://python-forum.io)
+-- Forum: Python Coding (https://python-forum.io/forum-7.html)
+--- Forum: General Coding Help (https://python-forum.io/forum-8.html)
+--- Thread: Export to csv instead of json (/thread-24073.html)



Export to csv instead of json - chetansaip99 - Jan-29-2020

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