Python pour Mardown
import csv
import os
import re
# ==========================================
# 1. PARAMÈTRES (À MODIFIER)
# ==========================================
# Remplacez par les vrais chemins sur votre PC.
# Gardez bien le 'r' devant les guillemets pour que Windows lise bien les anti-slash (\)
FICHIER_SOURCE = r"C:\Users\OneDrive\Documents\mes_indicateurs.csv"
DOSSIER_OBSIDIAN = r"C:\Users\OneDrive\Documents\Vault_Obsidian\Indicateurs"
# Noms EXACTS de vos colonnes dans le tableur CSV
COL_TITRE = "Indicateur"
COL_THEME = "Thème"
COL_DESC = "Description"
COL_SOURCE = "Source"
# ==========================================
# 2. SCRIPT DE GÉNÉRATION
# ==========================================
def clean_filename(name):
""" Supprime les caractères interdits pour les fichiers Windows """
name = str(name).strip()
return re.sub(r'[\\/*?:"<>|]', "", name)
if not os.path.exists(DOSSIER_OBSIDIAN):
os.makedirs(DOSSIER_OBSIDIAN)
compteur = 0
print(f"Lecture du fichier : {FICHIER_SOURCE}")
# Lecture du CSV (encodage utf-8-sig gère les exports Excel)
with open(FICHIER_SOURCE, mode='r', encoding='utf-8-sig') as f:
# Le séparateur standard d'Excel en français est souvent le point-virgule
reader = csv.DictReader(f, delimiter=';')
# Si les colonnes ne sont pas trouvées, on tente avec la virgule
if COL_TITRE not in reader.fieldnames:
f.seek(0)
reader = csv.DictReader(f, delimiter=',')
for row in reader:
titre_brut = row.get(COL_TITRE, "")
if not titre_brut:
continue
titre_propre = clean_filename(titre_brut)
chemin_fichier = os.path.join(DOSSIER_OBSIDIAN, f"{titre_propre}.md")
theme = row.get(COL_THEME, "Non défini")
desc = row.get(COL_DESC, "Description à compléter...")
source = row.get(COL_SOURCE, "À définir")
# Le Template Obsidian (YAML Frontmatter + Corps)
contenu_md = f"""---
type: indicateur
theme: {theme}
statut: à rédiger
---
# {titre_propre}
## 🎯 Définition
{desc}
## 📊 Données et Méthodologie
**Source principale :** {source}
- *Mettre à jour la méthode SIG ici...*
## 🕸️ Liens Systémiques
**Motifs urbains impactés :**
- [[Nom du Motif 1]]
**Indicateurs liés :**
-
***
*Fiche générée automatiquement pour la matrice Alteris.*
"""
with open(chemin_fichier, "w", encoding="utf-8") as out_f:
out_f.write(contenu_md)
compteur += 1
print(f"✅ Terminé ! {compteur} fiches créées avec succès dans le dossier Obsidian.")
No comments to display
No comments to display