【Ruby】gooブログからのお引越用MTファイル自動作成ツール
移転しました。
約5秒後に自動的にリダイレクトします。
妻がブログのお引越をするというので、
MovableTypeファイル(以下MTファイル)を自動作成するツールを作ってみました。
(※gooブログも有料会員だとエクスポート機能が提供されているようですが・・・)
MTファイルのフォーマットはこちら
最近、Rubyのお勉強中なのでRubyで書いてみました。
処理の流れはこんな感じです。
1.一番古い記事にアクセス
2.1記事分をMTファイル形式に編集
3.次記事のリンクを辿って再帰処理
コードはこんな感じになりました。
(ほぼ力技なのであまりキレイなコードじゃないですが^^;)
require "nokogiri" require "uri" require "open-uri" require "kconv" $fileCount = 0 def createMTFile(url) # HTMLを取得 page = open(url, "r:binary").read doc = Nokogiri::HTML(page.toutf8, nil, "utf-8") # タイトル title = doc.css(".entry-top > h3").first.content # 本文、日付 body = doc.css(".entry-body-text").first.inner_html d = body[body.index("dc:date=") + 9, 19] date = d[5, 2]+"/"+d[8, 2]+"/"+d[0, 4]+" "+d[11, 8]+"M" body = body[0, body.index("<!--")] # カテゴリー category = doc.css(".entry-top-info-category").first.content buf = <<-EOS -------- AUTHOR: hogehoge TITLE: #{title} BASENAME: file#{$fileCount} STATUS: Publish ALLOW COMMENTS: 1 ALLOW PINGS: 1 CONVERT BREAKS: 1 CATEGORY: #{category} DATE: #{date} TAGS: #{category} ----- BODY: #{body} ----- EOS # ファイルに書き出し o = File.open("mtFile.dat", "a") o.write(buf) o.close p date + " " + title # 次の記事のURLを取得して再帰処理(なければ終わり) n = doc.css(".mod-pre-nex-next > a") if n.length > 0 nextUrl = n.first[:href] $fileCount += 1 createMTFile("http://blog.goo.ne.jp" + nextUrl) end end # 最初の記事からスタート createMTFile("http://blog.goo.ne.jp/・・・") p "end"
これで記事自体のお引越準備は完了です。
試しにはてなブログのインポートに突っ込んでみたら上手くできました。
あとは、画像ファイルをどうしようかなぁと悩み中。
なにげにはてなブログでソースコードの
シンタックスハイライトが出来るようになっていますね。
半年以上ブログをさぼっている間に進化していたようですw