5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

ISBNで詳しい書籍情報を取得 (国立国会図書館API)

Last updated at Posted at 2022-01-27

国立国会図書館APIを使用した詳しい情報を出す方法が探してもなかったので、公式が出している書籍管理Excelのマクロの中身を探して何とかAPIのリンクをゲットできたので備忘録として載せておく。

探してダメなら、、、

探してたらこんなものを見つけた。
もしやと思ってマクロをのぞいたら、、、APIのリンクが使われている!ってなったので処理を追って組み合わせてみた。

https://iss.ndl.go.jp/api/sru

まずこれはアクセス先のリンクなので最初に置く。

operation=searchRetrieve

どうやらこれは必須なようなので入れる。

version=1.2

APIを利用するときに互換性を保つために指定。

recordSchema=dcndl

これが重要っぽい。
デフォルトだと、dcになっていてまともな情報が出ない。

onlyBib=true

書籍以外のIDとかの情報はいらないので返さないように指定。
ちなみにdcndlに指定してないと使えないっぽい

recordPacking=xml

データのパッキング方法指定。stringでも行けるけど、私はとりあえずxmlにした

query=isbn="XXXXXXXXXXXXX"

そしたらISBNを指定する。完全一致じゃないと出てこないようなので、安心。XXXXXXXXXXXXX の部分に任意のISBNを代入する。

dpid=iss-ndl-opac

ついでにqueryに追加
これをつけないと国立国会図書館オンライン以外のDBからもデータを取得するようなので指定して取得するデータを一つにする。queryのところのやつなのでANDをつけて付加する

#API
長々と書いたが、要するにこれをAPIとして使えばいい。 XXXXXXXXXXXXXは任意のISBN

https://iss.ndl.go.jp/api/sru?operation=searchRetrieve&version=1.2&recordSchema=dcndl&onlyBib=true&recordPacking=xml&query=isbn="XXXXXXXXXXXXX" AND dpid=iss-ndl-opac

C-Sharp

因みにC-Sharpで利用するとこうなる
Jsonに変換したりもできるので一応書いてる。

using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System.Web;
using System.Xml;

var ISBN = 0000000000000;
var uri = $"https://iss.ndl.go.jp/api/sru?operation=searchRetrieve&version=1.2&recordSchema=dcndl&onlyBib=true&recordPacking=xml&query=isbn=\"{ISBN}\" AND dpid=iss-ndl-opac";
var xml = HttpUtility.HtmlDecode(new HttpClient().GetStringAsync(uri).Result);

var doc = new XmlDocument();
doc.LoadXml(xml);
var json = JsonConvert.SerializeXmlNode(doc);
var jObject = JObject.Parse(json);
Console.WriteLine(jObject.ToString());

#参考

5
3
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
5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?