ruby-tumblrをつくりました

Tumblr派のみなさんこんにちは。

今日はたんぶら部に加入申請致しました。はてなの仕組みが分かっていないのでたんぶら部がなになのか良く分からないのですが、よろしくお願いします。

さて本題です。ruby-tumblrをつくりました(プロジェクトページ)。versionが0.0.1ですから出来立てホヤホヤです、テストもろくにしていませんので誰かダメなところをみつけて直してやって下さいませ。ご協力お願いします。またご意見などありましたら、是非コメントもしくはメール下さいませ。
インストールの仕方

sudo gem install ruby-tumblr

して下さい。tzinfoライブラリも必要ですが、gemなのできっと一緒にインストールしてくれるのだろうと思います。

出来ること

  • read
  • write
  • backup

read

tumblr API を使ってポストを読み込みます。具体的には以下みたいな感じになります。

require "tumblr" 

Tumblr::API.read("tumblr.dynamic-semantics.com") do |pager|
  data = pager.page(0)
  p data.tumblelog
  data.posts.each do |post|
    p post
  end
end

変数postはTumblr::Data::PostのサブクラスであるTumblr::Data::RegularとかTumblr::Data::Photoのオブジェクトになります。

write

同様にtumblr APIを使ってポストを投げます。具体的には以下みたいな。

require "tumblr" 

Tumblr::API.write($email, $password) do
  regular("test body", "test title")
  quote("test quote", "test source")
  link("http://tumblr.dynamic-semantics.com", "test link")
end

Tumblr::API.write にブロックを与えるとその中で regular やら quote やらのポスト系の関数が使えるようになります。これでポストしまくりじゃないですか?

backup

tumblrって何で儲けているのか分からないので、ちょっと不安です。そろそろバックアップをとりたくなってきました。以下のようにします。

require "tumblr"

Tumblr::API.read("tumblr.dynamic-semantics.com") do |pager|
  data = Tumblr::Data.new
  0.upto(pager.last_page) do |n|
    puts "get #{n}/#{pager.last_page}"
    data << pager.page(n)
  end
  data.save("backup.xml")
end

いずれもう少しまともにしますが、とりあえずこれで画像以外のバックアップはとれます。なお tumblr API でreadした時に返ってくるものに近いフォーマットで保存しますが、あくまでもそのままではないのでご注意下さい。多少手を加えています。またフォーマットはしばらく落ち着くまでコロコロ変えてしまうと思います。

感想

rubyforge便利ですね、gemってこんなに簡単に作れたんですね。これはもうrubyforge使わないと損な感じ?

ところで私はこれまで一度もconversation型でポストしたことがないので扱いが不安です。ほとんど使っている人をみないのですが、もし使っている方がおられましたら是非ともテストをよろしくお願い致します。

ちなみにこのライブラリを作った理由は、rubyforgeで"tumblr"を検索したらプロジェクトが二つみつかったけど、どちらもやる気がなさそうだったからです。せっかく作ったのでとりあえず @nifty Timeline あたりにポスト数を記録して遊んでみたいと思います。