import csv import requests headers = { 'authority': 'api.swapcard.com', 'accept': '*/*', 'accept-language': 'en-US,en;q=0.9', 'authorization': 'Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb3JlQXBpVXNlcklkIjoiVlhObGNsOHhPREk0T0RZNE53PT0iLCJwZXJtaXNzaW9ucyI6W10sInNlc3Npb25JZCI6IjY1ZTA5N2Y3MzBiMGFhZmE0YWQ3Y2ZmMSIsInR5cGUiOiJhY2Nlc3MtdG9rZW4iLCJ1c2VySWQiOiI2NWM5ZDdiYzFjMTRlMDg3MDBhNGQ3ZDIiLCJpYXQiOjE3MDkyNzAyNDMsImV4cCI6MTcwOTI4NDY0MywiaXNzIjoiYXV0aC1hcGkifQ.Ir2zRlyFYK7Wo_gzi-qPAAaORxCCDapkQplGxeMruo0oYf5GkRnSTyqSDanINWQrxrbb4exlPQI-tnSgCnNSu_nxWpJUFjISZ5ORZF7kDLMLqjEf2ICrQfQT8LNeLYD4aKzwbFJHb_O0aIOXpsGvSvx_CFdZ_l2HICBwo7WN1qQOI1mVOCLllHKnMYjBSSP0O98o2KPr5BZz-hvv5wOHX3lRo4dP3Ho2f2mMLTUstFi9qd_JW7JgqMiKxbQHloD_APjMKJD338NYKRjYWZGzIrpZMOulwvweHppY4hmVEDR8v1oMtNvFU5mlwVnmCpsPRtjOmtQ8NLG19-SrNcpCErB6CVDqgKfbH_BrnhM9PpLPS_e7oXXlgMpDkbZ2A0UaGeAg74DcZDv2YyU6RlLDsdopF2odDaJ8nXdvSz8m7a7lgPVJavSd2J-RTz0mPuo826Y7sLuPakEDctTPB8lmKAS9NA_BmPmWem96wmQgIZczbEvgzkngeI5Iu54JLZpGC3LfqlngVozTGBEjy1ejyATxH6jFv8Hrzq-v7gMqVVhuPaYUktzzlH9FAKLLdNWwuoSnoBj0xbYQI4VC6BHtd8hkMPvFUia-HUgNekXijkUmEduVGGSOiCD9Ne1B3A5OEvBKL5iqIjfP3it14pbLfSsZ3ve6ff7WnssLMrrxdsY', 'content-type': 'application/json', 'origin': 'https://connect.onegiantleap.com', 'referer': 'https://connect.onegiantleap.com/', 'sec-ch-ua': '"Chromium";v="122", "Not(A:Brand";v="24", "Google Chrome";v="122"', 'sec-ch-ua-mobile': '?0', 'sec-ch-ua-platform': '"Windows"', 'sec-fetch-dest': 'empty', 'sec-fetch-mode': 'cors', 'sec-fetch-site': 'cross-site', 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36', 'x-client-origin': 'connect.onegiantleap.com', 'x-client-platform': 'Event App', 'x-client-version': '2.307.31', } c = 0 def save_data_to_csv(data): global c field_names = ["First Name", "Last Name", "User ID", "Email", "Job Title", "Organization","Phone","Country"] with open('data.csv', 'a', newline='') as csvfile: writer = csv.DictWriter(csvfile, fieldnames=field_names) if c == 0: writer.writeheader() for item in data: f_name = item[0] l_name = item[1] user_id = item[2] email = item[3] job_title = item[4] organization = item[5] phone = item[6] country = item[7] writer.writerow({ "First Name": f_name, "Last Name": l_name, "User ID": user_id, "Email": email, "Job Title": job_title, "Organization": organization, "Phone":phone, "Country":country }) c += 1 def get_first_name(url): person_id = url.split("/")[-1] json_data = [ { 'operationName': 'CurrentEventPersonProviderQuery', 'variables': { 'eventId': 'RXZlbnRfMTcxNzY4Nw==', }, 'extensions': { 'persistedQuery': { 'version': 1, 'sha256Hash': '6d731832c717dfd97567da6934ba7e609e89dc9daad212ff9ff2bd73f8fea6ad', }, }, }, { 'operationName': 'PersonUserId', 'variables': { 'personId': person_id, }, 'extensions': { 'persistedQuery': { 'version': 1, 'sha256Hash': '109137c30f77f624ffa4263a20e90a0a4fc9e9e7ddade6a7a5039a935b69e1b0', }, }, }, { 'operationName': 'EventPersonDetailsQuery', 'variables': { 'skipMeetings': True, 'withEvent': True, 'personId': person_id, 'userId': '', 'eventId': 'RXZlbnRfMTcxNzY4Nw==', }, 'extensions': { 'persistedQuery': { 'version': 1, 'sha256Hash': '8277c430fdaca5eb97969046e434f876a09af31e8e7940ed50ec234e9c052e77', }, }, }, { 'operationName': 'SingleCommunityQuery', 'variables': {}, 'extensions': { 'persistedQuery': { 'version': 1, 'sha256Hash': '0fbbcdbf8bde4a9b8986bb9982f3d875d0ffb56f8e742c28ec9e958cc2729f8c', }, }, }, { 'operationName': 'NotificationCounter', 'variables': {}, 'extensions': { 'persistedQuery': { 'version': 1, 'sha256Hash': '5d3a070c72b11519f887eb28afcf5babeebae711e7d09815a83d3881ab0e134d', }, }, }, { 'operationName': 'NewNotifications', 'variables': { 'withEvent': False, 'eventId': '', 'createdAfter': '2024-02-28 16:00:00', }, 'extensions': { 'persistedQuery': { 'version': 1, 'sha256Hash': 'd41e6888cbf3cf6a1e0a07cd42d2fe5e4514ac56161cee887ed86845e680e260', }, }, }, { 'operationName': 'ApplicationProvider_CurrentCommunity', 'variables': { 'communitySlug': 'leap', }, 'extensions': { 'persistedQuery': { 'version': 1, 'sha256Hash': '23de4b566f56b122085ecc57cbb5a46c62c7d13c363293f4d100b16f2c1ee477', }, }, }, ] response = requests.post('https://api.swapcard.com/graphql', headers=headers, json=json_data) data = response.json() print(data) fields = data[2]["data"]["person"]["withEvent"]["fields"] country = "" for field in fields: try: if field["name"] == "Country": country = field["value"]["text"] except: pass f_name = data[2]["data"]["person"]["firstName"] l_name = data[2]["data"]["person"]["lastName"] user_id = data[2]["data"]["person"]["userId"] email = data[2]["data"]["person"]["email"] job_title = data[2]["data"]["person"]["jobTitle"] organization = data[2]["data"]["person"]["organization"] try: phone = data[2]["data"]["person"]["mobilePhone"]['formattedNumber'] except: phone = "" country = country data_item = [f_name, l_name, user_id, email, job_title, organization,phone,country] print(data_item) save_data_to_csv([data_item]) with open('member_links.txt', 'r') as file: for i, url in enumerate(file, start=1): url = url.strip() print(url) get_first_name(url) print(f'{i} number url is done')