Creazy!

WEBエンジニア・ヤガーのテック・ガジェットブログ

WebService 開発実績

SBM Common API を作りました

投稿日:


たくさんあるSBM(ソーシャルブックマーク)サービスのユーザー数を簡単にブログに表示したり、各SBMのユーザー数をJSON(P)形式でまとめて取得できるAPIを作ってみました。
はてなブックマーク、del.icio.us、livedoorブックマーク、Yahoo!ブックマーク、Buzzurl、FC2ブックマーク、@niftyクリップ、POOKMARK Airlines、の8つのサービスに対応しています。
これを作るキッカケは、すで書いた事があります。

冒頭に書いた各SBMのバラバラなAPIを統一するサービス(リダイレクターというかプロキシというか)ができないかなぁと思ったわけで。

via: 各ソーシャルブックマークサービス(SBM)のブックマーク数画像表示APIを調べた ::: creazy photograph

各SBMごとに呼び出しのインターフェイスが統一されていなかったり、RSSやJSONなどのAPIが用意されていなかったりするので、「なるべく多くのSBMを表示してみよう」なんて思っても調べるのが大変だったりするのです。
そこで、なるべく同じインターフェースで被ブックマーク数を取得できるようなAPIが必要となってくるわけです。
目次

  1. 1)各SBMの被ブックマーク数を簡単に張り付けられるブログパーツ
  2. 2)各SBMの被ブックマーク数をまとめて取得できるJSON(P) API
  3. 3)各SBMのブックマーク表示画面のURLにリダイレクトするURL
  4. 4)各SBMのブックマーク追加画面のURLにリダイレクトするURL

1)各SBMの被ブックマーク数を簡単に張り付けられるブログパーツ

とりあえず、全部盛りで簡単にブログに設置しちゃいたい初心者向けのパーツです。
SBMブログパーツ設置例
こんな感じに表示できます。
使い方
表示させたい部分に下記scriptタグを貼り付けるだけです。

<script type="text/javascript" src="http://labs.creazy.net/sbm/counter/js"></script>

このスクリプトは張り付けられたページのURLをリファラーから判断して、そのURLに対する被ブックマーク数を表示します。
下記のようなコードを出力します。

document.open();
document.write(
'<a href="{ブクマ追加URL}" target="_blank" title="〜に追加"><img src="{アイコンURL}" alt="〜に追加" border="0" /></a><span>[<a href="{ブクマ確認URL}" target="_blank">{ブクマ数}</a>]</span> '
(各SBM分繰り返し)
);
document.close();

CSSでスタイルを付けたい場合は、

<p id="sbm_buttons"><script type="text/javascript" src="http://labs.creazy.net/sbm/counter/js"></script></p>

などど、id(かclass)付きのブロック要素で囲んでおいて、

#sbm_buttons {
margin: 0;
padding: 0;
}
#sbm_buttons img {
height: 16px;
vertical-align: middle;
}
#sbm_buttons span {
font: 12px/12px Verdana,sans-serif;
vertical-align: middle;
}

のようにしてやれば良さそう。
パフォーマンスを考慮した使い方
上の例では document.write で直接書き出していましたが、SBMやこのAPIで使っているレンサバの負荷によってはレスポンスが遅くなってしまうかもしれません。
表示を止めないために、body直前でscriptを呼び出す形式も作りました。

<p id="sbm_buttons"></p>
(snip)
<script type="text/javascript" src="http://labs.creazy.net/sbm/counter/js?target_id=sbm_buttons"></script>
</body>
</html>

target_idパラメータにHTMLを流し込みたい要素のIDを入れてやれば、document.getElementById'(‘id’).innerHTML で流し込みます。
出力されるHTMLは同じなので省略します。

2)各SBMの被ブックマーク数をまとめて取得できるJSON(P) API

やりたい事は名前の通りなのでインターフェイスだけ紹介します。
リクエスト

http://labs.creazy.net/sbm/counter/json?callback={コールバック関数名}&url={URL}

callbackにはJSONPで取得したい場合のコールバック関数を指定します。
urlには被ブックマーク数を調べたいURLをURLエンコードして渡します。
レスポンス

コールバック関数名(
{ "サービス識別子" :
{ "name" : "サービス名"
,"img" : "被ブックマーク数画像URL"
,"url" : "ブックマーク詳細URL"
,"count" : ブックマーク数
,"ico" : "サービス毎アイコンURL"
},
(ブックマークサービス分繰り返し)
}
);

実際に見た方が早いと思いますので、Yahoo!JapanのJSONをご覧下さい。
Yahoo!Japanのブックマーク数JSONP
サービス識別子には、下記8つがあります。

delicious,hatena,livedoor,yahoo,buzzurl,fc2,nifty,pookmark

