2007年03月19日

ブックマーク投稿API

BuzzurlへブックマークするAPIです。

ユーザー認証はBasic認証を利用します。Buzzurlへのログインメールアドレスとパスワードをご利用下さい。またhttpの利用よりもhttpsの利用を強く推奨します。

レスポンスはJSONです。

リクエストURI

https://buzzurl.jp/posts/add/v1

文字エンコード

UTF-8

リクエストパラメータ
名前 説明
url ブックマークするurl(必須)
title 記事のタイトル(任意)
comment コメント(任意)
keyword キーワード(8個まで指定可能。任意)
reply 返信の受け付けを設定(任意)
0の場合は"受け付け"。1の場合は"受け付けない"になります。
access ブックマークの公開設定(任意)
指定しない場合は"全体に公開"、"anonymous"を指定した場合は"コメントだけ公開"、"private"を指定した場合は"非公開"になります。
レスポンス
名前 説明
status ブックマーク成功の可否。成功時 "success"、失敗時 "fail" を返します。
reason 失敗時のみ失敗理由を返します。

2007年03月02日

キーワード「○○」を含むユーザーの最近のエントリー一覧JSONフィード取得API

任意のユーザーの特定のキーワードを含むエントリー一覧を取得します。

http://api.buzzurl.jp/api/articles/v1/json/[ユーザーID]/keyword/[キーワード]
リクエストパラメータ
名前 説明
ユーザーID エントリー一覧を取得したいユーザー名 キーワード 取得したいキーワード(urlencodeして下さい)
cb JSONP(JSON with padding)用のcallbackを指定します(任意)
レスポンス
名前 説明
url 記事のURL
title 記事のタイトル
comment 登録記事へのコメント
keywords 登録記事へ付けているキーワード
サンプル
リクエスト
http://api.buzzurl.jp/api/articles/v1/json/noznavi/keyword/EC%E3%83%8A%E3%83%93?cb=Sample.Callback
レスポンス
Sample.Callback([{
"title":"ECナビ、電通グループの電通ドットコムから出資受入れ合意 EC Navi - プレスリリース"
"url":"http://company.ecnavi.jp/modules/news/article.php?storyid=62",
"comment":"しらんがな",
"keywords":["ECナビ","電通"],
},
{
"title":"株式会社ECナビ採用情報 ECナビラボ"}
"url":"http://company.ecnavi.jp/recruit/fresh2006/labs/index.html",
"comment":"こっちもいまさら知った!    そして僕が携帯で撮った写真が使われててワロタ",
"keywords":["ECナビ","ECナビラボ"],
])
サンプルプログラム
<div id="user_keyword_articles_sample">
<p>noznaviさんの「ECナビ」を含むブックマーク記事</p>
</div>
<script type="text/javascript">
    function displayUserKeywordArticles(json) {
        var ul = document.createElement('ul');
        
        for (var i = 0; i < json.length; i++) {
            var li = document.createElement('li');
            var a = document.createElement('a');
            a.setAttribute('href', json[i].url);
            a.appendChild(document.createTextNode(json[i].title));
            li.appendChild(a);
            ul.appendChild(li);
        }
        document.getElementById('user_keyword_articles_sample').appendChild(ul);
    }
    var user_id = "noznavi";
    var keyword = "ECナビ";
    var cb = "displayUserKeywordArticles";
    var api = "http://api.buzzurl.jp/api/articles/v1/json/" + encodeURIComponent(user_id) + "/keyword/" + encodeURIComponent(keyword) + "?cb=" + encodeURIComponent(cb);
    var script = document.createElement("script");
    script.setAttribute("type", "text/javascript");
    script.setAttribute("src", api);
    script.setAttribute("charset", "UTF-8");
    var head = document.getElementsByTagName('head').item(0);
    head.appendChild(script);
</script> 
サンプルプログラム実行結果

noznaviさんの「ECナビ」を含むブックマーク記事

2007年01月12日

新着エントリーJSONフィード取得API

新着エントリー一覧を取得します。

