# -*- coding: utf-8 -*-
# Gramps - a GTK+/GNOME based genealogy program
# Copyright (C) 2016 Paul Culley (some code by Nick Hall)
import csv
import re
import argparse
import html
from xml.etree import ElementTree as ET
from datetime import datetime
import os
import mimetypes
import sys
from xml.dom import minidom
def nettoyer_texte(texte):
"""Nettoie le texte en supprimant les ; == et == autour des titres."""
texte = re.sub(r';\s*==\s*', '', texte)
texte = re.sub(r'\s*==\s*;?', '', texte)
return texte
def nettoyer_html(texte):
"""
Nettoie le texte HTML pour le convertir en texte compatible avec Gramps.
Préserve les balises spécifiques à Gramps et les références aux médias.
"""
# Protège les balises spécifiques à Gramps
protected_tags = [
('[.*?]', 'REF_TAG'),
(']*?>', 'NOTEREF_TAG'),
(']*?>', 'SOURCEREF_TAG'),
(']*?>', 'OBJREF_TAG')
]
# Remplace les balises spécifiques par des marqueurs temporaires
protected = {}
for pattern, marker in protected_tags:
for i, match in enumerate(re.finditer(pattern, texte, re.DOTALL)):
protected[f"{marker}_{i}"] = match.group(0)
texte = texte.replace(match.group(0), f"{{{marker}_{i}}}")
# Nettoyage du HTML
texte = re.sub(r'(.*?)', r'/\1/', texte) # Italique
texte = re.sub(r'(.*?)', r'*\1*', texte) # Gras
texte = re.sub(r'(.*?)', r'_\1_', texte) # Souligné
texte = re.sub(r']*href=["\']([^"\']*)["\'][^>]*>(.*?)', r'\2 (\1)', texte) # Liens
texte = re.sub(r'
', '\n', texte) # Sauts de ligne
texte = re.sub(r'<[^>]+>', '', texte) # Supprime les autres balises HTML
texte = html.unescape(texte) # Convertit les entités HTML en caractères normaux
# Restaure les balises spécifiques à Gramps
for marker, tag in protected.items():
texte = texte.replace(f"{{{marker}}}", tag)
return texte
def ajouter_styles_texte(note_elem, note_text):
"""Ajoute les balises