作りかけだけど、とりあえず動くのでBlogに書いておく。WWW::Mechanizeのサイトに書かれているサンプルが、昔からのFlickrアカウントをもっている人しか使えないので、YahooのログインIDでアップロード出来るコードを書いた。こんな物は誰かBlogで書いているだろうと探したのだけど、見つからなかった。
はてなダイアリーにアップロードするスクリプトから使うため、クラス定義している。これだけだと、loginとuploadを別メソッドにする必要は無いんだよなぁ。実装を進めて、必要がなければ1つにしてしまう。
#!/usr/bin/env ruby require 'rubygems' require 'mechanize' class HatenaFlickrWriter def initialize(id,password) @id = id @password = password @agent = WWW::Mechanize.new @page = "" end # By yahoo login ID, password def login @page = @agent.get('http://flickr.com/signin/') form = @page.forms.name('login_form').first form.login = @id form.passwd = @password @page = @agent.submit(form) @page = @agent.click @page.links.text('click here') @page = @agent.click @page.links.text('Upload') @page = @agent.click @page.links.text("basic Uploader") end def upload(filename) form = @page.forms.action('http://up.flickr.com/photos/upload/transfer/').first form.file_uploads.name('file1').first.file_name = filename @agent.submit(form) end end # test code if __FILE__ == $0 flickr = HatenaFlickrWriter.new('LOGIN ID','PASSWORD') flickr.login fname = ARGV.shift flickr.upload(fname) end