Deno 用の国立国会図書館の検索 API クライアント
API 仕様書: https://iss.ndl.go.jp/information/api/riyou/
- OpenSearch エンドポイント対応
- deno.land: https://deno.land/x/ndl@v0.1.4/mod.ts
- nest.land: https://x.nest.land/ndl@v0.1.4/mod.ts
import { OpenSearch } from "https://deno.land/ndl@v0.1.4/mod.ts";
const client = OpenSearch();
const result = await client.search("タコピーの原罪");
console.log(result.count); // 3
const book = result.items[0];
console.log(book.title.value); // "タコピーの原罪"
console.log(book.title.pronounciation); // "タコピー ノ ゲンザイ"
console.log(book.volume); // "上"
console.log(book.identifier.find((id) => id.type == "ISBN")?.id); // "9784088830490"
console.log(book.price); // "630円"
一部のパラメーターは配列にして AND 検索することができます。
const client = OpenSearch();
const result = await client.search({
cnt: 5,
title: ["ダンジョン", "飯"],
creator: "九井諒子",
});
console.log(result.items.length); // 5
const book = result.items[0];
console.log(book.title.value); // "ダンジョン飯 = DELICIOUS IN DUNGEON"
console.log(book.title.pronounciation); // "ダンジョンメシ"
console.log(book.genre); // "漫画"
console.log(book.volume); // "1"
console.log(book.identifier.find((id) => id.type == "ISBN")?.id); // "9784047301535"
console.log(book.price); // "620円"
資料種を指定することもできます。
const client = OpenSearch();
const result = await client.search({
cnt: 3,
title: "キノの旅",
mediatype: "children", // 児童書
});
console.log(result.items.length); // 3
const book = result.items[0];
console.log(book.title.value); // "キノの旅"
console.log(book.title.pronounciation); // "キノ ノ タビ"
console.log(book.category); // "児童書"
console.log(book.identifier.find((id) => id.type == "ISBN")?.id); // "4840215855"
console.log(book.price); // "530円"
指定できるパラメーターの役割については、型定義や 仕様書 を参考にしてください。