超手抜き版 はてなダイアリーライター(ruby版)を作ってみた。
WWW::mechanizeが面白そうだったので作ってみました。
参考サイトはhttp://mono.kmc.gr.jp/~yhara/d/?date=20070205#p01です。というかサンプルコードほとんどそのまんまです。
手元にあるテキストファイルを自分のダイアリーに投稿できます。お気に入りのエディタで書いてスクリプトで投稿みたいなことが簡単にできるわけです。
インストール方法
WWW::mechanizeがひつようです。gemでインストールしましょう。
gem install mechanize
僕もはまったのですがmechanize内部でnet/httpsを使ってるらしくlibopenssl-rubyをインストールする必要があります。
ubuntuなら
sudo apt-get install libopenssl-ruby
もちろん以下のスクリプトもダウンロード:-)
使いかた
ソースを見ればわかりますが
./hatena_diary_writer.rb hogehoge.txt
です。
注意
使ってもらうぶんには構いませんがパスワード平文だしまずいです。
今後
超最低限の機能しか備えていないのでぼちぼち実装します。
htmlの構造が違うのではてなグループに対応していないのも大きな問題です。
なんかおかしかったら教えてください。:-)
ソース
#!/usr/bin/env ruby # hatena_diary_writer.rb # require 'rubygems' require 'mechanize' require 'kconv' $KCONV = 'euc-jp' class HatenaDiaryWriter def initialize(id,password) @id = id @password = password @agent = WWW::Mechanize.new @diary = @agent.get("http://d.hatena.ne.jp/#{id}/") end def login login_link = @diary.links.text("ログイン".toeuc) login_page = @agent.get(login_link.href) login_form = login_page.forms.first login_form['key'] = @id login_form['password'] = @password redirect_page = @agent.submit(login_form) @diary_link = redirect_page.links.text("こちら".toutf8) @diary_page = @agent.get(@diary_link.href) end def edit(content) edit_link = @diary_page.links.text("日記を書く".toeuc) edit_page = @agent.get(edit_link.href) edit_form = edit_page.forms.name("edit").first edit_form["body"] += content ok_button = edit_form.buttons.name("edit") @agent.submit(edit_form, ok_button) end end if __FILE__ == $0 diary = HatenaDiaryWriter.new('user_id', 'password') #各自書き換えてください。 content = '' while line = ARGF.gets content << line end diary.login diary.edit(content.toeuc) end
ちなみにこのエントリもスクリプトで投稿してみました:-)