雖然Micolog提供了從WordPress檔案匯入日誌的功能,但WordPress到Micolog的轉換總不是那麼完美,簡單的來說,表現有二:
1,如果item中包含<title>*******.jpg</title>字樣,匯入自動中段。我也不知道為什麼WordPress匯出的xml檔案中會存在這麼怪的內容,又不是日誌,納悶。
2,圖片無法匯入。如果你日誌搬家,從WordPress轉換到Micolog,那麼原來的圖片怎麼辦?要麼以靜態檔案形式上傳到GAE,並建立好相應的路徑,但如果檔案太多,肯定會擔心超過1000檔案的限制。最好的辦法當然是按照Micolog的格式,將所有圖片匯入到GAE的資料庫中。
今天我們就來解決這兩個問題,按照我的需求,用python寫了一段code,運行後就可以將WordPress完美匯入Micolog。我們先來將具體操作,然後講原理。具體操作如下:
0,備份你的所有的WordPress的檔案到本地(本工具主要用到上傳的檔案)。進入WordPress的後台,將所有日誌匯出為wordpress.xml。這兩個在後面需要用到,所以在開始前請先處理完畢。
1,編輯app.yaml檔案,配置remote_api路徑,如下:(具體路徑可以自行修改)。(當然,這裡還包括了micolog的上傳等,請自行解決,如果已經上傳了micolog的,請初始化資料,並進入資料庫中將除了blog資料外的所有資料刪除。)
- url: /remote_api
script: $PYTHON_LIB/google/appengine/ext/remote_api/handler.py
login: admin
2,下載我的WordPress2Micolog.py檔案,編輯該檔案中的幾個參數為自己的參數:
#這是應用程式ID
app_id='myappid'
#如果是本地處理,則將host改成你自己的url路徑,如果直接在appengine上處理,則使用appspot.com
host = '127.0.0.1:8080'
#host = '%s.appspot.com' % app_id
#remote_api的路徑
remoteurl='/remote_api'
#原有Wordpress的URL
wpurl = 'http://share.sharesh.cn'
#本地Wordpress的路徑
wppath = 'E:\\PHPnow\\htdocs\\blog'
#WordPress.xml檔案所在目錄
xmlpath = 'E:\\PHPnow\\htdocs\\blog'
3,運行WordPress2Micolog.py檔案(建議使用python2.5內建的IDLE運行,如果有錯誤還能看到具體問題所在),等待。此步驟主要是上傳所有圖片,並根據wordpress.xml檔案產生micolog.xml檔案,micolog.xml檔案中圖片的路徑已經是micolog的路徑了。
4,進入micolog後台,匯入,選擇剛才產生的micolog.xml檔案,直接匯入即可。補充幾句:建議使用FireFox匯入,不要使用IE匯入;如果中途發生中斷,則是GAE逾時,在micolog.xml檔案中找到匯入的最後一個記錄的item,將catalog、tag和已經匯入的item項目全部刪除,留下沒有匯入的item項目,儲存檔案,再次匯入,直到完成即可。完成後建議在micolog背景工具中重建立立一下文章連結。
下面說說思路:
看了整個流程也基本明白我的思路了吧,其實重要之處在於WordPress2Micolog.py,這個檔案的作用是什麼呢?主要完成三件事情:1,將xml檔案中多餘的item項目刪除,以保證上傳到micolog中沒有問題;2,根據xml檔案中的img和a,將所有圖片上傳到資料庫;3,根據已經上傳了的圖片修正xml檔案中的img的src和a的href路徑。
所以我分成了兩個function,第一個function就是wordpress到臨時檔案,將無效的item刪除,並將所有圖片上傳到資料庫中,第二個function是根據資料庫中的圖片產生新的有效圖片連結,並最終產生xml檔案。
不過,工具也有問題的地方,由於我沒有png和bmp等圖片格式,所以我只判斷了jpg格式的檔案,在item的判斷中僅僅判斷了jpg,而在上傳到資料庫的時候呢,又是直接將類型定義為了image/jpeg。另外就是資料庫中的name我設定成了原始的圖片url,而不是jpg的名稱。總的來說並不影響,如果你的情況特殊,那麼請按照代碼自行修改即可。
順便測試了一下micolog匯出wordpress的功能,發現wordpress完全可以通過,只是,圖片和wordpress2micolog一樣,無法直接下載並更新連結,看來以後我要是micolog匯出到wordpress的話,還需要再寫一個工具,my god。
一直沒有發表日誌,今天終於寫上一篇來充充數。py的code寫的很菜,如果看到我寫的python覺得很好笑,請給出一定的指點,但確實讓我這樣的小菜菜也花了我不少時間,所以感歎,寫code真是一件痛苦的事情那。
最後說一下我測試通過的情況,提供給大家作參考:wordpress.xml:1.75M;post:144;jpg file:799;micolog.xml:486K。本地測試通過,用時大概而是多分鐘。而正式上傳到GAE的過程中,失敗了好幾次,不過好在我分成了兩個function,所以wp2temp的function完成以後如果temp2micolog的function失敗,那麼把wp2temp的function注釋掉,讓其直接進入到temp2micolog的function即可。這裡需要說明的是,如果wp2temp的function中途失敗,請務必到資料庫中將所有的圖片刪除掉,不過刪除後不知道為什麼資料庫竟然佔著空間不變小,鬱悶,這個就下次再考慮吧,但也看來,我的程式還是需要改進的,至少能夠斷點續傳吧。最終的測試結果是:上傳799個圖片花費40分鐘;重寫micolog.xml花費60分鐘。總共花費100分鐘,夠讓人暈的,看來還真要改進改進。
最後的最後:感謝step1
:http://files.cnblogs.com/Tangf/WordPress2Micolog.rar