2012-10-03 :-(
_ [tumblr][ruby]tumblr の like を reblog する
Android の tumblr アプリケーションをバージョンアップしたら reblog 出来なくなってしまった。tumblr へ質問を投げたんだが結局未解決。どうも私が使っている Android 2.1 がよくないようなんだが詳細不明。
reblog 出来なくても like は出来るので、スマホで like しておいた post をあとで reblog するだけの簡単なお仕事です。
環境
- Microsoft Windows 7 64bit
- cygwin
- ruby 1.9.3p194
参考
- API Tumblr
- Tumblr API v2リファレンス和訳(原文:2011/08/07 19:11:23時点) - Walrus, Googling.
- mitukiii/tumblife-for-ruby · GitHub サンプルとコードが乖離しているような。コードを読むと client.avatar には引数が無かったり。はて
準備
tumlife
tumblife を使う。
mitukiii.jp - Tumblr API v2 の Ruby ライブラリ “tumblife for ruby” 作りました
インストール
% gem install tumblife
tumblr API
tumblr API を使うためにキーをいくつか取得する。
アプリケーションの管理画面 に行ってテキトーに登録。callback はアプリケーションウェブページと同じにした。空っぽでもいいらしい。
OAuth Consumer Key と Secret Key をコピペする。
次に Consumer key を取得して OAuth 開発をはじめよう - Hatena Developer Center のコードを貰う。
コピペなどしてこんな。
#!/usr/bin/ruby
# -*- encoding: utf-8 -*-
# Consumer key を取得して OAuth 開発をはじめよう - Hatena Developer Center
# http://developer.hatena.ne.jp/ja/documents/auth/apis/oauth/consumer
require "rubygems"
require "oauth"
require 'pp'
CONSUMER_KEY = 'OAuth Consumer Key を書く'
CONSUMER_SECRET = 'Secret Key を書く'
consumer = OAuth::Consumer.new(
CONSUMER_KEY,
CONSUMER_SECRET,
:request_token_path => 'http://www.tumblr.com/oauth/request_token',
:access_token_path => 'http://www.tumblr.com/oauth/access_token ',
:authorize_path => 'http://www.tumblr.com/oauth/authorize '
# http://USER:PASS@proxy.example.jp:8888
#:proxy => ENV['HTTP_PROXY']
)
# リクエストトークンの取得
request_token = consumer.get_request_token(
:scope => 'read_public,write_public'
)
puts "Access this URL and approve => #{request_token.authorize_url}"
print "Input OAuth Verifier: "
oauth_verifier = gets.chomp.strip
# アクセストークンを取得
r_token = OAuth::RequestToken.new(
consumer,
request_token.token,
request_token.secret)
# リクエストトークンとverifierを用いてアクセストークンを取得
access_token = r_token.get_access_token(
{},
:oauth_verifier => oauth_verifier)
puts "token #{access_token.token}"
puts "secret #{access_token.secret}"
実行すると認証用URL が印字されるのでブラウザにコピペなどして URL を開く。
アプリケーションのアクセスを拒否するか許可するか訊かれるので許可する。
callback URL に飛ばされるので oauth_verifier= 移行をコピペする。
http://www.example.org/?oauth_token=XXXX&oauth_verifier=XXXX
先ほど実行したスクリプトが入力待ちなのでそこに oauth_verifier を貼り付ける。
アクセストークンが印字されるので ↓ のスクリプトへコピペする。
実行
#!/usr/bin/ruby
# -*- encoding: utf-8 -*-
require 'tumblife'
base_hostname = 'miwarin.tumblr.com'
Tumblife.configure do |config|
config.consumer_key = 'OAuth Consumer Key を書く'
config.consumer_secret = 'Secret Key を書く'
config.oauth_token = 'access_token.token の値'
config.oauth_token_secret = 'access_token.secret の値'
end
client = Tumblife.client
likes = client.likes
likes.liked_posts.each {|like|
client.reblog(base_hostname, like.id, like.reblog_key)
## like を削除したいんだがやり方が分からん
## like.id は like 対象の post になるので like.id は自分のではない。
## 401: Not Authorized (Tumblife::NotAuthorized) になる。
# client.delete(base_hostname, like.id)
}
like を取得して reblog する。
reblog したあとに like を削除したいんだが API ドキュメントにやり方が書いてない。



