WordPress to Micolog轉換工具

來源:互聯網
上載者:User

雖然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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.