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

  1. Vue d’ensemble
  2. Guide Utilisateur
  3. Architecture Technique (Aspects API & Scripts)
  4. Structure des Fichiers
  5. 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.com
  • USER = votre_admin
  • PASSWORD = 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 :

  1. É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.
  2. É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.

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/ ou images/.
  • Formatage : Utilise un template HTML5 injectant dynamiquement highlight.js pour 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.js pour 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

Plain Text

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-Agent de navigateur pour contourner cela, mais assurez-vous que le site WordPress est public.
  • Interface figée : L’interface (app.py) utilise le threading pour ne pas bloquer pendant les téléchargements longs. Ne fermez pas la fenêtre avant le message « ✅ Terminé ».

Source

lien de téléchargement


0 commentaire

Laisser un commentaire

Emplacement de l’avatar

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *