読んだ本とか読みたい本とか(DVDやゲームも)管理出来るweb本棚サービス「ブクログ」。
iPhoneアプリでバーコードから検索できる機能がお気に入りです。
買った本を登録する時とは勿論ですが「この本買ったっけ?」って時にも役立つので!
そんなブクログのブログパーツ用 API を使って、自分の本棚に登録している本を取得して表示してみたときのメモです。
ブクログ
カテゴリ: ライフスタイル
価格: 無料
JSONP形式で本棚の登録情報を取得する
ブクログが提供してくれているブログパーツの埋め込みコードを見てみると、データ自体を JSONP で取得しているみたい。
※非公式APIです!
<script type="text/javascript" src="http://widget.booklog.jp/blogparts/js/booklog_minishelf.js?default" id="booklog_minishelf"></script>
<script type="text/javascript" src="http://api.booklog.jp/json/urakey?category=0&count=15&callback=booklog_minishelf"></script>
2行目にhttp://api.booklog.jp/json/urakeyってあるので、下の xxxxxxxx の部分を任意のアカウントに変更するとそのアカウントの本棚情報が取得できます。
http://api.booklog.jp/json/xxxxxxxx
取得して表示してみたページがこれです。 → Booklog
var userID = 'xxxxxxxx'; // アカウント
var amazonID = 'xxxxxxxx'; // AmazonアソシエイトID(Amazonへのリンクに書き換えるときに使用)
$(function(){
$.ajax({
type : 'GET',
url : 'http://api.booklog.jp/json/' + userID,
data : {
category : '0', // カテゴリー
status : '0', // 読書状況
rank : '0', // 評価
count : '100' // 1回のリクエストで取得するtweetの数
},
dataType : 'jsonp',
success : _getTargetBooklog
});
});
function _getTargetBooklog(data){
var datas = data;
var dataLength = datas.books.length;
if(dataLength > 0){
// ★情報ががあれば
}else{
// 情報がなければ
}
}
特定ユーザー(わたし)のデータを取得結果
使用できるパラメータについては下記にまとめました。
category |
取得するカテゴリー。IDを指定します。
|
---|---|
status |
読書状況を指定できます。
|
rank |
★評価。本棚登録の時につけた星の数を指定できます。
|
count | 取得する件数。 |
JSONP形式で取得した情報を表示する
取得した値を使って、本のタイトル・著者・画像とついでに取得できる ASIN からAmazonへの直リンクを作ってをマークアップし、適当に append しました。
先述したソースの★のところに任意の処理を書けば表示されます。
function _getTargetBooklog(data){
var datas = data;
var dataLength = datas.books.length;
var targetElement = $('#TargetBooklog');
targetElement.append('<ul></ul>').css('display','none');
if(dataLength > 0){
$.each(datas.books, function(i, item){
var booksAsin = item.asin;
var booksTitle = item.title;
var booksAuthor = item.author;
var booksImage = item.image;
var imageW = item.width;
var imageH = item.height;
var amazonURL = 'http://amazon.jp/o/ASIN/' + booksAsin + '/' + amazonID + '/ref=nosim/';
var htmlSrc;
htmlSrc = '<li>';
if( booksImage ){
htmlSrc += '<p class="img" style="width:' + imageW + 'px"><a href="' + amazonURL + '" target="_blank"><img src="' + booksImage + '" alt="' + booksTitle + '" width="' + imageW + '" height="' + imageH + '"></a></p>';
}
htmlSrc += '<p style="margin-left:' + (Number(imageW) + 10) + 'px"><a href="' + amazonURL + '" target="_blank">'+ booksTitle +'<br>';
htmlSrc += booksAuthor + '</a></p>';
htmlSrc += '</li>';
targetElement.find('ul').append(htmlSrc);
});
targetElement.append('<p class="taR">powered by <a href="http://booklog.jp/widget" target="_blank">ブクログ API</a></p>');
targetElement.fadeIn("slow").slideDown("slow");
}else{
var htmlSrc = '<li>No Books :(</li>';
targetElement.find('ul').append(htmlSrc);
targetElement.append('<p class="taR">powered by <a href="http://booklog.jp/widget" target="_blank">ブクログ API</a></p>');
targetElement.fadeIn("slow").slideDown("slow");
}
}