#çamsuffit

  • Voici un squelette que je viens de me bidouiller pour récupérer le contenu d’un blog #Wordpress dans #SPIP. Pas envie d’y passer ma vie, accès limités aux serveurs… bref j’ai fait ça rapidement et ça m’a suffit. Je viens de récupérer 800 billets d’un Wordpress (hébergé chez Wordpress, d’ailleurs) à partir de l’export en XML, aspiré le logo de chacun et ça fonctionne.

    Comme je n’ai rigoureusement aucune expérience de Wordpress, je ne sais pas si c’est générique, je sais que ça ne reprend aucune structure (ni mots-clés, ni « rubriques ») mais bon : #çamsuffit et je te file le code si ça peut te servir.

    Le mode d’emploi est dans le début du code. Principalement : il faut installer le plugin « sale » de SPIP :
    http://plugins.spip.net/sale.html
    dans lequel il faut modifier le fichier plugin.xml pour lui dire qu’il fonctionne avec SPIP 3. Et dans le fichier « wordpress.date.xml », il faut faire deux chercher-remplacer rudimentaires, parce que je ne sais pas comment accéder à des nœuds XML nommés avec des deux-points.

    #CACHE{0}
    [(#REM)
      # Convertir une sauvegarde Wordpress vers SPIP
      #
      # activer le plugin «sale» de SPIP (si nécessaire, modifier les limites dans plugin.xml pour l'activer)
      #
      # dans "wordpress.xml"
      # remplacer "content:encoded" par "contentencoded"
      # et "wp:post_date" par "wp_post_date"
      #
      # renseigner #SET{fichier}
      # renseigner #SET{id_rubrique} (la rubrique SPIP qui accueille les billets Wordpress)
      #
      # parcourir une première fois (via les liens de pagination)
      # ce qui provoque le chargement des images distantes
      # puis passer #SET{mysql,oui}
      # et reparcourir la pagination - cette fois tout est en base et les images sont copiées
    ]


    #SET{fichier,wordpress.2013-12-28.xml}
    #SET{id_rubrique,48}
    #SET{mysql,non}



    #SET{reg_img, src=\"(.*)(\?w=[0-9]+)?\"}
    #SET{reg_caption, caption=\"(.*)(\?w=[0-9]+)?\"}
    #SET{reg_vides,\\[\-\>.*\\]}


    <B_cite>
    #PAGINATION

    <ul>
    <BOUCLE_cite(DATA)
    {source xml, #GET{fichier}}
    {datapath channel/0}
    {cle==item}
    {pagination 50}
    >
            <li>
                    <h2>[(#VALEUR{0/title/0}|typo)]</h2>
                    <h4>[(#VALEUR{0/wp_post_date/0}|affdate)]</h4>

                    [(#SET{logo,[(#VALEUR{0/contentencoded/0}|sale|match{#GET{reg_img}, Uims, 1}|copie_locale)]})]
                    [(#SET{term,[(#GET{logo}|match{(jpg|png|gif)$, "",1}]})]
                   
                   
                    <br>
                    [(#VALEUR{0/contentencoded/0}|sale|match{#GET{reg_caption}, Uims, 1})]



                    [(#VALEUR{0/contentencoded/0}
                            |replace{"<span .*>", "", Uims}
                            |replace{"</span>", "", Uims}
                            |replace{"<(strong|em)><(strong|em)>","<\1> <\2>"}
                            |replace{"<(strong|em)><(strong|em)>","<\1> <\2>"}
                            |replace{"</(strong|em)></(strong|em)>","</\1> </\2>"}
                            |replace{"</(strong|em)></(strong|em)>","</\1> </\2>"}
                            |sale
                            |replace{"<img.*>","", Uims}|strip_tags
                            |replace{#GET{reg_vides},""}
                            |replace{\\[caption.*\\],"",Uims}
                            |replace{\\[\/caption\\],""}
                            |propre
                            )]

                    [(#GET{mysql}|=={oui}|oui)
                    <?php
                            $id_article = sql_insertq("spip_articles",
                                    array(
                                            "titre" => "[(#VALEUR{0/title/0}|replace{'"','\"'})]",
                                            "id_rubrique" => #GET{id_rubrique},
                                            "texte" => "[(#VALEUR{0/contentencoded/0}
                                                    |replace{"<span .*>", "", Uims}
                                                    |replace{"</span>", "", Uims}
                                                    |replace{"<(strong|em)><(strong|em)>","<\1> <\2>"}
                                                    |replace{"<(strong|em)><(strong|em)>","<\1> <\2>"}
                                                    |replace{"</(strong|em)></(strong|em)>","</\1> </\2>"}
                                                    |replace{"</(strong|em)></(strong|em)>","</\1> </\2>"}
                                                    |sale
                                                    |replace{"<img.*>","", Uims}|strip_tags
                                                    |replace{#GET{reg_vides},""}
                                                    |replace{\\[caption.*\\],"",Uims}
                                                    |replace{\\[\/caption\\],""}
                                                    |replace{'"','\"'}
                                                    )]",
                                    "statut" => "publie",
                                    "date" => "[(#VALEUR{0/wp_post_date/0})]"
                                    )
                            );
                           
                            copy("#GET{logo}", "IMG/arton$id_article.#GET{term}");
                           
                    ?>               
                    ]               
            </li>

    </BOUCLE_cite>
    </ul>