RubyでTumblrにアクセスする(tumblr_client)
タグ: rubytumblr / 初版公開: 2013-10-06

RubyでTumblrにアクセスするライブラリにはいくつかあるが、どれもあまり使われていない状況だ。その中でtumblr_clientというGemがメジャーで、Tumblrによる解説でも使われている。このエントリではtumblr_clientを使って、Tumblrへの投稿と、ダッシュボードの取得をしてみることにする。

インストール

以下で入る。意外と依存関係がある。

gem install tumblr_client

初期化

トークン等、Tumblrにアクセスするために必要な要素は、事前に取得してあるものとする。それらの要素はTumblr.configで以下のように設定する。

Tumblr.configure do |config|
	config.consumer_key = "ABC..."
	config.consumer_secret = "DEF..."
	config.oauth_token = "GHI..."
	config.oauth_token_secret = "JKL..."
end

設定を終えた上でTumblr::Clientを生成しよう。Tumblrへのアクセスはすべてこのオブジェクトを通じて行う。

Tumblr::Client.new()

ダッシュボードの取得

Tumblrにアクセスしてする目に入るダッシュボードを取得してみよう。 ダッシュボードへのアクセスは、dashboard()を使って行う。 APIの結果はJSONなので、このメソッドの返却値は、JSONのパース結果がHashとArrayで構成されている。posts以下にポストのリストが入っている。 以下のコードでダッシュボードのポストが丸々取得できるはずだ。

client = Tumblr::Client.new
pp client.dashboard["posts"]

Tumblrのポストにはテキストや画像などいくつか種類がある。 取得後に振り分けても良いが、例えばテキストだけ欲しい場合は、dashboard()の引数でポストのタイプを指定して取得することもできる。

client = Tumblr::Client.new
pp client.dashboard(:type => 'text')["posts"]

Tumblrへの投稿

Tumblrに投稿するにはtext()をはじめ、ポストの種類ごとに用意された各種メソッドを利用する。最も簡単なテキストポストをしてみることにしよう。text()に渡す引数は、投稿対象のブログと、投稿内容だ。以下では’hogehoge.tumblr.com’というブログに、タイトルが’hoge’で、本文が’piyo’の投稿をする。

client = Tumblr::Client.new
client.text("hogehoge.tumblr.com", {:title => 'hoge', :body => 'piyo'})

実行した後は自分のダッシュボードを確認してみよう。自分の投稿したポストが表示されているはずだ。