http://api.buzzurl.jp/api/articles/recent/v1/json/?num=[取得件数]&of=[ページ]&threshold=[閾値]&cb=Callback関数名
リクエストパラメータ
名前 説明
取得件数 取得したいエントリーの数を設定します。省略可能。デフォルト値は5。
ページ 取得したページ数から1引いた値を設定します。例:3ページ目を取得したい場合は2を設定する。省略可能。デフォルト値は0。
閾値 取得する記事のブックマーク数の閾値を設定します。例:3ユーザ以上になっている記事を取得したい場合は2を設定する。省略可能。デフォルト値は0。
cb JSONP(JSON with padding)用のcallbackを指定します(任意)
レスポンス
名前 説明
url 記事のURL
title 記事のタイトル
user_id 1GETしたユーザーのID
user_num ブックマークユーザー数
register_date ブックマーク登録日時
サンプル
リクエスト
http://api.buzzurl.jp/api/articles/recent/v1/json?num=2&of=6&threshold=2&cb=Sample.Callback
レスポンス
Sample.Callback([{
"url" :  "http://ecnavi.jp/",
"title" : "ECナビ",
"user_id" : "noznavi",
"user_num" : "14",
"register_date" : "01/01 00:00"
},
{
"url" :  "http://buzzurl.jp/",
"title" : "Buzzurl",
"user_id" : "noznavi",
"user_num" : "61",
"register_date" : "01/01 00:01"
}])
サンプルプログラム
<div id="recents_sample">
<p> 5users以上の新着エントリー 10件</p>
</div>
<script type="text/javascript">
    function displayRecents(json) {
        var ul = document.createElement('ul');
        
        for (var i = 0; i < json.length; i++) {
            var li = document.createElement('li');
            var a = document.createElement('a');
            a.setAttribute('href', json[i].url);
            a.appendChild(document.createTextNode(json[i].title+" ("+json[i].user_num+")"));
            li.appendChild(a);
            ul.appendChild(li);
        }
        document.getElementById('recents_sample').appendChild(ul);
    }
</script>
<script type="text/javascript"
        src="http://api.buzzurl.jp/api/articles/recent/v1/json/?num=10&threshold=4&cb=displayRecents" charset="UTF-8"></script>
サンプルプログラム実行結果

5users以上の新着エントリー 10件

ユーザーの最近のエントリー一覧JSONフィード取得API

任意のユーザーの最近のエントリー一覧を取得します。

http://api.buzzurl.jp/api/articles/v1/json/[ユーザーID]
リクエストパラメータ
名前 説明
ユーザーID エントリー一覧を取得したいユーザー名
cb JSONP(JSON with padding)用のcallbackを指定します(任意)
レスポンス
名前 説明
url 記事のURL
title 記事のタイトル
comment 登録記事へのコメント
keywords 登録記事へ付けているキーワード
サンプル
リクエスト
http://api.buzzurl.jp/api/articles/v1/json/noznavi?cb=Sample.Callback
レスポンス
Sample.Callback([{
"url" :  "http://ecnavi.jp/",
"title" : "ECナビ",
"comment" : "価格比較サイトで最安値を検索"
"keywords" : ["価格比較","最安値","商品"]
},
{
"url" :  "http://api.buzzurl.jp/",
"title" : "ECナビ人気ニュース",
"comment" : "ニュースに特化したソーシャルブックマークサービス"
"keywords" : ["SBM","ソーシャルブックマーク","ニュース"]
}])
サンプルプログラム
<div id="articles_sample">
<p>noznaviさんの最近のブクマーク記事</p>
</div>
<script type="text/javascript">
    function displayArticles(json) {
        var ul = document.createElement('ul');
        
        for (var i = 0; i < json.length; i++) {
            var li = document.createElement('li');
            var a = document.createElement('a');
            a.setAttribute('href', json[i].url);
            a.appendChild(document.createTextNode(json[i].title));
            li.appendChild(a);
            ul.appendChild(li);
        }
        document.getElementById('articles_sample').appendChild(ul);
    }
