Migre static - plugin de migration d’un site

d’un site anciennement statique à SPIP

Passer d’un ancien site (statique ou avec un autre gestionnaire exotique) à SPIP sans en perdre le contenu et en disposant de tous les outils de SPIP : une migration des pages en articles et hop un site tout neuf...

Ce plugin permet d’importer en masse des articles d’un ancien site statique (dont vous détenez les droits) dans votre nouveau site SPIP. Chaque page donnera un article. Vous pouvez choisir la rubrique et le mot-clé associé aux articles ainsi importés.

Avertissement

Une erreur s’était glissée dans un des liens de téléchargement et donnait accès à une très ancienne version de migre_static. Il vous est recommandé de mettre à jour votre plugin pour une utilisation optimale.

Télécharger le plugin

  • Ce plugin est disponible sur spip-zone ici :
    Dernière version du plugin migre_static sur spip-zone
  • vous y avez accès ici aussi

Fonctionnalités

Un petit inventaire non exhaustif des fonctionnalités de ce plugin :

  • import massif de pages web à partir d’une liste fournie par l’utilisateur,
  • possibilité de pré-visualisation des articles avant une migration réelle (import à « blanc »),
  • au moment de l’import :
    • nettoyage du code (tidy) HTML de la page d’origine,
    • extraction du titre du document,
    • extraction de la langue du document, si celle-ci n’est pas définie, utilisation de la langue par défaut de la rubrique,
    • extraction du corps de la page à importer au minimum la partie comprise entre les balises BODY,
    • conversion du jeu de caractères de la page vers celui utilisé par le site utilisant SPIP,
    • possibilité de réduire le bloc à importer à une zone définie du BODY,
    • conversion du HTML en balises typographiques de SPIP par le biais de filtres successifs,
    • possibilité d’ajouter des filtres, de modifier les filtres standards avant import des pages,
    • ajout éventuel de mot-clés pour tous les articles importés,
    • affichage du lien vers les articles créés lors d’un import réel,
  • action optionnelle pour Découper un texte en pages et/ou en onglets à l’aide du plugin Couteau Suisse, si ce plugin est installé ainsi que cette fonction. La balise de découpage ++++ est insérée en amont de chaque intertitre.
    • Transformation des liens internes d’origine vers les articles importés lorsque c’est possible.
    • réduction de l’affichage des parties affichées et traitées (seulement les 5 premières pages) lors d’un import à blanc

Historique

Inspiré de Faire migrer un site statique vers SPIP cet outil a été entièrement revu pour être intégré sous forme de plugin. Les fonctionnalités supplémentaires sont :

  • certains traitements ont été améliorés notamment l’encodage (UTF-8, ISO8869 etc.),
  • des possibilités de tests (import à blanc),
  • un niveau « expert »
  • intégration complète dans l’interface de SPIP, notamment du point de vue des rubriques et des mots clés.
  • Internationalisation : fourni en français et en anglais, et support d’autres langues (pour peu que quelqu’un fournisse les fichiers de langue !).

A la différence de Le bouton mémo, il permet de :

  • ne migrer que des pages d’un site que l’on possède. En effet, contrairement au bouton mémo, il est possible d’importer/copier un site complet sans problèmes. D’où la nécessité de brider cette copie, chose que ne permet pas le bouton mémo, même s’il reste dans du page par pages...
  • de migrer des dizaines, voire des centaines de pages d’un seul bloc, ou rubrique par rubrique.
  • de fonctionner comme un plugin et de respecter l’architecture de SPIP (action, exec) et de ne pas être un mélange de squelette, de formulaire et de fonctions... Bref, plus propre j’espère !

Utilisation étape par étape

Installation et activation du plugin

Comme tous les plugins de SPIP, vous installez « migre_static » dans le répertoire plugins situé à la racine de votre site SPIP comme indiqué ici sur spip.net. Puis vous vous rendez dans l’espace privé et activez le plugin. Une fois activé dans la navigation des rubriques une case supplémentaire (à droite) s’affichera : « Migration d’un site statique ».

Chargement du plugin

Liste des pages à migrer :

Pour migrer votre ancien site vous devrez auparavant faire la liste des pages que vous voulez importer (migrer). Vous pouvez utiliser par exemple celle que vous auriez dans un fichier sitemap. Idéalement cette liste ne doit contenir que des URLs de pages de votre site et rien d’autre (le reste est ignoré au mieux, plante la lecture de votre liste au pire), sous la forme suivante par exemple :

http://www.monsite.com/page1.html
http://www.monsite.com/rep/page2.php
http://www.monsite.com/rep/lapage?lesarguments

La liste peut aussi contenir des éléments sous la forme suivante :

<a href='http://www.monsite.com/rep/lapage?lesarguments'>Liens vers ma page</a>

