import re import requests import sys from csv import DictReader #list of user to pull read_file = open("users_page\\user.csv", "r") csv_reader = DictReader(read_file) #output file sys.stdout = open("users_page\page_view_export.tsv", "w") #start and end date to pull start_time = "2025-03-01 13:45:30" end_time = "2025-04-01 13:45:30" #for each user in the user file get their page views for row in csv_reader: url1 = "https://YOUR-INSTANCE.instructure.com/api/v1/users/"+row['user_id']+"/page_views?start_time="+start_time+"&end_time="+end_time+"&as_user_id="+row['user_id'] url2 = "&per_page=100" access_token = "&access_token=YOUR_ACCESS_TOKEN" url = url1+url2+access_token payload={} headers = {} response = requests.request("GET", url, headers=headers, data=payload) paging = response.headers["Link"] links = paging.split(",") nextlink = links[1] result = re.search('<(.*)>', nextlink) PageViews = response.json() #print first page items for pagesviews in PageViews: print(pagesviews["id"], pagesviews["url"], pagesviews["created_at"], pagesviews["context_type"], pagesviews["links"]["context"], pagesviews["participated"], pagesviews["http_method"], pagesviews["controller"], pagesviews['app_name'], sep="\t") #gets each next page in pagination while 'next' in nextlink: url = result.group(1)+access_token response = requests.request("GET", url, headers=headers, data=payload) paging = response.headers["Link"] links = paging.split(",") nextlink = links[1] result = re.search('<(.*)>', nextlink) PageViews = response.json() #prints each of the items for pagesviews in PageViews: print(pagesviews["id"], pagesviews["url"], pagesviews["created_at"], pagesviews["context_type"], pagesviews["links"]["context"], pagesviews["participated"], pagesviews["http_method"], pagesviews["controller"], pagesviews['app_name'], sep="\t")