Il y a 389 articles et 19 utilisateurs inscrits (ce bandeau est défini dans MediaWiki:Sitenotice)

Convertisseur Markdown → MediaWiki (Python + Pandoc)

De AJLSM
Version datée du 7 novembre 2025 à 09:23 par Jlarvers (discussion | contributions) (Page créée avec « <span id="convertisseur-markdown-mediawiki-python-pandoc"></span> = 🧭 Convertisseur Markdown → MediaWiki (Python + Pandoc) = Ce projet permet de convertir automatiqu... »)
(diff) ← Version précédente | Version actuelle (diff) | Version suivante → (diff)
Aller à la navigation Aller à la recherche

🧭 Convertisseur Markdown → MediaWiki (Python + Pandoc)

[modifier | modifier le wikicode]

Ce projet permet de convertir automatiquement des fichiers Markdown (.md) en MediaWiki (.wiki), y compris de manière récursive dans les sous-dossiers.
Il repose sur Pandoc pour la conversion et pypandoc pour l’intégration en Python.



🧰 Prérequis

[modifier | modifier le wikicode]

1. Installer Pandoc

[modifier | modifier le wikicode]

Pandoc est le moteur de conversion principal.

macOS (via Homebrew)

[modifier | modifier le wikicode]
brew install pandoc

Ubuntu / Debian

[modifier | modifier le wikicode]
sudo apt install pandoc

Télécharger l’installateur depuis :
👉 https://pandoc.org/installing.html



2. Créer et activer un environnement virtuel Python

[modifier | modifier le wikicode]

⚠️ Cette étape est fortement recommandée pour isoler les dépendances du système.

Depuis le dossier du projet :

python3 -m venv venv
source venv/bin/activate  # macOS / Linux
# ou
venv\Scripts\activate     # Windows

3. Installer la dépendance Python

[modifier | modifier le wikicode]

Une fois dans le venv :

pip install pypandoc

Tu peux vérifier l’installation :

python3 -m pip show pypandoc

🐍 Script principal : convert_md_to_mediawiki_recursive.py

[modifier | modifier le wikicode]
#!/usr/bin/env python3
import os
import pypandoc
import argparse
from datetime import datetime

def convert_markdown_to_mediawiki(input_dir, output_dir, report_file):
    os.makedirs(output_dir, exist_ok=True)
    converted_files = []
    failed_files = []

    print(f"🚀 Démarrage de la conversion récursive Markdown → MediaWiki")
    print(f"📂 Dossier d'entrée : {input_dir}")
    print(f"📁 Dossier de sortie : {output_dir}\n")

    for root, _, files in os.walk(input_dir):
        for file in files:
            if file.lower().endswith(".md"):
                input_path = os.path.join(root, file)
                relative_path = os.path.relpath(root, input_dir)
                output_subdir = os.path.join(output_dir, relative_path)
                os.makedirs(output_subdir, exist_ok=True)

                output_filename = os.path.splitext(file)[0] + ".wiki"
                output_path = os.path.join(output_subdir, output_filename)

                try:
                    print(f"➡️  Conversion de {input_path} ...")
                    output = pypandoc.convert_file(input_path, "mediawiki", format="markdown")
                    with open(output_path, "w", encoding="utf-8") as f:
                        f.write(output)
                    converted_files.append((input_path, output_path))
                except Exception as e:
                    print(f"❌ Erreur sur {input_path} : {e}")
                    failed_files.append((input_path, str(e)))

    timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
    with open(report_file, "w", encoding="utf-8") as report:
        report.write(f"=== Rapport de conversion Markdown → MediaWiki ===\n")
        report.write(f"Généré le : {timestamp}\n\n")

        report.write(f"✅ Fichiers convertis avec succès : {len(converted_files)}\n")
        for src, dst in converted_files:
            report.write(f"  - {src}  →  {dst}\n")

        if failed_files:
            report.write(f"\n❌ Fichiers ayant échoué : {len(failed_files)}\n")
            for src, err in failed_files:
                report.write(f"  - {src} : {err}\n")

    print("\n✅ Conversion terminée !")
    print(f"📄 Rapport enregistré dans : {report_file}")
    print(f"📁 Fichiers convertis enregistrés dans : {output_dir}")

if __name__ == "__main__":
    parser = argparse.ArgumentParser(description="Convertisseur récursif Markdown → MediaWiki via Pandoc")
    parser.add_argument("--input", "-i", default="markdown_files", help="Dossier contenant les fichiers .md à convertir")
    parser.add_argument("--output", "-o", default="mediawiki_files", help="Dossier de sortie pour les fichiers .wiki")
    parser.add_argument("--report", "-r", default="conversion_report.txt", help="Nom du fichier de rapport")
    args = parser.parse_args()

    convert_markdown_to_mediawiki(args.input, args.output, args.report)

📁 Structure recommandée du projet

[modifier | modifier le wikicode]
project/
├── convert_md_to_mediawiki_recursive.py
├── markdown_files/
│   ├── doc1.md
│   ├── sous_dossier/
│   │   └── notes.md
└── mediawiki_files/       ← sera créé automatiquement

▶️ Utilisation basique

[modifier | modifier le wikicode]

1. Activer le venv

[modifier | modifier le wikicode]
source venv/bin/activate

2. Lancer la conversion

[modifier | modifier le wikicode]
python convert_md_to_mediawiki_recursive.py

⚙️ Utilisation avancée (avec arguments)

[modifier | modifier le wikicode]

🔧 Exemple 1 : Changer les dossiers d’entrée et sortie

[modifier | modifier le wikicode]
python convert_md_to_mediawiki_recursive.py --input docs_markdown --output wiki_output

🔧 Exemple 2 : Spécifier le nom du rapport

[modifier | modifier le wikicode]
python convert_md_to_mediawiki_recursive.py --report rapport_wiki.txt

🔧 Exemple 3 : Tout combiner

[modifier | modifier le wikicode]
python convert_md_to_mediawiki_recursive.py -i my_markdown -o my_wiki -r resultats.txt

📊 Rapport de conversion

[modifier | modifier le wikicode]

Un fichier texte récapitulatif est généré après chaque exécution (par défaut conversion_report.txt), indiquant :

  • Les fichiers convertis avec succès ✅
  • Les erreurs éventuelles ❌
  • L’horodatage du traitement

Exemple :

=== Rapport de conversion Markdown → MediaWiki ===
Généré le : 2025-11-05 11:18:43

✅ Fichiers convertis avec succès : 2
  - markdown_files/doc1.md  →  mediawiki_files/doc1.wiki
  - markdown_files/sous_dossier/notes.md  →  mediawiki_files/sous_dossier/notes.wiki

🧠 Bonnes pratiques

[modifier | modifier le wikicode]
  • ✅ Toujours activer le venv avant d’exécuter le script.

  • 📦 Ajoute un fichier .gitignore pour ignorer :

    venv/
    __pycache__/
    mediawiki_files/
    conversion_report.txt
  • 🧱 Si pandoc n’est pas trouvé :

    which pandoc
    

    puis ajuste ton PATH si nécessaire.

  • 🧩 Le script est compatible macOS, Linux et Windows.