というわけで、1)のブログパーツでは柔軟な出力ができないので、このAPIを使えばJSONP経由でデータを取得してJavaScriptで好きなフォーマットに成形できます。
他にも色々使い道はありそうですね。何かアイデアある人はでひ作ってみてください。

3)各SBMのブックマーク表示画面のURLにリダイレクトするURL

はてブでは http://b.hatena.ne.jp/entry/{URL} で表されるブックマーク表示画面のURLが、各SBMでバラバラなので覚えやすい様にリダイレクターを作ってみました。
URL

http://labs.creazy.net/sbm/entry?service={サービス識別子}&url={URL}

サービス識別子には、下記8つがあります。

delicious,hatena,livedoor,yahoo,buzzurl,fc2,nifty,pookmark

4)各SBMのブックマーク追加画面のURLにリダイレクトするURL

はてブでは http://b.hatena.ne.jp/append?{URL} で表されるブックマーク追加画面のURLが、各SBMでバラバラなので覚えやすい様にリダイレクターを作ってみました。
URL

http://labs.creazy.net/sbm/add?service={サービス識別子}&url={URL}

サービス識別子には、下記8つがあります。

delicious,hatena,livedoor,yahoo,buzzurl,fc2,nifty,pookmark

あとがき

とりあえず、出してしまったけどまだまだバギーな気がします。
お気付きの点があればお知らせください。
あと、同じような仕組みはすでに存在しているようですが、APIである事が重要(特にブログ利用される事を考えるとJSONP必須)だと思ったので公開に踏み切りました。
レンサバが貧弱なので、アクセス集中するとレスポンス遅れるかもしれません。
(そういう事は流行ってから心配する事にしました。)

更新履歴

[追記:2008/07/22]
SBM Common API (ver1.1) ブックマーク表示画面、追加画面のURLリダイレクターを追加
・3)4)としてブックマーク表示画面、ブックマーク追加画面のURLへのリダイレクターを公開しました。
・上記リダイレクター公開に合わせて、1)2)のAPIでレスポンスとして返すURLもリダイレクターのURLに変更しました。
・このエントリーが長くなってきたので目次とページ内リンクを作りました。
[追記:2008/08/25]
DeliciousのリニューアルにともなくAPI変更も対応しました。
自作のAPIを使用しています。
Delicious2.0 の被ブックマーク数画像取得APIを作りました

-WebService, 開発実績

執筆者:


  1. SBM Common API貼ってみました

    ブログ回遊の楽しみは、新たな知見に出会うこと。
    そし…

  2. M.C.P.C. より:

    SBM Common APIの対象URLをクエリー文字列で指定

    SBM Common API を作りました ::: creazy photograph [creazy.net] このスクリプトは張り付けられたページのU…

  3. はてブに各ソーシャルブックマーク数と円グラフを表示するGreasemonkey

    http://furukawa.rikuo.googlepages.com/SBM_pie_chart.user.js (例:http://b.hate…

  4. WordPress再インストール、もろもろカスタマイズなど

    photo credit: drustar
    どうも投稿がうまく行かず管理画面が真っ白になってしまう時があるので、WordPressを再インストールするこ…

M.C.P.C. へ返信する コメントをキャンセル

メールアドレスが公開されることはありません。

関連記事

動画を楽しもう!(HD正式対応後のYouTubeで常に最高画質で視聴&ダウンロードできる「YouTube HD Suite」)

【2009/10/23:追記】 YouTubeの仕様変更により一時動作しなくなりました。下記ページを参考にアップデートしてください。 YouTube仕様変更に伴う自作ツールのアップデート(YouTub …

TwitPicのRSSを作成するためのYahoo!Pipesとブログパーツサンプル

恐らくTwitterに画像付きで投稿するサービスとして最も使われているTwitpicですが、日本語対応が甘いのか文字化けしたりして不満が多く上がっています。で、文字コードの処理の甘さも影響しているので …

「Quick Twitter in Tumblr Dashboard」をReTweetに対応させました

以前作った、Twitterメインの人がTumblrでTwitterするためのUserScriptですが、ちょっとした更新をかけました。 ・ReTweetに対応 ・Twitter画面にもTwitter …

Google検索結果を一瞬でエクセルに貼り付けるブックマークレット「Google Top10 TSV」

いやー、この手の記事をずいぶん書いてなかったなぁと反省しつつリハビリ状態のヤガーです。 WEBサイト運営などをやっていると、特定キーワードの検索エンジン表示順位などを調べたりすることがあるのですが、S …

新はてブのコメント一覧画面をコンパクトに見やすくするGreasemonkey「Hatebu Entry Compact」

はてブ2(新はてなブックマーク)ではデザインが洗練されて見やすくなったとは思うんですが、丸みを帯びたパーツのせいか結構縦に長くなってしまったような気がします。 エントリー詳細画面(http://b.h …

スポンサードリンク

スポンサードリンク