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
, 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
.
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
, 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
.
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
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!!
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:
è 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
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…
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
WinRAR non supporta quel formato, per scompattarlo puoi usare 7-Zip:
http://www.7-zip.org/
Ciao
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
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
Fatto, ho mandato il tutto per e-mail, grazie mille
Puoi rimandarmelo, a me non è arrivato nulla.
sandrodll (@) yahoo.it
Ciao
l’ho appena rinviato nuovamente, in un file .rar
se non ti arriva ancora è perchè te lo blocca yahoo
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']=”"
Ciao
puoi copiarmi l’errore così come appare nel prompt dei comandi, tipo: “Traceback for recent call as …”
Ciao
[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?
Il parser dei commenti ha segato i nomi file della prima riga tra , comunque era:
File stdin in module
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.
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
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
ok, mail inviata, non c’è problema per il tempo mi stai gia facendo un grosso favore!!
Buon concerto salutami il Guccio! :p
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
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
Nuovo blog online, grazie 1000 GialloPorpora il tuo aiuto è stato essenziale!
Si, ho visto il tuo nuovo blog, bello : -}
Grazie per avermi citato, comunque tu alla fin fine hai fatto via feed rSS ver ?
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?
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
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
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
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.
No, Apache e Mysql non servono, se vuoi puoi mandarmi la cartella content zippata e posso provare a farlo io.
Ciao
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
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
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.