SBM Common APIの対象URLをクエリー文字列で指定
スポンサードリンク
SBM Common API を作りました ::: creazy photograph [creazy.net]
このスクリプトは張り付けられたページのURLをリファラーから判断して、そのURLに対する被ブックマーク数を表示します。 下記のようなコードを出力します。
とありますが、refererじゃなくて、クエリー文字列でURLを指定したかったので、リダイレクタを作りました。
Filename: sbmcommonapiredirector.cgi
#!/usr/bin/perl use strict; use warnings; use LWP::UserAgent; use CGI; my $q = CGI->new(); my $referer = $q->param('url') || $q->referer(); my $sbmapi_url = 'http://labs.creazy.net/sbm/counter/js'; my $js = get_js( $sbmapi_url, $referer, ); print $q->header( -type => 'text/javascript', -charset => 'UTF-8', ); print $js; exit; sub get_js { my $url = shift; my $referer = shift; my $ua = LWP::UserAgent->new(); $ua->agent( 'SBMCommonAPIRedirector/0.1 ' .'(+http://blog.dtpwiki.jp/dtp/2008/07/' .'sbm_common_apiu_aefe.html)' ); my $req = HTTP::Request->new( 'GET', $url, ); $req->referer( $referer ); my $res = $ua->request($req); return $res->content; } __END__
設置は自分のサーバにしてね。
<script type="text/javascript" src="http:://example.com/path/to/sbmcommonapiredirector.cgi?url=http://www.yahoo.co.jp/"></script>
で、http://www.yahoo.co.jp/に対するブックマーク件数が表示されます。
用途は、リンク集ポータルなどで、リンク先のURLのブックマーク件数を表示するようにしたかったんですが、refererだと、表示しているページのブックマーク件数しか表示できないので、こんな感じにする必要がありました。
実はこれ、実際に設置したんですけれども、いろいろあってものの5分でお蔵入りしたのでした……
このエントリは、ことし4月1日の冗談エントリM.C.P.C.: CoCoLoのリユース版です。よく見るとソースほどんど変わってないよ!
スポンサードリンク
トラックバック(0)
トラックバックURL: http://blog.dtpwiki.jp/MTOS/mt-tb.cgi/2533
こんばんは。
APIを作ったyagerと申します。
パラメータでURL渡す方法を始めは作ったんですけど、ブログパーツの方は初心者向けにscriptタグはるだけの簡単なお仕事にしたかったのであえて自由度を制限しました。
代わりにJSONのほうはurlパラメータで指定できるのでそっちを使ったJavaScriptを組んでいけば1ページに複数のSBMファームをおくって事も可能だと思います。
> 実はこれ、実際に設置したんですけれども、いろいろあってものの5分でお蔵入りしたのでした……
この部分がすごい気になるんですが…。
パフォーマンスがでないので複数URLのAPIたたくとなかなか表示されないと思います。キャッシュとかを色々調整はしているんですが…。
色々参考になります。ありがとうございます。
yagerさん:
使おうと思った動機がありまして、それぞれのSBMサイトのUser数を表示していたのですが、特定SBMサイトのレスポンスが落ちていて、表示が引っかかるようになったので、代わりに使ってみようと考えました。
これは、設置してみたが、そもそも客層的にdel.icio.us使う人がいないよね、とかいう判断があって、
自作のM.C.P.C.: 様々なオンラインブックマークサービスのブックマーク件数を画像ではなくて数値で取得(高機能版) [blog.dtpwiki.jp] をカスタマイズして使う方向になりました。