From ecdf46fd330019526926f4bfd986a02b0783c3a5 Mon Sep 17 00:00:00 2001 From: Norm Rasmussen Date: Tue, 4 Apr 2023 16:55:32 -0400 Subject: [PATCH] Fixed walmart screenshot script. Added some notes. Created recast's script. --- CustomerNotes/Mattr.md | 6 ++ CustomerNotes/Pipedrive.md | 3 +- Scripts/API_Tests/Apikeys.py | 3 + .../__pycache__/Apikeys.cpython-311.pyc | Bin 473 -> 561 bytes Scripts/API_Tests/add_learnerprop.py | 2 +- Scripts/API_Tests/add_prop_csv.py | 55 ++++++++++++++++++ Scripts/API_Tests/getgroup_fromemail.py | 54 +++++++++++++++++ Scripts/Mizuno/.DS_Store | Bin 0 -> 6148 bytes Scripts/Mizuno/add-pgaids.py | 41 ++++++------- Scripts/Walmart_Screenshots/resources_api.js | 24 +++++--- 10 files changed, 158 insertions(+), 30 deletions(-) create mode 100644 Scripts/API_Tests/add_prop_csv.py create mode 100644 Scripts/API_Tests/getgroup_fromemail.py create mode 100644 Scripts/Mizuno/.DS_Store diff --git a/CustomerNotes/Mattr.md b/CustomerNotes/Mattr.md index 8c2ea42f..f3e58fd3 100644 --- a/CustomerNotes/Mattr.md +++ b/CustomerNotes/Mattr.md @@ -7,3 +7,9 @@ Nata & Ashley - Content Strategy MVP - 4 courses, ready by Mid-March No involvement from Norm until the MVP launch in March. Then will review content and strategy and offer advice. + + +Questions for Wayne: + +* Prereq property use case? Label or should it block someone? +* "(undefined)" property, can we update it to "NO MATTR" or "BLANK" diff --git a/CustomerNotes/Pipedrive.md b/CustomerNotes/Pipedrive.md index 4b55b188..747ab63f 100644 --- a/CustomerNotes/Pipedrive.md +++ b/CustomerNotes/Pipedrive.md @@ -176,7 +176,7 @@ User Profiles: * When you click users, they want something available to users. Wants to know the best way to setup. * Kaisa to send what she would like on this page. - +[](2023-04-04_.md) Design: * Can we change some elements in the non-Pipedrive academy? They would need more CTAs etc. @@ -191,3 +191,4 @@ Start up weekly meetings with Kaisa for 10am on Tuesday ## 03/28/2023 GetVero is the customer emailing platform they currently use. They wanted to do it via Segment. +Custom email domain needs to be setup first. Waiting on Kaisa to "get through security" diff --git a/Scripts/API_Tests/Apikeys.py b/Scripts/API_Tests/Apikeys.py index 837a93b6..4abea816 100644 --- a/Scripts/API_Tests/Apikeys.py +++ b/Scripts/API_Tests/Apikeys.py @@ -5,3 +5,6 @@ talkspace_core = "2vfHw6ksqGfT1gUhPM8pXx2wW" wildhealth = "HWxj6VTNPwbc3WghFTPzr7SjE" normsandbox = "SlpQlju219WnWogn94dQUT6Yt" walmartprod = "6hUfJdAartHTHhHc0WIRZYPWe" +recast = "9LISLpq7Ebqot3Xrggn5twKWZ" +mizuno = "stXNF84HWL8aCGeRjHEo2rJ1U" + diff --git a/Scripts/API_Tests/__pycache__/Apikeys.cpython-311.pyc b/Scripts/API_Tests/__pycache__/Apikeys.cpython-311.pyc index 52fe5958f8ca8cd0f180c3a016cd0d2539d50794..c5ff478c7121b862961cd58eaa24f45025cad406 100644 GIT binary patch delta 159 zcmcb~ype@>IWI340}uq(=%i##tNu5zL^;Ini&CV1&g9RG+MEsC4ctWnKt2F8G!F3q diff --git a/Scripts/API_Tests/add_learnerprop.py b/Scripts/API_Tests/add_learnerprop.py index 4088e55c..13a10897 100644 --- a/Scripts/API_Tests/add_learnerprop.py +++ b/Scripts/API_Tests/add_learnerprop.py @@ -2,7 +2,7 @@ import requests import pandas as pd import Apikeys -csv = "/Users/normrasmussen/Downloads/ts_id_roles.csv" +csv = "/Users/normrasmussen/Downloads/Recast-learners.csv" apiKey = Apikeys.skuid baseUrlemail = "https://api.northpass.com/v2/people?filter[email][eq]=" diff --git a/Scripts/API_Tests/add_prop_csv.py b/Scripts/API_Tests/add_prop_csv.py new file mode 100644 index 00000000..d79fe7a1 --- /dev/null +++ b/Scripts/API_Tests/add_prop_csv.py @@ -0,0 +1,55 @@ + +import requests +import pandas as pd +from pathlib import Path +import Apikeys +import os + +basefile = "/Users/normrasmussen/Downloads/Recast-learners.csv" +api_key = Apikeys.recast +prop_url = "https://api.northpass.com/v2/properties/people/" +headers = { + "accept": "*/*", + "x-api-key": api_key, + "content-type": "application/json", + } +dict_list = [] +row_dict = {} + +def load_file(basefile): + basefile = Path(basefile) + completions = pd.read_csv(basefile) + try: + if os.path.isfile(basefile): + print(f"File found! Importing {basefile}") + for uuid in completions.itertuples(): + row_num = uuid[0] + uuid = uuid[2] + row_dict = {"row_num":row_num} + url = prop_url + f"{uuid}" + response = requests.get(url, headers=headers) + if response.status_code == 200: + data = response.json() + company = data["data"]["attributes"]["properties"]["company"] + row_dict["company"] = company + elif response.status_code == 404: + row_dict["company"] = "User Not Found" + dict_list.append(row_dict) + print("No errors! Passing along the dictionary!") + except KeyError as e: + print(e) + finally: + for info in dict_list: + print(info) + row = info['row_num'] + comp = info['company'] + completions.loc[completions.index[row], "Company"] = comp + print(completions) + completions.to_csv( + "/Users/normrasmussen/Downloads/Recast_learners_w_Company.csv", + index=False + ) + +if __name__ == "__main__": + load_file(basefile) + diff --git a/Scripts/API_Tests/getgroup_fromemail.py b/Scripts/API_Tests/getgroup_fromemail.py new file mode 100644 index 00000000..a2cb0d97 --- /dev/null +++ b/Scripts/API_Tests/getgroup_fromemail.py @@ -0,0 +1,54 @@ +import requests +import pandas as pd +from pathlib import Path +import os + +basefile = "/Users/normrasmussen/Downloads/MizunoCompletions_with_PGAIDs.csv" +api_key = "stXNF84HWL8aCGeRjHEo2rJ1U" +uuid_url = "https://api.northpass.com/v2/people?filter[email][eq]=" +group_url = "https://api.northpass.com/v2/groups/" +headers = { + "accept": "*/*", + "x-api-key": api_key, + "content-type": "application/json", +} + +def load_file(basefile): + row_dict = {} + dict_list = [] + basefile = Path(basefile) + completions = pd.read_csv(basefile) + try: + if os.path.isfile(basefile): + print(f"File found! Importing {basefile}") + for email in completions.itertuples(): + row_num = email[0] + row_dict = {"row_num": row_num} + email = email[3] + url = uuid_url + f"{email}" + response = requests.get(url, headers=headers) + if response.status_code == 200: + response = response.json() + gid = response["data"][0]["relationships"]["groups"]["data"][0]["id"] + url2 = group_url + f"{gid}" + response = requests.get(url2, headers=headers) + data = response.json() + group_name = data["data"]["attributes"]["name"] + row_dict["group"] = group_name + dict_list.append(row_dict) + except TypeError as e: + pass + finally: + for info in dict_list: + row = info['row_num'] + group = info['group'] + completions.loc[completions.index[row], "Group Name"] = group + print(completions) + completions.to_csv( + "/Users/normrasmussen/Downloads/MizunoCompletions_with_PGAIDs.csv", + index=False + ) + + +if __name__ == "__main__": + load_file(basefile) diff --git a/Scripts/Mizuno/.DS_Store b/Scripts/Mizuno/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..5008ddfcf53c02e82d7eee2e57c38e5672ef89f6 GIT binary patch literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0 { @@ -14,7 +17,7 @@ const getAllGroups = async (num) => { await axios({ method: 'get', - url: `https://api2.northpass.com/v2/courses?page=${page}&limit=100`, + url: 'https://api2.northpass.com/v2/courses?page=${page}&limit=200', headers: { 'accept': '*/*', 'x-api-key': apiKey, @@ -26,16 +29,18 @@ const getAllGroups = async (num) => { page++; for (let i = 0; i < res.data.data.length; i++) { if (res.data.data[i].attributes.status == "live") { + console.log(res.data.data[i].attributes.name) groupIds.push(res.data.data[i].id) } } - await getAllGroups(page); + //await getAllGroups(page); } else { - for (let i = 0; i < res.data.data.length; i++) { - if (res.data.data[i].attributes.status == "live") { - groupIds.push(res.data.data[i].id) - } - } + // for (let i = 0; i < res.data.data.length; i++) { + // if (res.data.data[i].attributes.status == "live") { + // console.log(res.data.data[i].attributes.name) + // groupIds.push(res.data.data[i].id) + // } +// } } }) .catch(err => { @@ -47,12 +52,14 @@ const getAllGroups = async (num) => { } function loopIds(i) { + console.log("Loop Ids Function") var num = 1 id = groupIds[i] courseOverview(id, i, num) } async function courseOverview(id, i, num) { + console.log("Course Overview Function") const activity = new Array(); const url = "https://walmart.northpass.com/app/courses/"; const browser = await puppeteer.launch(); @@ -71,6 +78,7 @@ async function courseOverview(id, i, num) { await page.title(); const [getXpath] = await page.$x('/html/body/div[1]/div'); const resourcetitle = await page.evaluate(name => name.innerText, getXpath); + console.log(resourcetitle) const resource = resourcetitle.trim(); console.log(resource);