Cette documentation présente le projet WP Offline Builder, un écosystème d’outils Python conçu pour transformer un site WordPress dynamique en une archive statique localisée, consultable hors-ligne avec un moteur de recherche intégré.
📖 Sommaire
- Vue d’ensemble
- Guide Utilisateur
- Architecture Technique (Aspects API & Scripts)
- Structure des Fichiers
- Dépannage
1. Vue d’ensemble
WP Offline Builder permet de :
- Extraire automatiquement le contenu d’un WordPress distant via les protocoles d’administration standards.
- Convertir le format XML complexe de WordPress en pages HTML5 épurées.
- Localiser les ressources (images, PDF, vidéos, fichiers ZIP) pour garantir une consultation sans connexion internet.
- Générer un index intelligent avec recherche instantanée (via Fuse.js).

2. Guide Utilisateur
Préréquis
- Python 3.x installé.
- Bibliothèques requises :
customtkinter,requests.Bash
pip install customtkinter requests
Un fichier config.ini à la racine contenant vos accès WordPress :
Ini
[wordpress]BASE_URL = https://votre-site.comUSER = votre_adminPASSWORD = votre_mot_de_passe_d_application[backup]DEST_FOLDER = backups
Utilisation de l’Interface Graphique (app.py)
L’application propose un flux de travail en deux étapes simples :
- Étape 1 : « Télécharger XML »
- L’outil se connecte à votre site, simule une session d’administration et télécharge l’export complet de la base de données au format
.xml. - Le fichier est enregistré sous
backups/last.xml.
- L’outil se connecte à votre site, simule une session d’administration et télécharge l’export complet de la base de données au format
- Étape 2 : « Générer le Site (Build) »
- Cette étape traite le fichier XML pour créer le dossier
site_genere. - Elle télécharge toutes les images et pièces jointes détectées dans vos articles.
- Elle génère l’index de recherche.
- Cette étape traite le fichier XML pour créer le dossier
Consultation du site
Une fois terminé, ouvrez simplement le fichier site_genere/index.html dans n’importe quel navigateur.

- Recherche : Tapez un mot-clé pour filtrer les articles instantanément.
- Mode Sombre : Chaque article possède un commutateur (☀️/🌙) pour le confort visuel.
- Navigation : Des liens « Précédent » et « Suivant » sont ajoutés automatiquement en bas de chaque page.

3. Architecture Technique (Aspects API & Scripts)
Le système repose sur une chaîne d’exécution modulaire. Chaque script peut être utilisé comme une « API » en ligne de commande.
A. Récupération des données (download_export_xml.py)
Ce module gère l’authentification. Contrairement à l’API REST de WordPress qui est souvent bridée, ce script utilise une session HTTP persistante pour accéder à export.php.
- Entrées :
config.ini. - Sorties : Un fichier XML brut et une archive ZIP de sécurité.
B. Moteur de conversion (wp_xml_to_html.py)
C’est le cœur du système. Il analyse l’arborescence XML (Namespace content et wp).
- Nettoyage de code : Il possède des expressions régulières avancées pour extraire le code source des plugins comme PrettyCode ou les blocs Gutenberg et les reformater proprement en balises
<pre><code>. - Gestion des ressources : * Identifie les extensions :
.zip,.pdf,.mp4,.mp3, etc.- Télécharge les fichiers et renomme les liens internes pour pointer vers le dossier local
files/ouimages/.
- Télécharge les fichiers et renomme les liens internes pour pointer vers le dossier local
- Formatage : Utilise un template HTML5 injectant dynamiquement
highlight.jspour la coloration syntaxique.
C. Indexation et Navigation (wp_wml_gen_index.py)
Ce script agit comme un post-processeur de build.
- Extraction de métadonnées : Il scanne les fichiers HTML générés pour extraire les titres et les dates de publication.
- Injection de dépendances : Il télécharge dynamiquement
fuse.jspour permettre une recherche côté client sans base de données SQL. - Chainage : Il crée les liens de navigation entre les articles en fonction de leur ordre alphabétique ou chronologique.
4. Structure des Fichiers
5. Dépannage
- Erreur de connexion : Vérifiez que vous n’avez pas de 2FA (authentification à deux facteurs) activé sur le compte admin, ou utilisez un « Mot de passe d’application » WordPress.
- Images manquantes : Certains serveurs bloquent le « hotlinking ». Le script utilise un
User-Agentde navigateur pour contourner cela, mais assurez-vous que le site WordPress est public. - Interface figée : L’interface (
app.py) utilise lethreadingpour ne pas bloquer pendant les téléchargements longs. Ne fermez pas la fenêtre avant le message « ✅ Terminé ».
0 commentaire