Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

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

More than 3 years have passed since last update.

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>

slangsoft
ナマケモノ系組み込みSE。備忘録や学習のアウトプットの場としてQiitaを利用しています。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away