Il y a 389 articles et 19 utilisateurs inscrits (ce bandeau est défini dans MediaWiki:Sitenotice)
Convertisseur Markdown → MediaWiki (Python + Pandoc)
🧭 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
Windows
[modifier | modifier le wikicode]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
.gitignorepour ignorer :venv/ __pycache__/ mediawiki_files/ conversion_report.txt
🧱 Si
pandocn’est pas trouvé :which pandocpuis ajuste ton
PATHsi nécessaire.🧩 Le script est compatible macOS, Linux et Windows.