LoginSignup
37
40

More than 5 years have passed since last update.

openBD の API で ISBN をキーに書誌情報を取得する ( jQuery 使用 )

Last updated at Posted at 2017-12-18

openBD プロジェクトとは?

書誌情報・書影を, だれでも自由に使える高速な API を提供しているプロジェクトです。株式会社カーリル版元ドットコムにより運営されています。
特徴は何と言っても API の応答速度。書誌情報 1 件あたり 1 ミリ秒以下という驚異的な応答速度を誇っているとか。ちゃんと計測したわけではありませんが, 体感的には Google Books API よりも高速です。

公式サイト
openBD : https://openbd.jp

API の使用方法

以下のように ISBN を指定するだけで JSON データが返ってきます。

https://api.openbd.jp/v1/get?isbn=[ISBN]

サンプル
https://api.openbd.jp/v1/get?isbn=9784047914742

コピペで動くコードサンプルを貼っておきます。
そのままエディタにコピペして, index.html として保存。それをブラウザで開けば動きます。( Firefox 57.0.2 にて確認 )

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">

    <title>書誌情報取得サンプル</title>

    <!-- Scripts -->
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
</head>
<body>

    <div>
        ISBN13:<input id="isbn" type="text" name="isbn" value="" autofocus>
        <button id="getBookInfo" class="btn btn-default">書籍情報取得</button>
    </div>

    <div>
        <p id="thumbnail"></p>
    </div>

    <div>
        書籍名:<input id="title" type="text" name="title" value="">
    </div>

    <div>
        出版社:<input id="publisher" type="text" name="publisher" value="" >
    </div>

    <div>
        巻:<input id="volume" type="text" name="volume" value="" >
    </div>

    <div>
        シリーズ:<input id="series" type="text" name="series" value="" >
    </div>

    <div>
        著者:<input id="author" type="text" name="author" value="" >
    </div>

    <div>
        出版日:<input id="pubdate" type="text"  name="pubdate" value="" >
    </div>

    <div>
        サムネイルURI:<input id="cover" type="text" name="cover" value="" >
    </div>

    <div>
        詳細:<textarea id="description" type="text" name="description" value="" ></textarea>
    </div>

    <script>
        $(function() {
            $('#getBookInfo').click( function( e ) {
                e.preventDefault();
                const isbn = $("#isbn").val();
                const url = "https://api.openbd.jp/v1/get?isbn=" + isbn;

                $.getJSON( url, function( data ) {
                    if( data[0] == null ) {
                        alert("データが見つかりません");
                    } else {
                        if( data[0].summary.cover == "" ){
                            $("#thumbnail").html('<img src=\"\" />');
                        } else {
                            $("#thumbnail").html('<img src=\"' + data[0].summary.cover + '\" style=\"border:solid 1px #000000\" />');
                        }
                        $("#title").val(data[0].summary.title);
                        $("#publisher").val(data[0].summary.publisher);
                        $("#volume").val(data[0].summary.volume);
                        $("#series").val(data[0].summary.series);
                        $("#author").val(data[0].summary.author);
                        $("#pubdate").val(data[0].summary.pubdate);
                        $("#cover").val(data[0].summary.cover);
                        $("#description").val(data[0].onix.CollateralDetail.TextContent[0].Text);
                    }
                });
            });
        });
    </script>

</body>
</html>

37
40
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
37
40