</script>
<script type="text/javascript"
        src="http://api.buzzurl.jp/api/articles/v1/json/noznavi?cb=displayArticles" charset="UTF-8"></script>
サンプルプログラム実行結果

noznaviさんの最近のブクマーク記事

ブックマークユーザー数JSONフィード取得API

任意の記事のブックマークユーザー数を取得します。

http://api.buzzurl.jp/api/counter/v1/json?url=記事URL&cb=Callback関数名
リクエストパラメータ
名前 説明
記事URL ブックマークユーザー数を取得したい記事のurlをurlencodeしたもの(最大30個まで複数設定可能)
cb JSONP(JSON with padding)用のcallbackを指定します(任意)
レスポンス
名前 説明
url 記事のURL
title 記事のタイトル
users 記事をブックマークしているユーザー数
サンプル
リクエスト
http://api.buzzurl.jp/api/counter/v1/json?url=http%3A//ecnavi.jp/&url=http%3A//api.buzzurl.jp/&cb=Sample.Callback
レスポンス
Sample.Callback[{
"url" :  "http://ecnavi.jp",
"title" : "ECナビ",
"users" : "11"
},
{
"url" : "http://api.buzzurl.jp/",
"title" : "ECナビ人気ニュースβ版 / ニュースに特化したソーシャルブックマーク サービス",
"users" : "4"
}]
Perlサンプルモジュール
package ECNavi::HotNews::API::Counter;
use strict;
use warnings;
our $VERSION = 0.01; 

use URI;
use LWP::UserAgent;

BEGIN {
  use Carp;
  our $HAVE_JSON_SYCK;
  eval { require JSON::Syck; $HAVE_JSON_SYCK = 1 };
  eval { require JSON } unless $HAVE_JSON_SYCK;
  Carp::croak("JSON::Syck or JSON required to use " . __PACKAGE__) if $@;
  *_parse_json =
      $HAVE_JSON_SYCK  ? sub { JSON::Syck::Load($_[1]) }
                       : sub { JSON::jsonToObj($_[1])  };
}

sub get_users {
  my ($self, @urls) = @_;
  my $res = _api_request(@urls);
  my $json = $self->_parse_json($res);
  return @{$json};
}

sub _api_request {
  my @urls = @_;
  my $api = URI->new('http://api.buzzurl.jp/api/counter/v1/json');
  $api->query_form(url =>\@urls);
  my $ua = LWP::UserAgent->new;
  my $res = $ua->get($api->as_string);
  if ($res->is_success) {
    return $res->content;
  } else {
    die $res->status;
  }
}

1; 
Perlサンプルプログラム
#!/usr/bin/perl
use strict;
use ECNavi::HotNews::API::Counter;

my @urls = (
  'http://ecnavi.jp/',
  'http://api.buzzurl.jp/',
  'http://list.ecnavi.jp/',
);  
    
my @result = ECNavi::API::Counter->get_users(@urls);
for my $res ( @result ) {
  print "url : ", $res->{url}, "\n";
  print "title : ", $res->{title}, "\n";
  print "users : ", $res->{users}, "\n";
  print "---\n";
}
Perlサンプルプログラム実行結果
url : http://ecnavi.jp/
title : ECナビ
users : 10
---
url : http://api.buzzurl.jp/
title : ECナビ人気ニュース
users : 10
---
url : http://list.ecnavi.jp/
title : ECナビリスト
users: 10
---
Javascriptサンプルプログラム
<div id="urls_sample"></div>
<script type="text/javascript">
function displayUrls(json) {
    var ul = document.createElement('ul');
    
    for (var i = 0; i < json.length; i++) {
        var li = document.createElement('li');
        var a = document.createElement('a');
        a.setAttribute('href', json[i].url);
        a.appendChild(document.createTextNode(json[i].title));
        li.appendChild(a);
        li.appendChild(document.createTextNode(" (" + json[i].users + "users)"));
        ul.appendChild(li);
    }
    document.getElementById('urls_sample').appendChild(ul);
}
</script>
<script type="text/javascript" src="http://api.buzzurl.jp/api/counter/v1/json?url=http%3A//ecnavi.jp/&url=http%3A//api.buzzurl.jp/&url=http%3A//list.ecnavi.jp/&url=http%3A//labs.ecnavi.jp/&url=http%3A//labs.ecnavi.jp/developer/&cb=displayUrls" charset="UTF-8"></script>
Javascriptサンプルプログラムの実行結果

