はてなブックマークから delicious への移行
こないだの 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年前の知識で止まってるからなぁ…。
追記
移行の仕方がレガシーすぎるらしい。