del.icio.usのバックアップ

最近外部Webサービスを使うときにバックアップがやけに気になるようになったので、del.icio.usもバックアップ。

凄く便利に使っているので、これがなくなるとbloglinsと同程度にしたい。最初、WWW::Mechanizeでログイン画面からexportの方に遷移してバックアップを取ろうとしたんだけど、いまいちうまくデータが取ってこれない。

そこで、APIが公開されていないのかしらん?と想って調べてみるとAPIページがちゃんとあった。posts/allで取ってくると欲しいデータがとれるっぽい。basic認証でできるみたいなのでこれはEasyだ。

#!/usr/local/bin/ruby1.8
require "rubygems"
require "mechanize"

#固定値
@id	= "ID"
@pass	= "パスワード"
@output_path = "." #出力先フォルダ

#Mechanizeオブジェクト作成
web = WWW::Mechanize.new()
#ベーシック認証用定義
web.auth(@id,@pass) 
#user_agentが必須のようなのでIEを定義
web.user_agent = 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)'

#del.icio.usAPIページにアクセス
xml= web.get("http://del.icio.us/api/posts/all")

#ファイル出力
date = Time.now()
fp = open("#{@output_path}/delicious_%s_%02d_%02d.xml" % [date.year,date.month,date.day], "w")
	fp.write(xml.body);
fp.close()

こんな感じでOKな模様。これをcronに組み込んで週1ぐらいでバックアップを取るようにしよう。