概要
はてなブックマークへブックマークを追加すると、自動的にpinboardやdeliciousにも登録されるようにします
追記
この記事は、はてなブックマークの外部連携サービス機能に含まれるWebhook機能を用いた事例の紹介でしたが、[この機能は2018年末に終了][1]しました。よって、この記事の内容はもう有効ではありません。
[1]:https://bookmark.hatenastaff.com/entry/2018/10/29/180645
必要なもの
- 何らかのWebサーバ
- perl動作環境
- Net::Delicious
- Config::Pit
インストール
- 何らかのWebサーバを用意します。
- Net::Delicious, Config::Pitをインストールします。
- hatena2pinboard.pl https://gist.github.com/mrmt/4564284 をcgi scriptとして設置します。
hatena2pinboard.pl
#!/usr/bin/perl
# from http://d.hatena.ne.jp/amachang/20090603/1244025898
use utf8;
use strict;
use warnings;
use CGI;
use Net::Delicious;
use Config::Pit;
use constant {
PINBOARD_ENDPOINT => 'https://api.pinboard.in/v1/',
};
my $config = pit_get('hatena2pinboard',
require => {
hatena_webhook_key => 'xxx',
pinboard_username => 'xxx',
pinboard_password => 'xxx',
});
die 'pit_get failed.' unless %$config;
my $req = CGI->new;
$req->charset('utf-8');
print CGI::header('text/plain');
if($req->param('key') eq $config->{hatena_webhook_key}){
if($req->param('status') eq 'add'){
my $url = $req->param('url');
my $title = $req->param('title');
my $comment = $req->param('comment');
post_pinboard($url, $title, $comment);
}
}
print 'ok';
exit;
################################################################
sub post_pinboard{
my $url = shift;
my $title = shift;
my $comment = shift;
my $pinboard = Net::Delicious->new({
user => $config->{pinboard_username},
pswd => $config->{pinboard_password},
endpoint => PINBOARD_ENDPOINT
});
$pinboard->add_post({
url => $url,
description => $title,
extended => $comment,
replace => 0,
});
}
__END__
hatena2pinboard 側の個人設定
- 以下の使い捨てスクリプト
set_pit
を用意 -
hatena_webhook_key
に適当なキー文字列を、pinboard_username
にはpinboard.inのユーザ名、pinboard_password
にはpinboard.inのパスワードを記入 - 実行
-
~/.pit
というディレクトリが出来ます。このディレクトリをWebサーバの実行ユーザのホームディレクトリにコピーします。
set_pit
#!/usr/bin/perl
use strict;
use warnings;
use Config::Pit;
Config::Pit::set('hatena2pinboard',
data => {
hatena_webhook_key => 'mogemoge',
pinboard_username => 'yourname',
pinboard_password => 'foobar'
});
はてなブックマーク側の個人設定
- はてなブックマークの「設定」から「外部サイト連携」のタブを選びます
- 「Web Hook(開発者さま向け, 3つまで登録できます)」の項目にて、「イベント通知を受け取るURL」にはhatena2pinboard.plを設置したurl, 「キー」には、先ほど決めて
set_pit
で設定したキー文字列を記入します。
ほか
- この例では, はてなブックマークのWeb Hookを受けてブックマーク登録する対象がpinboard.inですが、pinboard.inのAPIはdelicious互換らしく、そもそも使っているライブラリもNet::Deliciousですので、APIのエントリポイントをdeliciousのものに書き換えてやれば、deliciousに対しても動くと思います。