今晚試著照 Jekyll 網站教的方法把 wordpress.com 的資料轉過來,遇到了一些問題,主要是 yaml 無法正確處理 UTF-8 資料以及原始檔名有包含 % 時會有重複 escape 的問題。花了一點功夫試出了解決方式如下:

修改 wordpressdotcom.rb:

--- a/source/_import/wordpressdotcom.rb
+++ b/source/_import/wordpressdotcom.rb
@@ -3,6 +3,7 @@
require 'rubygems'
require 'hpricot'
require 'fileutils'
+require 'ya2yaml'
require 'yaml'
require 'time'

@@ -16,7 +17,7 @@ module Jekyll

    (doc/:channel/:item).each do |item|
        title = item.at(:title).inner_text.strip
-        permalink_title = item.at('wp:post_name').inner_text
+        permalink_title = item.at('wp:post_name').inner_text.delete('%')
        # Fallback to "prettified" title if post_name is empty (can happen)
        if permalink_title == ""
        permalink_title = title.downcase.split.join('-')
@@ -54,7 +55,7 @@ module Jekyll

        FileUtils.mkdir_p "_#{type}s"
        File.open("_#{type}s/#{name}", "w") do |f|
-          f.puts header.to_yaml
+          f.puts header.ya2yaml
        f.puts '---'
        f.puts item.at('content:encoded').inner_text
        end
--
1.7.5.4

所以舊的文章都轉過來啦,但是排版不是太正確,而且也用了一些 wordpress 特有的 tag 還沒換,必須要寫個簡單的 script 來把它轉回來,可能改天有空再弄吧…