Files

49 lines
1.9 KiB
Python
Raw Permalink Normal View History

"""Nettoyage one-shot des labels en doublon sur les notes du systeme."""
from trilium_api import _ea, search_by_label, get_note
ea = _ea()
LABELS_A_DEDOUBLONNER = ["statut", "priorite", "encoreValide", "type", "projet"]
# On parcourt tous les types de notes du systeme
types_notes = ["backlogItem", "decision", "historiqueItem", "conversation",
"termeGlossaire", "projet", "contexteReprise", "skill"]
notes_traitees = set()
total_supprimes = 0
for tn in types_notes:
for n in search_by_label("type", tn):
nid = n["noteId"]
if nid in notes_traitees:
continue
notes_traitees.add(nid)
note = get_note(nid)
attrs = [a for a in note.get("attributes", []) if a.get("type") == "label"]
# Grouper par nom de label
par_nom = {}
for a in attrs:
par_nom.setdefault(a.get("name"), []).append(a)
for name, lst in par_nom.items():
if len(lst) <= 1:
continue
if name not in LABELS_A_DEDOUBLONNER:
continue
# Valeur de reference = celle du dernier label (plus recent)
valeur_finale = lst[-1].get("value", "")
garde = lst[0]
# Patcher le premier avec la valeur finale
try:
ea.patch_attribute(attributeId=garde.get("attributeId"), value=valeur_finale)
except Exception as e:
print(" patch echoue sur", nid, name, ":", e)
# Supprimer tous les autres
for doublon in lst[1:]:
try:
ea.delete_attribute(attributeId=doublon.get("attributeId"))
total_supprimes += 1
except Exception as e:
print(" delete echoue :", e)
print(f"{nid} : {name} dedoublonne ({len(lst)} -> 1, valeur={valeur_finale})")
print(f"\nTermine. {total_supprimes} labels en double supprimes.")