61 lines
1.6 KiB
Python
61 lines
1.6 KiB
Python
import requests
|
|
import Apikeys
|
|
import pandas as pd
|
|
|
|
BASEURL = "https://api.northpass.com/v2/"
|
|
APIKEY = Apikeys.SKAN
|
|
HEADERS = {"X-Api-Key": APIKEY, "accept": "application/json"}
|
|
|
|
LISTGROUPS = "groups/"
|
|
FINALDICT = {}
|
|
|
|
|
|
def get_groups():
|
|
count = 0
|
|
groups_list = []
|
|
while True:
|
|
count += 1
|
|
groupsurl = f"{BASEURL}{LISTGROUPS}?limit=100&page={count}"
|
|
groupsreq = requests.get(groupsurl, headers=HEADERS)
|
|
groupson = groupsreq.json()
|
|
nextlink = groupson["links"]
|
|
|
|
for grous in groupson["data"]:
|
|
grouple = (grous["id"], grous["attributes"]["name"])
|
|
groups_list.append(grouple)
|
|
|
|
if "next" not in nextlink:
|
|
break
|
|
|
|
get_memberships(groups_list)
|
|
|
|
|
|
def get_memberships(groups_list):
|
|
for gids, ginames in groups_list:
|
|
count2 = 0
|
|
members_list = []
|
|
while True:
|
|
count2 += 1
|
|
group_uuid = gids
|
|
LISTMEMBERS = f"{group_uuid}/memberships"
|
|
membersurl = f"{BASEURL}{LISTGROUPS}{LISTMEMBERS}?limit=100&page={count2}"
|
|
memreq = requests.get(membersurl, headers=HEADERS)
|
|
members = memreq.json()
|
|
nextlink = members["links"]
|
|
|
|
for person in members["included"]:
|
|
email = person["attributes"]["email"]
|
|
members_list.append(email)
|
|
|
|
if "next" not in nextlink:
|
|
break
|
|
FINALDICT[ginames] = members_list
|
|
|
|
df = pd.DataFrame.from_dict(FINALDICT, orient='index')
|
|
print(df)
|
|
df.to_csv("~/Downloads/Skan_Groups_Members.csv")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
get_groups()
|