煩わしい作業をスクリプトにまとめ中。今回ははてなダイアリのバックアップを取るスクリプト。これまでは、AppleScriptを使っていたが、Safariではてなにログインしてないとバックアップに失敗していたのでRubyでやってみた。
というより、WWW::Mechanizeの使い方を学びたかっただけともいう・・・。
結局こんなコードになりました。
#!/usr/bin/ruby -w # はてなダイアリーバックアップスクリプト require 'rubygems' require 'mechanize' require 'logger' require 'date' username = 'xxxxxxxxxx' password = 'XXXXXXXXXX' backup_dir = '/path/to/backup/directory/' agent = WWW::Mechanize.new {|a| # a.log = Logger.new('access.log') } page = agent.get('http://www.hatena.ne.jp/login') form = page.forms[0] form.fields.find {|f| f.name == 'name'}.value = username form.fields.find {|f| f.name == 'password'}.value = password page = agent.submit(form, form.buttons.first) page = agent.get('http://d.hatena.ne.jp/' + username + '/export') day = Date::today file = File.new(backup_dir + 'backup' + day.to_s + '.txt','w') file.write(page.body) file.close
xxxxxxxxxxにはユーザ名、XXXXXXXXXXにはパスワードを入れるように。
すると、backup_dirで指定したディレクトリにbackup2007-12-31.txtといった日付入りのファイルでバックアップが取れる。
あとは、定期実行でもさせとけばオッケーである。古いファイルでサイズを食いつぶしていくが古いファイルは適当に整理してください。
ちょっとした(?)問題
ところで、うちの環境で実行するとワーニングが出る。
builder.rb:11: warning: `&' interpreted as argument prefix
time.rb:180: warning: 2 digits year is used
なんか使い方間違ってるのだろうか・・・。それとも環境のせいなのだろうか。