168 lines
15 KiB
Python
168 lines
15 KiB
Python
from tkinter import *
|
|
import csv
|
|
import json
|
|
import os.path
|
|
import numpy as np
|
|
import pandas as pd
|
|
import PySimpleGUI as sg
|
|
|
|
|
|
|
|
def append_list_as_row(file_name, list_of_elem):
|
|
with open(file_name, 'a+', newline='', encoding='utf-8') as write_obj:
|
|
csv_writer = csv.writer(write_obj)
|
|
csv_writer.writerow(list_of_elem)
|
|
|
|
def sanitize_data(data_in):
|
|
if isinstance(data_in, dict):
|
|
pop_lst = []
|
|
for key in data_in:
|
|
if isinstance(data_in[key], str):
|
|
data_in[key] = data_in[key].replace(u'\xa0', u' ')
|
|
data_in[key] = data_in[key].strip()
|
|
else:
|
|
if key not in ['email', 'name']:
|
|
pop_lst.append(key)
|
|
for i in pop_lst:
|
|
data_in.pop(i, None)
|
|
data_in = {key.strip(): value for key, value in data_in.items()}
|
|
|
|
if isinstance(data_in, list):
|
|
data_in = [sub.replace(u'\xa0', u' ').strip() for sub in data_in]
|
|
|
|
return data_in
|
|
|
|
def create_import_file(in_file):
|
|
file_path, file_name = os.path.split(in_file)
|
|
out_file = os.path.join(file_path, 'OUT_{}'.format(file_name))
|
|
|
|
if os.path.exists(out_file):
|
|
os.remove(out_file)
|
|
|
|
csv_in = pd.read_csv(in_file, dtype=str)
|
|
|
|
attrs=sanitize_data(list(csv_in.head()))
|
|
try:
|
|
attrs.remove('name')
|
|
attrs.remove('email')
|
|
except ValueError:
|
|
return 11
|
|
|
|
append_list_as_row(out_file,['email', 'name', 'attributes'])
|
|
|
|
for index, row in csv_in.iterrows():
|
|
row_dict = sanitize_data(row.to_dict())
|
|
|
|
if row_dict['name'] in ['nan', np.nan]:
|
|
row_dict['name'] = row_dict['email']
|
|
|
|
emails = row_dict['email']
|
|
if type(emails) is str:
|
|
if '/' in emails:
|
|
emails = sanitize_data(row_dict['email'].split("/"))
|
|
else:
|
|
emails = [sanitize_data(row_dict['email'])]
|
|
|
|
mail_counter = 0
|
|
entry_name = row_dict['name']
|
|
for mail in emails:
|
|
out_lst = []
|
|
mail_counter += 1
|
|
out_lst.append(mail)
|
|
if len(emails) > 1:
|
|
name = "{}-{}".format(entry_name, mail_counter)
|
|
out_lst.append(name)
|
|
else:
|
|
out_lst.append(entry_name)
|
|
|
|
row_dict.pop('name', None)
|
|
row_dict.pop('email', None)
|
|
|
|
out_lst.append(json.dumps(row_dict, ensure_ascii=False))
|
|
|
|
append_list_as_row(out_file, out_lst)
|
|
return 0
|
|
|
|
# Columns
|
|
file_list_column = [
|
|
[
|
|
sg.Text("CSV folder"),
|
|
sg.In(size=(25, 1), enable_events=True, key="-FOLDER-"),
|
|
sg.FolderBrowse(),
|
|
],
|
|
[
|
|
sg.Listbox(
|
|
values=[], enable_events=True, size=(50, 20), key="-LIST_FILES-"
|
|
)
|
|
],
|
|
]
|
|
|
|
confirmation_column = [
|
|
[sg.Text("Select a CSV:")],
|
|
[sg.Text("Selected CSV:",key="-FILE_HEAD-", visible = False)],
|
|
[sg.Text(size=(60, 2), key="-FILENAME-")],
|
|
[sg.Text(key="-CSV_FILE-")],
|
|
[sg.Button(key="-PROCESS_FILE-", button_text="Create Import File", visible = False)],
|
|
[sg.Text("Processing", key="-PROCESS_OUT-", visible = False)],
|
|
]
|
|
|
|
# Layout
|
|
layout = [
|
|
[
|
|
sg.Column(file_list_column),
|
|
sg.VSeperator(),
|
|
sg.Column(confirmation_column),
|
|
]
|
|
]
|
|
|
|
base64_icon=b'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'
|
|
window = sg.Window("matomo CSV attributes", layout, icon=base64_icon)
|
|
|
|
while True:
|
|
event, values = window.read()
|
|
print(event)
|
|
|
|
if event == "Exit" or event == sg.WIN_CLOSED:
|
|
break
|
|
|
|
if event == "-FOLDER-":
|
|
folder = values["-FOLDER-"]
|
|
try:
|
|
file_list = os.listdir(folder) # Get file list
|
|
print(file_list)
|
|
except:
|
|
file_list = []
|
|
|
|
fnames = [
|
|
f
|
|
for f in file_list
|
|
if os.path.isfile(os.path.join(folder, f))
|
|
and f.lower().endswith((".csv")) # Filter file list
|
|
]
|
|
window["-LIST_FILES-"].update(fnames)
|
|
|
|
elif event == "-LIST_FILES-": # File chosen
|
|
window["-FILE_HEAD-"].update(visible=True)
|
|
window["-PROCESS_FILE-"].update(visible=True)
|
|
window["-PROCESS_OUT-"].update(visible=False)
|
|
try:
|
|
filename = os.path.join(
|
|
values["-FOLDER-"], values["-LIST_FILES-"][0]
|
|
)
|
|
window["-FILENAME-"].update(filename)
|
|
window["-CSV_FILE-"].update(filename=filename)
|
|
except:
|
|
pass
|
|
|
|
elif event == "-PROCESS_FILE-": # Process button pressed
|
|
window["-FILE_HEAD-"].update(visible=True)
|
|
window["-PROCESS_FILE-"].update(visible=False)
|
|
|
|
res = create_import_file(filename)
|
|
if res == 0:
|
|
window["-PROCESS_OUT-"].update("CSV created", visible=True)
|
|
else:
|
|
window["-PROCESS_OUT-"].update("error {}: The input file is not valid".format(res), visible=True)
|
|
|
|
|
|
window.close() |