import Apikeys import requests import pprint import csv import pandas as pd pp = pprint.PrettyPrinter(indent=4) APIKEY = Apikeys.ANTHOLOGY HEADERS = { "accept": "application/json", "X-Api-Key": APIKEY, } BASEURL = "https://api.northpass.com/v2/" GROUPS = [ "Accreditation", "Anthology 101", "Baseline", "Course Evaluations", "Engage", "Evaluate", "Finance & HCM", "Learn", "Portfolio", "Power BI", "Raise", "Reach", "Student", ] def group_ids(): """ Get the group Ids from a list of named groups. """ url = "groups" df = pd.DataFrame() count = 0 courses = [] ids = [] for group in GROUPS: filter = f"?filter[name][cont]={group} - (" urlreq = f"{BASEURL}{url}{filter}" response = requests.get(urlreq, headers=HEADERS) response = response.json() for data in response["data"]: group = data["attributes"]["name"] id1 = data["id"] group_tupe = (id1, group) ids.append(group_tupe) for tupe in ids: count += 1 id = tupe[0] group = tupe[1] url2 = f"groups/{id}/courses?limit=100?page={count}" courseurl = f"{BASEURL}{url2}" coursereq = requests.get(courseurl, headers=HEADERS) coursedata = coursereq.json() for cdata in coursedata["included"]: if cdata["attributes"]["status"] == "live": name = cdata["attributes"]["name"] courseid = cdata["attributes"]["share_course_link"].split("/")[5] enrollments = cdata["attributes"]["enrollments_count"] created = cdata["attributes"]["created_at"] updated = cdata["attributes"]["updated_at"] coursedict = { "group": group, "name": name, "id": courseid, "enrollments": enrollments, "created at": created, "updated at": updated, } courses.append(coursedict) pddata = df.from_records(courses) pddata.to_csv("~/Downloads/Anthology_Course_IDs_Names.csv") if __name__ == "__main__": group_ids()