Tumblr 投稿

mechanize で作ってみた。

require 'rubygems'
require 'mechanize'
require 'kconv'
require 'optparse'

# config
email = "xxx"
password = "xxx"

module Tumblr
  HomeURL = "http://www.tumblr.com/"
  LoginURL = HomeURL + "login/"
  PhotoPostURL = HomeURL + "new/photo/"

  class Dashboard
    def initialize(email, password)
      @agent = WWW::Mechanize.new
      login(email, password)
    end

    def login (email, password)
      p = @agent.get(LoginURL)
      form = p.forms.first
      form.email = email
      form.password = password
      @agent.submit(form)
    end

    def post_photo(url)      p = @agent.get(PhotoPostURL)
      form = p.forms.first
      form.photo_src = url
      btn = form.buttons.name("save_button")
      form.submit(btn)
    end

    def post_photos(urls)
      urls.each {|url|
        post_photo(url)
      }
    end
    def post_photos_by_file(filename)
      a = []
      File.open(filename){|f|
        f.each {|line|
          a.push(line.chop)
        }
      }
      post_photos(a)
    end
  end
end

db = Tumblr::Dashboard.new(email, password)
#db.post_phot(url)
#db.post_photos(image_urls)
db.post_photos_by_file("t")