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 ドキュメントにやり方が書いてない。