はてなブックマークから delicious への移行
2008-09-14
こないだの GINZA TECH LOUNGE feat. OpenID の懇親会で、 delicious.com の Firefox プラグインが使いやすいって話を聞いた。 試しにインストールしてみたら、ブラウザ組み込みのブックマークを置き換えられるできで、とっても便利そう。
- delicious.com の画面に遷移せずにブックマークできる。履歴からのタグの入力も可能
- 登録したブックマークをタグでソートして、サイドバーに表示できる
ブックマークしたデータを後で利用するには、 delicious のほうが使いやすそうなので、試しにはてなブックマークから移行してみるよ。 はてなブックマークには「ブックマークの設定」→「ブックマークのエクスポート」でRSS/Atom/ブックマーク形式でエクスポートできる。 でも、deliciousでインポートしようとすると、RSS/Atomではエラーになって、ブックマーク形式だと日本語が文字化けしてしまう。
WebService::SyncSBS::D2Hのインストール
PerlモジュールのWebService::SyncSBS::D2Hを使えば移行できるそうなので、こっちを使ってみることに。 CPAN の使い方をすっかり忘れていたので、CPAN初級を見て復習。 以下のコマンドでインストールできる。
sudo -H cpan WebService::SyncSBS::D2H
でも、やってみたら関連モジュールが無いってエラーがでた。 先に、関連モジュールを入れて、成功。結構、時間かかったよ。
sudo -H cpan Net::Delicious
sudo -H cpan XML::Atom::Entry
sudo -H cpan WebService::SyncSBS::D2H
使い方
Del.icio.usとはてなブックマークをクロスポストを参考に以下のスクリプトを作成。
use strict;
use warnings;
use utf8;
use WebService::SyncSBS::D2H;
my $sbsync = WebService::SyncSBS::D2H->new({
delicious_user => "kmachu",
delicious_pass => "********",
hatena_user => "kmachu",
hatena_pass => "********",
delicious_recent_num => 40,
});
$sbsync->sync;
このツールを動かすと、はてなブックマークとdeliciousを同期してくれる…んだけど、どうも30件ほどしか同期していない。 初期の移行は、もうちょっと工夫しないとダメかな。
追記
原因判明。 WebService::SyncSBS::D2H では、はてなのフィードを http://b.hatena.ne.jp/atom/feed から取得しているんだけど、これだと最近のブクマしか取得できない仕様になってる。 代わりに、 http://b.hatena.ne.jp/dump から取得するように一時的にソースを変更した。
--- Hatena.pm.org 2005-12-01 18:43:01.000000000 +0900
+++ Hatena.pm 2008-09-14 16:45:08.000000000 +0900
@@ -15,7 +15,7 @@
my $ep_root = 'http://b.hatena.ne.jp/atom';
my $ep_post = $ep_root . '/post';
my $ep_edit = $ep_root . '/edit';
-my $ep_feed = $ep_root . '/feed';
+my $ep_feed = 'http://b.hatena.ne.jp/dump';
sub new {
my $class = shift;
どちらのURLでも動くということは、XML::Atom::Clientを使う下記のサンプルプログラムを書いて確認した。
use strict;
use Data::Dumper;
my $client = XML::Atom::Client->new;
$client->username('kmachu');
$client->password('**********');
print Dumper $client->getFeed('http://b.hatena.ne.jp/atom/feed');
print Dumper $client->getFeed('http://b.hatena.ne.jp/dump');
これでデータの移行ができたので、さっきの修正を元に戻して、 cron で同期をとるようにする。
まとめ
Perlが使えるようになると、人生が豊かになると思った。 10年前の知識で止まってるからなぁ…。
追記
移行の仕方がレガシーすぎるらしい。