ou comme (des URLs séparés par des espaces ou des tabulations :

http://www.monsite.com/rep2/ http://www.monsite.com/page3 

Sauvegardez cette liste sous la forme la_liste_des_pages.html  [1] (vous pouvez bien sur choisir un autre nom de fichier).

Une fois cette liste créée vous la déposez sur le site statique. Cette condition est rendue obligatoire pour s’assurer que vous avez bien le droit d’accès aux données du site en question.

Accéder aux paramètres de la migration :

Dans l’interface de publication, en tant qu’administrateur, vous allez dans une rubrique dans laquelle vous souhaitez importer les pages, par exemple une rubrique créée pour l’occasion : Import ou Archives. Vous cliquez sur « Migration d’un site statique->saisie des informations ».

Démarrage de la migration à partir d’une rubrique

Initialisation de la migration

Vous accédez alors à la page de Saisie des informations pour la Migration d’un site statique. Il vous faudra renseigner :

  • obligatoirement : L’adresse de la liste des pages à importer, par exemple : «  »" class="spip_url spip_out auto" rel="nofollow external">http://www.monsite.com/la_liste_des_pages.html».
  • de façon facultative : choisir un mot-clé (Article) qui sera mis sur chaque article ainsi créé (par exemple le mot-clé Archive). Le choix d’un mot-clé n’est pas obligatoire.
  • obligatoirement : choisir s’il s’agit d’un import à blanc (le résultat des pages importées est seulement affiché après traitement) ou si vous lancez la migration effective. Je vous recommande un test à blanc (avec quelques pages) avant de vous lancer en masse !!!

Puis vous pouvez déclencher la migration (ou le test à blanc) en appuyant sur le bouton « Valider ».

Saisie des informations de la migration

Réalisation de la migration :

Selon que vous avez choisi un import à blanc ou une migration réelle :

  • Pour chaque page (donc chaque article) sera affiché (s’il a pu être importé) : une fenêtre avec son affichage après traitement de SPIP (#TEXTE), une fenêtre avec sa source comme si vous éditiez un article.
Résultat de la migration de pages à blanc
  • En cas d’import réel , pour chaque page est affiché le titre de l’article et son numéro. En cas d’erreur, le message d’erreur est affiché pour chaque page concernée.
Résultat de la migration de pages

Paramètres avancés - niveau expert

Pour ceux qui voudraient améliorer le rendu de la migration certains paramètres peuvent être modifiés avant démarrage de la migration. Attention ce sont des expression régulières PCRE (utilisée par la fonction PHP preg_replace). Certaines sont préremplies : c’est le traitement standard prévu.

Lors de l’initialisation de la migration, en cliquant sur la flèche Filtres de conversion des balises HTML, vous pourrez :

  • avec la balise de début et de fin de bloc : sélectionner la partie du BODY qui vous intéresse (seule la partie située entre ces deux balises sera prise en compte dans l’article importé). Ceci peut être utile si on veut éviter de récupérer le haut de page ou d’anciens menus qui n’ont pas d’intérêt dans un article. Voir en fin de page pour plus d’explications.
  • Pour chaque balise vous pouvez modifier : son mode de sélection, sa conversion éventuelle (une conversion vide implique la suppression de la balise, un filtre de sélection vide implique qu’il n’y aura pas de traitement).
  • Vous pourrez ajouter vos propres filtres de pré-traitement et/ou de post-traitement.
Paramétrage pour les experts

Migration des liens

  • Les liens relatifs ou absolus sont mise à jour lors de la migration (si c’est possible).
  • Si vous effectuez une migration par blocs, une possibilité supplémentaire de mise à jour est proposée en cliquant (à la fin de l’étape 2) sur l’option de mise à jour des liens. Cette fois c’est l’intégralité des articles qui sera parcourue pour effectuer cette mise à jour et non pas seulement le bloc importé.

Utilisation de CFG

La configuration du plugin migre_static utilise le plugin CFG (qui doit donc être installé). C’est optionnel (au moment de la rédaction de cet article). Cela permet un accès plus simple au paramétrage de la migration et à certains aspects non accessibles par ailleurs.

Utilisation de CFG pour configurer le plugin

Fonctionnalités envisagées - TODO

  • la possibilité d’indiquer la rubrique d’import dans la liste sous la forme par blocs
  • de même la possibilité d’indiquer le mot clé dans la liste
  • la possibilité de forcer la langue
  • amélioration des filtres
  • présenter les filtres sous forme dynamique

Petite aide sur la création d’une Site Map ou le formatage des pages à importer

Parce qu’il s’agit d’un site statique, il peut-être compliqué de faire la liste de toutes ses pages (ou un simili sitemap). Voici une petite aide pour en faire une manuellement.

Lorsque toutes vos pages html sont prêtes dans un dossier, rendez-vous à l’adresse du dossier conteneur afin de voir s’afficher une liste (généré par le serveur) des fichiers du dossiers, vos pages à migrer, en l’occurrence.
Récupérez le code source de cette liste, et utilisez l’outil « remplacer par » en utilisant un bloc-note ou éditeur HTML.
Remplacez par rien du tout toutes les balises autres que les liens.

Votre liste est prête !

Pour définir le bloc à importer de chaque page

Vous pouvez utiliser le même système que ci-dessus pour ajouter un <!-- BEGIN --> et <!-- END -->, il suffit de remplacer, par exemple, un <div id="article">

par un <!-- BEGIN --><div id=article>

et un <!-- END --><div id=footer">

(la balise juste après le div de l’article) avant de lancer la migration. Dans ce cas vous pouvez renseigner les balises de début de bloc et de fin de bloc dans la partie « configuration avancée » avec l’exemple fourni dans cette page.

Notes

[1Pour générer une telle liste vous pourriez par exemple (en ligne de commande Unix) faire :

wget -X repertoire_cache -B http://www.monsite.com -r -l inf -np -nv http://www.monsite.com -O rien.txt 2>&1 | awk ’print $2’ | cut -b 5- > la_liste_des_pages.html


-  -X repertoire_cache permet d’exclure les chemins contenant ce mot-clé, cette option n’est pas obligatoire
-  si vous avez un lien peu rapide ou un serveur chargé, il faudra peut être ajouter une limite de débit et de timeout
-  le fichier « rien.txt » créé peut-être supprimé sans soucis

Il vous est possible de contribuer à ce plugin par le biais de SVN sur spip-zone. N’hésitez pas à me contacter avant de contribuer.

Discussion

Aucune discussion

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

Qui êtes-vous ?
[Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom