Da Simple Php a WordPress

Questo post probabilmente interesserà solo Stormy e in esso spiego un po’ meglio come ho fatto a trasportare il blog da Simple Php Blog a WordPress.

Per farlo ho utilizzato un piccolo script in Python che salva in un file WXR (WordPress Extended RSS) tutti i post e i commenti del vecchio blog. Questo file sarà poi importabile in WordPress che si arrangerà a riempire il database. Lo script non è perfetto ed è ottimizzato per funzionare con il codice che io avevo usato nel vecchio blog, in particolare, non ho previsto una conversione del tag [;img] visto che non lo avevo mai usato (o quasi).

Una volta installato Python (è facile basta cliccare sempre “Avanti”) dovrai scompattare il file che contiene lo script (link) nella cartella di Python (in teoria “C:\Python25” se scarichi l’ultima versione disponibile). Ora dovrai modificare i due file che ci sono:

head.xml

Contiene delle informazioni generali circa il blog, la sua modifica non è indispensabile in quanto si può sempre cambiare i dati in esso presenti in un secondo momento. In ogni caso, se si decide di modificarlo assicurarsi di salvarlo con codifica utf-8, motivo per cui serve un editor serio tipo Crimson Editor o Notepad++, il Notepad in questo caso non può essere usato.

spb2wp.py

