Added all
This commit is contained in:
73
file-management/mautic.py
Normal file
73
file-management/mautic.py
Normal file
@@ -0,0 +1,73 @@
|
||||
import pandas as pd
|
||||
import csv
|
||||
|
||||
def filtrar_i_consolidar_etiquetes(tags_str):
|
||||
"""Filtra i agrupa les etiquetes segons les regles de negoci."""
|
||||
if pd.isna(tags_str) or str(tags_str).strip().lower() == 'nan':
|
||||
return ''
|
||||
|
||||
# 1. Separem les etiquetes i les netegem
|
||||
llista_tags = [t.strip().lower() for t in str(tags_str).split(',')]
|
||||
|
||||
# Utilitzem un 'set' per evitar etiquetes duplicades al final
|
||||
tags_finals = set()
|
||||
|
||||
for t in llista_tags:
|
||||
# 2. Regla de conservació directa: test_, int_ i rrhh
|
||||
if t.startswith('test_') or t.startswith('int_') or t == 'rrhh':
|
||||
tags_finals.add(t)
|
||||
continue
|
||||
|
||||
# 3. Regles d'agrupació (l'ordre és important per als prefixos llargs)
|
||||
if t.startswith('skupspo2-') or t.startswith('pspo2-'):
|
||||
tags_finals.add('pspo2')
|
||||
elif t.startswith('pspo-'):
|
||||
tags_finals.add('pspo')
|
||||
elif t.startswith('psm2-'):
|
||||
tags_finals.add('psm2')
|
||||
elif t.startswith('psm-'):
|
||||
tags_finals.add('psm')
|
||||
elif t.startswith('psux-') or t.startswith('psu-'):
|
||||
tags_finals.add('psu')
|
||||
elif t.startswith('sps-'):
|
||||
tags_finals.add('sps')
|
||||
elif t.startswith('safe-'):
|
||||
tags_finals.add('safe-ls')
|
||||
elif t.startswith('pal_ebm-'):
|
||||
tags_finals.add('pal_ebm')
|
||||
elif t.startswith('pal-'):
|
||||
tags_finals.add('pal')
|
||||
|
||||
# 4. Si tenim etiquetes vàlides, les ordenem, les unim amb | i hi posem cometes
|
||||
if tags_finals:
|
||||
# Ordenar-les (sorted) fa que el resultat sigui més fàcil de llegir al CSV
|
||||
tags_units = '|'.join(sorted(list(tags_finals)))
|
||||
return f'"{tags_units}"'
|
||||
else:
|
||||
return ''
|
||||
|
||||
# --- INICI DEL PROCÉS ---
|
||||
|
||||
# 1. Carregar el fitxer original
|
||||
df = pd.read_excel('contactes_mautic/Contactos_2602026_7881pax.xlsx')
|
||||
|
||||
# 2. Seleccionar només les columnes que ens interessen
|
||||
columnes_mautic = ['email', 'nombre_x', 'apellidos_x', '*ciudad_x', '*pais_x', 'etiquetas_x']
|
||||
df_net = df[columnes_mautic].copy()
|
||||
|
||||
# 3. Reanomenar les columnes perquè Mautic les auto-detecti
|
||||
df_net.rename(columns={
|
||||
'nombre_x': 'firstname',
|
||||
'apellidos_x': 'lastname',
|
||||
'*ciudad_x': 'city',
|
||||
'*pais_x': 'country',
|
||||
'etiquetas_x': 'etiquetes'
|
||||
}, inplace=True)
|
||||
|
||||
# 4. APLICAR EL FILTRE I LA CONSOLIDACIÓ
|
||||
df_net['etiquetes'] = df_net['etiquetes'].apply(filtrar_i_consolidar_etiquetes)
|
||||
|
||||
# 5. Guardar com a CSV llest per importar
|
||||
df_net.to_csv('Contactes_Mautic_Consolidats.csv', index=False, encoding='utf-8', quoting=csv.QUOTE_NONE, escapechar='\\')
|
||||
|
||||
print("✅ Fitxer preparat! Les etiquetes s'han filtrat i agrupat correctament.")
|
||||
Reference in New Issue
Block a user