require 'pp' require 'rubygems' require 'mechanize' require 'uri' require 'pstore' $logger = Logger.new(STDOUT) class ReblogPost def initialize(email, password) @email = email @password = password end def get_rk(id, user) top_uri = 'http://' + user + '.tumblr.com/post/' + id.to_s $logger.info("open url: " + top_uri) agent = WWW::Mechanize.new top_page = agent.get(top_uri) if /rk=(.*)/ =~ top_page.iframes.last.uri.request_uri then rk = $1 return $1 end end def post(id, user) $logger.info("post to: " + user + ", " + id.to_s) return unless id return if id == 0 rk = get_rk(id, user) $logger.info("get rk: " + rk) return unless rk dash_uri = 'http://www.tumblr.com/dashboard' $logger.info("open url: " + dash_uri) agent = WWW::Mechanize.new page = agent.get(dash_uri) form = page.forms.first form.email = @email form.password = @password logined = agent.submit(form) reblog_url = "http://www.tumblr.com/reblog/" + id.to_s + '/' + rk $logger.info("open url: " + reblog_url) reblog_page = agent.get(reblog_url) reblog_post = reblog_page.forms.first post = agent.submit(reblog_post) $logger.info("post success: " + id.to_s) end end
上のクラスを
reblogpost = ReblogPost.new(account, password)
reblogpost.post(post_id, user)
みたいな感じで使って下さい。弱点としては毎回ログインしている。クッキーとか使えばログインを省略できそうなんだけど上手くできなかった。誰かお願い。