Python Forum
Export to csv instead of json
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Export to csv instead of json
#1
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
Reply


Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020