ブックマークユーザー数イメージ取得API

任意の記事のブックマークユーザー数のgifイメージへリダイレクトします。

http://api.buzzurl.jp/api/counter/v1/image?url=記事URL
リクエストパラメータ
名前 説明
記事URL ブックマークユーザー数を取得したい記事のurlをurlencodeしたもの
レスポンス
名前 説明
リダイレクト ブックマークユーザー数の画像URLへリダイレクトします
サンプル
リクエスト
http://api.buzzurl.jp/api/counter/v1/image?url=http%3A//ecnavi.jp/
レスポンス

登録情報取得API

任意の記事の登録情報をJSONフィードで取得します。

http://api.buzzurl.jp/api/posts/get/v1/json/?url=記事URL&cb=Callback
リクエストパラメータ
名前 説明
記事URL 登録ユーザー数を取得したい記事のurlをurlencodeしたもの
cb JSONP(JSON with padding)用のcallbackを指定します(任意)
レスポンス
名前 説明
url 記事のURL
title 記事のタイトル
user_num ブックマークしているユーザー数
posts
名前 説明
user_name ユーザー名
keywords ユーザーがつけたキーワード(カンマ区切り)
comment ユーザーがつけたコメント
date ユーザーがブックマークした日時
サンプル
リクエスト
http://api.buzzurl.jp/api/posts/get/v1/json?url=http%3A//ecnavi.jp/&cb=Sample.Callback
レスポンス
[{
"url" :  "http://ecnavi.jp",
"title" : "ECナビ",
"user_num" : "100",
"posts" : 
[{
"user_name" : "noznavi",
"keywords" : "価格比較,EC",
"comment" : "こめんと",
"date" : "2006-08-01 19:30:45"
},..]
,..
}]
Perlサンプルモジュール
package ECNavi::HotNews::API::Posts::Get;
use strict;
use warnings;
our $VERSION = 0.01;

use URI;
use LWP::UserAgent;

