Files
Gainsight/Scripts/Todo_reorg/parse_for_gstimeline.py

124 lines
4.0 KiB
Python

from pathlib import Path
import requests
import pandas as pd
import itertools
ndir = Path("/Users/normrasmussen/Documents/Work/CustomerNotes/")
def get_files():
merge = pd.DataFrame()
dict_copy = pd.DataFrame()
empty_temp = pd.DataFrame()
files = list(ndir.glob("**/*.md"))
for company in files:
# This Section gets the Company name for the payload.
company = str(company)
company_file = company.split("/")[-1]
company_name = company_file[:-3]
list_of_dicts = get_data(company_file, company_name)
# This returns a list of dictionaries - one list per company
dic = pd.DataFrame.from_records(list_of_dicts)
# This gets overwritten for each list out put by the function.
# So once a list comes out, it needs to be copied.
dict_copy = dic.copy()
# Now that it is copied.. merge it here first?
empty_temp = pd.concat([dict_copy, empty_temp], ignore_index=True)
merge = pd.concat([empty_temp, merge], ignore_index=True)
merge.to_csv("/Users/normrasmussen/Downloads/Notes_for_GS.csv")
print(merge)
def get_data(company_file, company_name):
notes = []
line_num_array = []
text_array = []
list_of_dicts = []
pay_dict = {"company_name": company_name}
company_path = Path(
f"/Users/normrasmussen/Documents/Work/CustomerNotes/{company_file}"
)
with company_path.open(mode="r", encoding="utf-8") as md_file:
line = company_path.read_text()[3]
# This first section finds the lines and adds them to an array.
# It also finds the "date" lines and adds them to a second array.
for num, line in enumerate(md_file):
line = line[:-1]
text_array.append(line)
if line.startswith("## "):
line_num_array.append(num)
# Since I don't know the last line of the file, I take the last
# number in the title array and adds 500,
# going well beyond the last line.
last_line = (line_num_array[-1], 500)
line_num_array.append(sum(last_line))
# This magic pairs each title based on the line numbers.
line_pairs = list(itertools.pairwise(line_num_array))
# We take each "grouping" and add it to an array as each singular item.
for index in line_pairs:
indv_notes = text_array[index[0] : index[1]]
notes.append(indv_notes)
# Now we are cleaning it up.
# Removing the hashes from the dates and titles.
for note in notes:
date = note[0][3:]
copy = " ".join(note[1:])
pay_dict["date"] = date
pay_dict["copy"] = copy
pay_dict["type"] = "Meeting"
if note[2].startswith("### "):
note_title = note.pop(2)[4:]
pay_dict["title"] = note_title
else:
pay_dict["title"] = f"Meeting Notes from {date}"
list_of_dicts.append(pay_dict.copy())
# print(list_of_dicts)
return list_of_dicts
def add_to_payload(pay_dict):
payload = {
"records": [
{
"Author": "nrasmussen@gainsight.com",
"ContextName": pay_dict["company_name"],
"TypeName": "Meeting",
"ExternalId": "WHAT IS THIS?",
"Subject": pay_dict["title"],
"Notes": pay_dict["copy"],
"ActivityDate": pay_dict["date"],
"companyName": "AAR Corp Hardware Abscoa Division",
"internalAttendees": ["Norm Rasmussen"],
"externalAttendees": [""],
},
]
}
print(payload)
"""
# send_to_gs(payload)
def send_to_gs(payload):
url = "https://gongnxt.gainsightcloud.com/v1/ant/es/activity/bulk"
json = payload
headers = {
"Content Type": "JSON",
"Accesskey": APIKEY,
}
response = requests.post(url=url, headers=headers, json=payload)
"""
if __name__ == "__main__":
get_files()