しばらくテストで使ってみたんですが、意外に使えそうなので公開してみます。
はてブは基本的にストックじゃなくフローの印象が強くて、僕なんかはオンライン・ブックマークというよりはクリップとコメント書きのために使っています。
但しそのままでは放置ではもったいないので、RSSリーダーに登録することでXML-RPCを使って自分のはてブのブックマークをBlogに投稿するPerlスクリプトを作ってみました。
はてブの内容を自動的にかつ定期的に(場合によっては非定期?)自分のBlogへ転載できます。
「lt」タグアーカイブ
2006-02
20
20:12:00
はてブのブックマーク数を任意のページにインライン表示してみる
Blogなどではありがちな Comment(6) | TrackBack(2) のようなインライン表示をはてブのブックマーク数でも行ってしまうスクリプトです。
尚IFRAMEは使っていません。JavaScriptとCGI(Perlスクリプト)で実現しています。
一般にはクロスサイト・ドメイン制約の問題がありますが、近頃流行りそうな(?)CGIからJavaScriptオブジェクトやデータを生成して引き渡すことで回避しています。
従ってBlogに限らず、(JavaScriptを書けるのであれば)どんなページにも貼り付けられます。
2006-02
19
22:16:00
内緒ではてブへの言及を表示できるようにする
先日はてブへ言及されたコメント一覧を表示するPerlスクリプトを紹介してみました。
しかし、僕もそうなんですけど、それをそのまま自分のBlogなどで表示するのも気が引ける感があります。
元々はてブのコメントなんて「オルタナティブ」なものだし、そもそも全部の記事にそんなコメントなんて付いていないのに恥ずかしい・・。
でも気になる!
という場合のために、先のPerlスクリプトを使った上で常に表示しておくのではなくてBookmarkletで自分の気が向いた時だけこっそり表示できる方法を紹介してみます。
*Bookmarkletからの呼び出しで記事に対応して動的にはてブコメントを表示します。
2006-02
14
21:09:00
はてブへの言及を記事ページに表示してみる
ということで、自分のページへのはてなブックマークによる言及を可視化するために、指定されたページに対するはてなブックマークのコメント一覧を表示するためのPerlスクリプトを書いてみました。
例えば、自分のBlogの記事ページに、対応するコメント一覧を常時表示することもできます。
* このコメントは架空のものです(^^;
2006-02
12
03:10:00
はてなブックマークのサイドバー・パーツ
多分他の人たちも作られてると思いますが、組んでみたので公開してみます。
自分のPostしたコメントを一覧するのが主な目的なので、コメントを入れていない人にはあまり面白くないかも。
①CGI(Perl)で動作しますので、CGIの動くサーバーが必要です。
またLWPやXML::RSSがインストールされている必要があります。
getMyhetebuComments.cgi
#!/usr/bin/perl
use lib qw(../lib); #←ライブラリは適当に変更して下さい。
use LWP::Simple;
use LWP::UserAgent;
use HTTP::Request::Common;
use XML::RSS;
my $maxcount = 10; #←表示件数です。適当に変更して下さい。
my $yourhatena_id=”ro-ca”; #←はてなのIDです。自分のIDに変更して下さい。
print "Content-Type: text/html\r\n\r\n";
#ヘッダーも適当に変えて下さい。
print "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n";
print "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\r\n";
print "<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"ja-JP\" lang=\"ja-JP\">\r\n";
print "<head>\r\n";
print " <link rel=\"stylesheet\" type=\"text/css\" href=\"(CSSファイル名を指定して下さい)\" />\r\n";
print " <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\r\n";
print " <meta http-equiv=\"Content-Script-Type\" content=\"text/javascript\" />\r\n";
print " <meta http-equiv=\"Content-Style-Type\" content=\"text/css\" />\r\n";
print "</head>\r\n";
print "<body style=\"background-color: #ffffff;\">\r\n";
my $hbUrl = “http://b.hatena.ne.jp/”.$yourhatena_id.”/rss”;
my $title;
my $link;
my $desc;
my $rss_data = get($hbUrl);
my $rss = new XML::RSS;
$rss->parse($rss_data);
my $cnt = 0;
foreach my $item ( @{$rss->{‘items’}} ) {
if($item->{‘link’} ne “”) {
$title = $item->{‘title’};
$link = $item->{‘link’};
$desc = $item->{‘description’};
print "<a href=\"$link\" style=\"font-size: 0.8em;\" target=\"_blank\">$title</a><a href=\"http://b.hatena.ne.jp/entry/$link\" target=\"_blank\"><img src=\"http://b.hatena.ne.jp/images/entry.gif\" border=\"0\"></a><div style=\"font-size: 0.8em;\">『$desc』</div><br />";
}
$cnt++;
if($cnt >= $maxcount) {
last;
}
}
print "</body></html>\r\n";
②サーバーにアップして、適切な権限を設定しておきます。
③IFRAME内などに呼び出してやればOKです。
例えばSeesaaの場合だと、管理画面から「自由形式」のコンテンツに以下のようなHTMLコードで呼び出せます。
<iframe name="hatebu" width="165" height="500" frameborder="0" src="getMyhetebuComment.cgiへのパス" marginwidth="0" marginheight="0" vspace="0" hspace="0" allowtransparency="false" scrolling="yes"></iframe>
Seesaaでは直接CGIを置いたりできないのでIFRAMEでの呼び出しにしましたが、SSIが使える環境などであれば、SSIに改造しても綺麗でしょう。
適当に改造して使って下さい。