BEGIN {
  use Carp;
  our $HAVE_JSON_SYCK;
  eval { require JSON::Syck; $HAVE_JSON_SYCK = 1 };
  eval { require JSON } unless $HAVE_JSON_SYCK;
  Carp::croak("JSON::Syck or JSON required to use " . __PACKAGE__) if $@;
  *_parse_json =
  $HAVE_JSON_SYCK  ? sub { JSON::Syck::Load($_[1]) }
                   : sub { JSON::jsonToObj($_[1])  };

sub get_users {
  my ($self, $url) = @_;
  my $res = _api_request($url);
  my $json = $self->_parse_json($res);
  return @{$json};
}

sub _api_request {
  my $url = shift;
  my $api = URI->new('http://api.buzzurl.jp/api/posts/get/v1/json');
  $api->query_form(url=>$url);
  my $ua = LWP::UserAgent->new;
  my $res = $ua->get($api->as_string);
  if ($res->is_success) {
    return $res->content;
  } else {
    die $res->status;
  }
}

1;

Perlサンプルプログラム
#!/usr/bin/perl
use strict;
use ECNavi::HotNews::API::Posts::Get;

my $url = 'http://ecnavi.jp/';

my @result = ECNavi::HotNews::API::Posts::Get->get_users($url);
for my $res ( @result ) {
  print "url : ", $res->{url}, "\n";
  print "title : ", $res->{title}, "\n";
  print "user_num : ", $res->{user_num}, "\n";
  print "\n";
  for my $post ( @{$res->{posts}} ){
    print "username : ", $post->{user_name}, "\n";
    print "keywords : ", $post->{keywords}, "\n";
    print "comment : ", $post->{comment}, "\n";
    print "date : " , $post->{date}, "\n";
    print "---\n";
  }
}

Perlサンプルプログラムの実行結果
url : http://ecnavi.jp/
title : ECナビ
user_num : 3

username :noznavi
keywords :価格比較,EC
comment :こめんと。
date : 05-10-25
---
username :y-kawano
keywords :
comment :
date : 05-10-28
---
username : DVXRYOGENF
keywords :価格比較,ショッピング,ECナビ
comment :安かった
date : 05-11-10
---

お気に入りユーザーJSONフィード取得API

任意のユーザーのお気に入りユーザーを取得します。

http://api.buzzurl.jp/api/favorites/v1/json/[ユーザーID]?cb=Callback関数名
リクエストパラメータ
名前 説明
ユーザーID お気に入りユーザーを取得したいユーザー名
cb JSONP(JSON with padding)用のcallbackを指定します(任意)
レスポンス
名前 説明
ユーザーID ユーザーIDをJavascriptで利用できる配列にして返します
サンプル
リクエスト
http://api.buzzurl.jp/api/favorites/v1/json/noznavi?cb=Sample.Callback
レスポンス
Sample.Callback(["ykkyy","y-sudo","dk19810313","usami","aristocat","hetapro","levis-501","miriox","necoze","myid2","alttabpush","c-kat9045","s-fukuda04","rabbitc","tsupo","otsune","perry_1904","shima234","erina5981","Chloe-1959","pure_angel"])
サンプルプログラム
<div id="favs_sample"></div>
<script type="text/javascript">
function displayFavs(json) {
    var ul = document.createElement('ul');
    
    for (var i = 0; i < json.length; i++) {
        var li = document.createElement('li');
        var a = document.createElement('a');
        a.setAttribute('href', 'http://api.buzzurl.jp/user/' + json[i]);
        a.appendChild(document.createTextNode(json[i] + 'さん'));
        li.appendChild(a);
        ul.appendChild(li);
    }
    document.getElementById('favs_sample').appendChild(ul);
}
</script>
<script type="text/javascript" src="http://api.buzzurl.jp/api/favorites/v1/json/noznavi?cb=displayFavs" charset="UTF-8"></script>
サンプルプログラムの実行結果

お気に入りにしているユーザーJSONフィード取得API

任意のユーザーをお気に入りにしているユーザーを取得します。

http://api.buzzurl.jp/api/readers/v1/json/[ユーザーID]?cb=Callback関数名
リクエストパラメータ
名前 説明
ユーザーID お気に入りにされているユーザーを取得したいユーザー名
cb JSONP(JSON with padding)用のcallbackを指定します(任意)
レスポンス
名前 説明
ユーザーID ユーザーIDをJavascriptで利用できる配列にして返します
サンプル
リクエスト
http://api.buzzurl.jp/api/readers/v1/json/noznavi?cb=Sample.Callback
レスポンス
Sample.Callback(["ykkyy","yes2339","y-sudo","aristocat","dk19810313","levis-501","ohtake","beckham","myid2","miriox","chisei","necoze",20060519,"u-tenji","chacox","juno_ec","rabbitc","berry-r","perry_1904","junkienews","ecpiyo-0o","shima234","tsupo","erina5981","keyquoy"])
サンプルプログラム
<div id="readers_sample"></div>
<script type="text/javascript">
function displayReaders(json) {
    var ul = document.createElement('ul');
    
    for (var i = 0; i < json.length; i++) {
        var li = document.createElement('li');
        var a = document.createElement('a');
        a.setAttribute('href', 'http://api.buzzurl.jp/user/' + json[i]);
        a.appendChild(document.createTextNode(json[i] + 'さん'));
        li.appendChild(a);
        ul.appendChild(li);
    }
    document.getElementById('readers_sample').appendChild(ul);
}
</script>
<script type="text/javascript" src="http://api.buzzurl.jp/api/readers/v1/json/noznavi?cb=displayReaders" charset="UTF-8"></script>
サンプルプログラムの実行結果