Hatena::Grouptumblr

MCSG SYM

 | 

2008-07-02

リブログするスクリプト 00:04 はてなブックマーク - リブログするスクリプト - MCSG SYM

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)

みたいな感じで使って下さい。弱点としては毎回ログインしている。クッキーとか使えばログインを省略できそうなんだけど上手くできなかった。誰かお願い。

 |