hellkite 日記と雑記とメモ。

Shiki Kazamaの駄文と音楽と、時々技術な感じ

はてなダイアリのバックアップを取るスクリプト


スポンサーリンク


煩わしい作業をスクリプトにまとめ中。今回ははてなダイアリのバックアップを取るスクリプト。これまでは、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

なんか使い方間違ってるのだろうか・・・。それとも環境のせいなのだろうか。