API

CiNii APIで 大学書籍を取得 #1 【python/javascript】

CiNii APIとは

全国の大学図書館の書籍情報を取得することができます。

APIキー取得方法

公式サイトにアクセスして、デベロッパー登録

✅必要事項を記入して、登録

✅登録したメールアドレス宛にAPIキーが届きます。

APIの使い方

👇まずはお試しください。

Executeをクリックすることで結果を確認できます。

パラメータの使い方

※詳細は公式サイトにも記載があります。

パラメータ 詳細
q フリーワード:部分一致テキスト検索
title タイトル:部分一致テキスト検索
title_exact タイトル完全一致検索フラグ:trueまたはfalseを指定して検索します。完全一致検索をしたい場合はtrueを指定してください。
include_utl タ統一タイトル検索対象フラグ:trueまたはfalseを指定して検索します。完全一致検索をしたい場合はtrueを指定してください。
author 著者名:部分一致テキスト検索
include_alias 著者名別名検索対象フラグ:trueまたはfalseを指定して検索します。著者名検索の際に著者別名を検索対象に含めたい場合trueを指定してください。
publisher 出版社:部分一致テキスト検索
subject 件名:部分一致テキスト検索
note 注記:部分一致テキスト検索
isbn 完全一致。 10桁/13桁のどちらでも検索できます。ハイフンは無視されます。
issn 完全一致。ハイフンは無視されます。
ncid 完全一致。
lang 言語種別をコードで指定する。コードは言語コード表を参照。
area エリア:所蔵図書館の地域を指定して検索。参加組織レコードコード一覧のKENコードを指定。
year_from 出版年(開始):西暦年。指定された年を含む
year_to 出版年(終了):西暦年。指定された年を含む
type 資料種別:0:無指定(デフォルト)、1:図書、2:雑誌
format atom:ATOM形式(デフォルト)、rss: RSS形式、 json: JSON-LD形式、html:HTML形式
appid アプリケーションID 必須

pythonでの実装方法

import requests

endpoint = "https://ci.nii.ac.jp/books/opensearch/search"

headers= {
    
}
params={
    "appid":"<APIキー>",
    "q":"革命のファンファーレ",
    "lang":"jpn",
    "format":"json"
}

result = requests.get(endpoint, headers=headers, params=params)

res = result.json()

print("書籍タイトル: "+res["@graph"][0]["items"][0]["title"])
print("詳細ページ: "+res["@graph"][0]["items"][0]["link"]["@id"])
print("出版年: "+res["@graph"][0]["items"][0]["dc:date"])
print("著者: "+res["@graph"][0]["items"][0]["dc:creator"])
print("出版社: "+res["@graph"][0]["items"][0]["dc:publisher"][0])
print("所蔵図書館数: "+res["@graph"][0]["items"][0]["cinii:ownerCount"])

 

出力結果:

書籍タイトル: 革命のファンファーレ : 現代のお金と広告
詳細ページ: https://ci.nii.ac.jp/ncid/BB2460201X
出版年: 2017
著者: 西野亮廣著
出版社: 幻冬舎
所蔵図書館数: 489

 

本APIで取得できる、詳細ページのURLにアクセスすることで、どの大学の図書館に所蔵されているか詳細を確認することができます。
また、URLの最後に”.json”を付与することでjsonでも取得できるので同様にプログラムから詳細情報を取得することも可能です。こんな感じ。https://ci.nii.ac.jp/ncid/BB2460201X
https://ci.nii.ac.jp/ncid/BB2460201X.json

javascriptでの実装方法

javascriptではfetchを利用したコードを記載します。

then()を使用した場合

//リクエスト時のクエリパラメータ
const query_params = new URLSearchParams({ 
    appid:"<APIキー>",
    q:"革命のファンファーレ",
    lang:"jpn",
    format:"json"
});
​
//APIリクエスト
fetch("https://ci.nii.ac.jp/books/opensearch/search?" + query_params)
.then(response => {
    return response.json()
})
.then(data => {
    console.log(data["@graph"])
})

awaitを使用した場合

awaitを使用することで少しだけ可読性が上がります。APIリクエストのところは結果がすぐに帰ってくるのでawaitでも問題ないかと思います。

then()は非同期処理なのに対してawaitは同期処理になります

then()は非同期で処理が進むのに対してawaitは処理が完全に終了するまで待機します。

const query_params = new URLSearchParams({ 
    appid: "<APIキー>", 
    q:"革命のファンファーレ",
    lang:"jpn",
    format:"json"
});
const response = await fetch("https://ci.nii.ac.jp/books/opensearch/search??" + query_params);
const data = await response.json();
console.log(data["@graph"])

 

以下の記事では書籍の著者情報からの検索のやり方について記載しています。
CiNii APIで 大学書籍を取得 #2CiNii APIとは 全国の大学図書館の書籍情報を取得することができます。 今回は書籍の著者情報を取得するAPIに関して記載い...