くらげになりたい。

くらげのようにふわふわ生きたい日曜プログラマなブログ。趣味の備忘録です。

国立国会図書館サーチで提供するAPIを使ってみた

書籍検索APIを探してたときに見つけた、国立国会図書館APIを試してみた!

使った感のまとめ

  • 認証なしで利用可能。検索も柔軟。
  • 読み方がわかればシンプルだが、ドキュメントがわかりにくいかも。。
  • タイトル、概要、出版社, 著者、出版社、発行日、価格、ページ数が取得可
    しかもそれぞれのカナまである。
  • ただし、価格などは「1000円」などなので、適宜加工しないと。。
  • サムネイルはあまりないかも。。
  • 情報量が多いが、複雑なXMLのため、xml2jsonを使っても大変。。
  • 網羅率は高いが、応答速度が遅い。。

銃砲料は多いけど、サクッとは使いにくそう。。
応答速度も遅いので、Web検索とかには向かないかなぁ。。
クロールとかボットならいいかも。

使い方

import axios from "axios";
const xml2js = require("xml2js");

public async search(keyword: string) {
  // ベースURL
  const baseUrl = "https://iss.ndl.go.jp/api/sru";
  
  const params = {
    operation: "searchRetrieve",
    query: `title=${keyword} AND mediatype=1`, // タイトルで検索。種別は本(1)のみ。
    recordPacking: "xml"                       // "xml"形式を指定
  };
  const res = await axios.get(baseUrl, { params: params });
  return await asyncParseString(res.data);
}

/**
 * xml2jsのparseStringをPromiseでラップ
 */
private asyncParseString(xml: string): Promise<any> {
    return new Promise(function(resolve, reject) {
      const options = {
        trim: true,
        explicitArray: false
      };
      xml2js.parseString(xml, options, function(err, obj) {
        if (err) reject(err);
        resolve(obj);
      });
    });
  }

リクエスト/レスポンスは、国立国会図書館サーチ 外部提供インタフェース仕様書(第1.25版) 2018.09.25 (PDF)に記載されている。
PDF...PDF...

以上!!

参考にしたサイト様