Bisogna modificare le variabili globali (hanno un prefisso gb_, nello specifico:
gb_perc contiene la cartella in cui è salvato il database di Simple Php Blog in locale (attenzione che bisogna usare la doppia “\\” nei percorsi dei file)
gb_url l’url in cui verrà installato il nuovo blog WordPress (consiglio personale di lasciare il localhost seguito dalla cartella in cui hai installato WordPress localmente)
gb_categorie le categorie di Simple Php Blog come (numero -> categoria)
gb_feed l’url del feed RSS (o atom) del vecchio blog. Non è indispensabile, serve solo nel caso si voglia creare il file per i redirect 301

Poi ci sarebbe il “gialloporpora” come autore per cui non è stata prevista una variabile, ma anche se lo lasci in fase di importazione WordPress ti chiederà di assegnare gli articoli ad uno degli utenti presenti sul tuo blog e ignorerà questo campo.

Una volta fatte le modifiche salvare il file normalmente (non con codifica utf-8).

Bene ora basta avviare Python, da commandline:

C:\>cd \python25
C:\>Python25> python

Quando appare il prompt di benvenuto di Python dare i seguenti comandi:
>> from spb2wp import *
> createwxr()
>>> optimizewxr()

Bene, ora il file dovrebbe essere stato creato in “C:\Python25” con il nome di spb2wp.xml. Non è detto che sia tutto perfetto, anzi è probabile il contrario, ma il file è modificabile con un editor di testo e contiene tutti i post e i commenti del vecchio blog.. Diciamo che con un buon editor di testo con un po’ di Search&Replace si possono correggere in una decina di minuti gli eventuali problemi rilevati. In particolare, cercare eventuali tag ?[;img] o [url=….] ancora presenti nel codice. E’ importante salvarlo con codifica utf-8.

Bene, una volta fatte le eventuali correzioni basta importarlo in WordPress e sperare !

Purtroppo lo script non è stato pensato per esportare un generico Simple Php Blog ma bensì per esportare solo il mio di blog :P, ci sono quindi delle cose particolari che potrebbero generare problemi su un altro blog (in particolare io ho sempre fatto l’encode degli & quando inserivo HTML puro, se non lo si è fatto bisogna rimuovere una riga di codice).

Non è pensato per esportare le entry statiche per quello bisogna fare a mano. Non ho modificato i vecchi link, ma è possibile creare un file index.php che faccia i giusti redirect 301 e che va messo nella home del vecchio blog (se i due blog sono installati nello stesso percorso bisogna aggiungere il codice all’index.php di WordPress). Per reindirizzare anche i commenti rinominare il file “index.php” in “comments.php” e caricarlo sul server. Non ho previsto un redirect delle pagine statiche (si sta prima a farlo a mano) nè delle categorie.

Se poi ti trovi bene e vedi che funziona anche a te ti posso dire come modificare i file di SPB in modo da generare una sitemap della morte (update odierno e aggiornamento a never) , ricordo che l’avevo fatta quando avevo traslocato da altervista, ma non mi ricordo di preciso come avevo fatto :-P.

Se ti dà qualche errore (il che è probabile) me lo segnali che provo a personalizzarti il codice.

Nota: il database deve essere vuoto per fare l’import del file perchè non sovvrascrive i vecchi post durante l’importazione (almeno mi sembra)
Questo post probabilmente interesserà solo Stormy e in esso spiego un po’ meglio come ho fatto a trasportare il blog da Simple Php Blog a WordPress.

Per farlo ho utilizzato un piccolo script in Python che salva in un file WXR (WordPress Extended RSS) tutti i post e i commenti del vecchio blog. Questo file sarà poi importabile in WordPress che si arrangerà a riempire il database. Lo script non è perfetto ed è ottimizzato per funzionare con il codice che io avevo usato nel vecchio blog, in particolare, non ho previsto una conversione del tag [img] visto che non lo avevo mai usato (o quasi).

Una volta installato Python (è facile basta cliccare sempre “Avanti”) dovrai scompattare il file che contiene lo script (link) nella cartella di Python (in teoria “C:\Python25” se scarichi l’ultima versione disponibile). Ora dovrai modificare i due file che ci sono:

head.xml

Contiene delle informazioni generali circa il blog, la sua modifica non è indispensabile in quanto si può sempre cambiare i dati in esso presenti in un secondo momento. In ogni caso, se si decide di modificarlo assicurarsi di salvarlo con codifica utf-8, motivo per cui serve un editor serio tipo Crimson Editor o Notepad++, il Notepad in questo caso non può essere usato.

spb2wp.py

Bisogna modificare le variabili globali (hanno un prefisso gb_, nello specifico:
gb_perc contiene la cartella in cui è salvato il database di Simple Php Blog in locale (attenzione che bisogna usare la doppia “\\” nei percorsi dei file)
gb_url l’url in cui verrà installato il nuovo blog WordPress (consiglio personale di lasciare il localhost seguito dalla cartella in cui hai installato WordPress localmente)
gb_categorie le categorie di Simple Php Blog come (numero -> categoria)
gb_feed l’url del feed RSS (o atom) del vecchio blog. Non è indispensabile, serve solo nel caso si voglia creare il file per i redirect 301

Poi ci sarebbe il “gialloporpora” come autore per cui non è stata prevista una variabile, ma anche se lo lasci in fase di importazione WordPress ti chiederà di assegnare gli articoli ad uno degli utenti presenti sul tuo blog e ignorerà questo campo.

Una volta fatte le modifiche salvare il file normalmente (non con codifica utf-8).

Bene ora basta avviare Python, da commandline:

C:\>cd \python25
C:\>Python25> python

Quando appare il prompt di benvenuto di Python dare i seguenti comandi:
>> from spb2wp import *
> createwxr()
>>> optimizewxr()

Bene, ora il file dovrebbe essere stato creato in “C:\Python25” con il nome di spb2wp.xml. Non è detto che sia tutto perfetto, anzi è probabile il contrario, ma il file è modificabile con un editor di testo e contiene tutti i post e i commenti del vecchio blog.. Diciamo che con un buon editor di testo con un po’ di Search&Replace si possono correggere in una decina di minuti gli eventuali problemi rilevati. In particolare, cercare eventuali tag ?[;img] o [url=….] ancora presenti nel codice. E’ importante salvarlo con codifica utf-8.

Bene, una volta fatte le eventuali correzioni basta importarlo in WordPress e sperare !

Purtroppo lo script non è stato pensato per esportare un generico Simple Php Blog ma bensì per esportare solo il mio di blog :P, ci sono quindi delle cose particolari che potrebbero generare problemi su un altro blog (in particolare io ho sempre fatto l’encode degli & quando inserivo HTML puro, se non lo si è fatto bisogna rimuovere una riga di codice).

Non è pensato per esportare le entry statiche per quello bisogna fare a mano. Non ho modificato i vecchi link, ma è possibile creare un file index.php che faccia i giusti redirect 301 e che va messo nella home del vecchio blog (se i due blog sono installati nello stesso percorso bisogna aggiungere il codice all’index.php di WordPress). Per reindirizzare anche i commenti rinominare il file “index.php” in “comments.php” e caricarlo sul server. Non ho previsto un redirect delle pagine statiche (si sta prima a farlo a mano) nè delle categorie.

Se poi ti trovi bene e vedi che funziona anche a te ti posso dire come modificare i file di SPB in modo da generare una sitemap della morte (update odierno e aggiornamento a never) , ricordo che l’avevo fatta quando avevo traslocato da altervista, ma non mi ricordo di preciso come avevo fatto :-P.

Se ti dà qualche errore (il che è probabile) me lo segnali che provo a personalizzarti il codice.

Nota: il database deve essere vuoto per fare l’import del file perchè non sovvrascrive i vecchi post durante l’importazione (almeno mi semb

32 Responses to “Da Simple Php a WordPress”


  • Mozilla Firefox 2.0.0.11 Windows XP

    Si, semplice non è :-P.
    Diciamo che dovrebbe bastare eseguire lo script, gli errori che mi ha segnalato @pagoda non li ho ancora corretti ma magari lo faccio domani.
    Ciao

  • Mozilla Firefox 3.0 Windows XP

    Ciao!
    Bella idea questo script, mi sarebbe veramente utile, ma non riesco a farlo funzionare…

    Il file che viene creato contiene solo l’head e le categorie (sbagliate, perchè scrive “categoriaprova” come nome in tutte).

    Dei post, non c’è traccia. Visto che non so usare Python, non sono sicuro di inserire i percorsi correttamente.
    Ho Apache2Triad installato sul pc e questi sono i percorsi:
    Blog vecchio SPB: C:\apache2triad\htdocs\Siti\Blog-backup
    Blog nuovo WP: C:\apache2triad\htdocs\Siti\WordPress

    E questa è la configurazione dello script che ho:
    gb_feed=”http://www.gialloporpora.netsons.org/Blog/atom.php?n=700″
    gb_perc=”c:\\apache2triad\\htdocs\\Siti\\Blog-backup\\content”
    gb_categorie={“1″:”Italia”,”2″:”Spagna”,”3″:”Università”,”4″:”Gente”,”5″:”Lavoro”,”6″:”Marketing”,”7″:”Cool”,”8″:”Top Lists”,”9″:”Musica”}
    gb_tags=[]
    gb_url=”http:/localhost/WordPress”

    Dov’è l’errore?!?!?
    Grazie per l’aiuto!!

  • Mozilla Firefox 3.0 Windows XP

    Uhm, era meglio se a suo tempo lo facevo in PHP.

    Spero di ricordarmi ancora qualcosa, è un bel po’ di tempo che non guardo più quello script.

    Intanto, di sicuro:

    gb_feed=”http://www.gialloporpora.netsons.org/Blog/atom.php?n=700″


    è sbagliato, devi mettere il tuo di feed, ovviamente.
    Alla fine aggiungi &n=numero dove numero è un numero abbastanza grande (in modo da far apparire tutti i tuoi post nel feed, basterebbe fosse n_post+1, dove n_post è il numero totale dei tuoi articoli, ma tu esagera pure 🙂 ).

    Se hai pazienza, puoi mandarmi la cartella dove hai il blog (/content/) e posso provare io a creare il file XML.
    Ciao

  • Mozilla Firefox 3.0 Windows XP

    Ok, ho cambiato il feed e ora mi carica più o meno il primo mese di blog e poi si blocca per un errore, anzi 3, e non li capisco…

    Posso davvero mandarti la mia cartella /content? Grazie!! 😛 Ma dove la mando? Non ho trovato il tuo indirizzo…

  • Mozilla Firefox 3.0.1 Windows 2000

    Ciao,
    stò cercando di migrare da spb a wordpress, seguendo le tue istruzioni.
    Già mi sono bloccata, che non winrar non riesco a scompattare lo script che ha estensione .7z
    Come potrai capire non sono molto afferrata, se puoi aiutarmi.
    Grazie

  • Mozilla Firefox 3.0.1 Windows XP

    WinRAR non supporta quel formato, per scompattarlo puoi usare 7-Zip:
    http://www.7-zip.org/

    Ciao

  • Mozilla Firefox 3.0.1 Windows 2000

    Ho scaricato il prog, ho eseguito le istruzioni, ma il file spb2wp.xml che viene creato contiene solo questo (premetto che ho seguito la tua linea per inserire le categorie):

    Il blog che non c’è
    http://localhost/Wordpress
    Just another WordPress weblog
    Wed, 14 Nov 2007 15:41:23 +0000
    http://wordpress.org/?v=2.3.1
    en 11
    10

  • Mozilla Firefox 3.0.1 Windows XP

    Se vuoi puoi mandarmi:
    1) il file .py che hai scaricato e modificato con le giuste categorie
    2) la cartella content di SPB che posso provare io a generarti il file di backup (in settimana 😛 )
    Ciao

  • Mozilla Firefox 3.0.1 Windows 2000

    Fatto, ho mandato il tutto per e-mail, grazie mille

  • Mozilla Firefox 3.0.1 Windows XP

    Puoi rimandarmelo, a me non è arrivato nulla.
    sandrodll (@) yahoo.it
    Ciao

  • Internet Explorer 7.0 Windows Vista

    l’ho appena rinviato nuovamente, in un file .rar
    se non ti arriva ancora è perchè te lo blocca yahoo

  • Mozilla Firefox 3.0.3 Windows Vista

    Ciao,
    sto provando ad importare tutto con il tuo script, ho gia modificato il DATE aggiungendo il try except.
    Attualmente si blocca su:

    #ora aggiungo i commenti (se ce ne sono)
    File “spb2wp.py”, line 122, in readcomment
    try:
    Keyerror: ‘DATE’

    che fare?

    Grazie!

    P.S.
    Il codice in quel punto attualmente è:

    for i in range(len(l)/2):
    d[l[2*i]]=l[2*i+1]
    try:
    d[‘DATE’]=getDate(int(d[‘DATE’]))
    except:
    d[‘DATE’]=’1197550746′
    if not(d.has_key(‘IP-ADDRESS’)): d[‘IP-ADDRESS’]=””

  • Mozilla Firefox 3.0.3 Windows XP

    Ciao
    puoi copiarmi l’errore così come appare nel prompt dei comandi, tipo: “Traceback for recent call as …”
    Ciao

  • Mozilla Firefox 3.0.3 Windows Vista

    [Grazie per la risposta] 🙂
    Certo, eccolo:
    Traceback (most recent call last):
    File “”, line 1, in
    File “spb2wp.py”, line 201, in createwxr
    f.write(getwxrentry(y).decode(‘ISO-8859-1’).encode(‘utf-8’))
    File “spb2wp.py”, line 169, in getwxrentry
    d=readcomment(i)
    File “spb2wp.py”, line 129, in readcomment
    d[‘CONTENT’]=bbintohtml(d[‘CONTENT’])
    Keyerror: ‘CONTENT’
    >>>

    Idee?

  • Mozilla Firefox 3.0.3 Windows Vista

    Il parser dei commenti ha segato i nomi file della prima riga tra , comunque era:
    File stdin in module

  • Mozilla Firefox 3.0.3 Windows XP

    Prova a fare questa modifica:
    http://www.gialloporpora.netsons.org/da-simple-php-a-wordpress/293/#comment-2215

    altrimenti, se non va, ci deve essere un commento vuoto.
    Se vuoi, puoi mandarmi la cartella content del blog zippata che te lo faccio io (solo perchè è più semplice trovare gli errori avendo in mano il contenuto).
    Ciao
    PS: e anche il file py modificato con le categorie giuste.

  • Mozilla Firefox 3.0.3 Windows XP

    Ciao Gialloporpora,
    ho provato con la modifica suggerita ma non funziona comunque.
    A questo punto visto che sei così gentile io ti passerei il tutto, se mi fai avere il tuo indirizzo email (o contatto skype o altro) ti passo tutto al volo..grazie 🙂

  • Mozilla Firefox 3.0.3 Windows XP

    Ok, la mail è:
    sandrodll
    poi puoi scegliere se usare gmail.com o yahoo.it.
    Te lo guardo domani però, stasera vado a vederre il concerto di Guccini e non ho di sicuro tempo.
    Ciao

    PS: lascia pure un commento anche qui dell’avvenuta spedizione della mail che così se non la vedo arrivare mi guardo lo spam della webmail, che non è la prima volta che si mangia delle mail lecite.
    Ciao

  • Mozilla Firefox 3.0.3 Windows XP

    ok, mail inviata, non c’è problema per il tempo mi stai gia facendo un grosso favore!! 🙂
    Buon concerto salutami il Guccio! :p

  • Mozilla Firefox 3.0.3 Windows XP

    Ok, te lo saluto 🙂
    La mail mi è arrivata e ho salvato il file, poi domani ci dò un’occhiata.

    Per le immagini: quello è un problema perchè io non ho previsto la conversione del tag img usato da SPB, in quanto io non lo avevo mai usato.
    Il file lo apri con un editor di testo e una volta aperto potresti fare – come avevo fatto io – delle sostituzioni del base path dei link, esempio io avevo cambiato:
    gialloporpora.altervista.org
    con:
    gialloporpora.netsons.org
    Le immagini però, io le avevo su Photobucket proprio per evitare questo tipo di problemi aggiuntivi.
    Bisogna vedere quale è il percorso delle immagini (e se si usa il path relativo o l’URL assoluto), non dovrebbe essere difficile modificare i path, più difficile è sostituire il BBCode con l’HTML.
    Se ne hai tante provo a riscrivere la regex per la conversione del BBCode in HTML, sperando tu abbia sempre usato lo stesso metodo di inserimento delle immagini (SPB ne prevedeva due).
    Ciao

  • Mozilla Firefox 3.0.3 Windows XP

    Perfetto,
    io avevo usato un solo tipo di inserimento immagini, ed in effetti usavo pppblog (che comunque dovrebbe essere identico a sbp su queste cose visto che è basato sullo stesso).
    Per le immagini dovrebbe essere usato un path relativo un po ovunque ma se in input ho un file xml (o comunque editabile) non ci vuole molto a sostituire tutte le espressioni del tipo “~/caio/blog/” con il nuovo path.
    Lo stesso dovrebbe valere per la sostituzione dei tag, ma dando un’occhiata veloce al sorgente dei post non sembrano essercene perchè nell’inserimento della news il motore del blog faceva tutte le traduzioni necessarie

  • Mozilla Firefox 3.0.3 Windows XP

    Nuovo blog online, grazie 1000 GialloPorpora il tuo aiuto è stato essenziale! 😉

  • Mozilla Firefox 3.0.3 Windows XP

    Si, ho visto il tuo nuovo blog, bello : -}
    Grazie per avermi citato, comunque tu alla fin fine hai fatto via feed rSS ver ?

  • Mozilla Firefox 3.0.7 Mac OS X 10

    Ciao, sto cercando di far funzionare il tuo script su Mac. Per ora ho il problema che non mi fa trovare il path, penso a causa dei backslash (su Mac per il path si usa /). C’è un modo per ovviare il problema?

  • Mozilla Firefox 3.0.8 Windows XP

    Si, credo si debba cambiare \\ con /.

    Io ho usato il “\\” per costruire i percorsi nelle funzioni quindi bisognerebbe cambiarli anche lì, se vuoi provo a darci un’occhiata quando ho tempo, se ci riesci meglio.

    In realtà, avrei potuto usare os.sep per il separatore e non ci sarebbero stati questi problemi, però al tempo non conoscevo benissimo Python (neanche ora a dire la verità, però un po’ meglio ).

    Ciao

  • Mozilla Firefox 3.0.8 Windows XP

    Prova a fare queste modifiche:

    la riga:

    from os import listdir

    cambiala con:

    from os import listdir,sep

    poi fari una sostizione di tutti i “\\” con sep (usa un editor e fai un replace globale della stringa “\\”, virgolette incluse con sep).

    Ciiao

  • Mozilla Firefox 3.0.8 Windows XP

    Prova a fare queste modifiche:

    la riga:

    from os import listdir

    cambiala con:

    from os import listdir,sep

    poi fari una sostizione di tutti i “\\” con sep (usa un editor e fai un replace globale della stringa “\\”, virgolette incluse con sep).

    Ciiao

  • Mozilla Firefox 3.0.7 Mac OS X 10

    Lo script ora non mi da errore, ma non mi esporta nulla. Poiché ho la partizione Windows, potrei farlo lì, ma devo installare tutto. A parte Python è necessario che mi installo anche Apache e MySql? WordPress è stato già configurato.

  • Mozilla Firefox 3.0.8 Windows XP

    No, Apache e Mysql non servono, se vuoi puoi mandarmi la cartella content zippata e posso provare a farlo io.
    Ciao

  • Mozilla Firefox 3.0.7 Mac OS X 10

    Ti ringrazio, adesso provo di là. E’ un fatto di orgoglio! 😀

    Secondo te c’è qualcosa di sbagliato qui? (è la versione per Mac)

    from os import listdir,sep
    from time import strftime, localtime
    import re

    gb_feed=”http://www.tsubasa.it/rss.php”
    gb_perc=”/Users/tsu/Sites/tsubasa/content”
    gb_categorie={“1″:”Musica”,”2″:”Libri”,”3″:”Film”,”4″:”Storie di vita”,”5″:”tsubasa.it”,”6″:”Inutilia”,”7″:”In giro per il mondo”,”8″:”Vita da dottorando”,”9″:”Gironzolando per la rete”}
    gb_tags=[]
    gb_url=”http:/localhost:8888/wordpress/”
    gb_commnumb=1
    gb_entrynumb=1

  • Mozilla Firefox 3.0.8 Windows XP

    Così ad occhio no, però bisognerebbe vedere il messaggio di errore ritornato da Python, quello script a me funzionava però se dai un’occhiata ai commenti ad alcuni no perchè avevano impostazioni diverse dalle miei in sPB e io non avevo previsto tutte le varianti.

    Lo script è ancora quello iniziale (non lo ho aggiorato) e potrebbe anche non funzionare per questi motivi.

    Qui è una mia ignoranza, il percorso è globale /user/… ?
    altra cosa, la porta non serve nel percorso, toglila “localhost:8088”, comunque non dovrebbe inficiare il funzionamento dello script, forse qualche problema in fase di importazione su wP.
    Ciao

  • Mozilla Firefox 3.0.7 Mac OS X 10

    Riguardo alla porta: ho provato sia con sia senza.
    Si, il percorso inizia così.

    Vabbé c’ho provato. Il blog era fermo da un po’, quindi lo linko e me lo tengo sul server, poi un giorno troverò una soluzione.

    Grazie.

Leave a Reply