19
20

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 5 years have passed since last update.

PHPでISBNを用いて楽天ブックス書籍検索APIから本の情報を取得

Last updated at Posted at 2014-10-28

ISBNを用いてAPIから本の情報を取得パート2!
Mashup Award 10に応募する際に楽天のAPIを使ってみました☆
ちなみに、応募した作品はtoshotです
※パート1は「PHPでISBNを用いてAmazonAPIから本の情報を取得」です

またまた、パラメータについての説明や書き方について詳しくは触れません(。-人-。)
が、できるだけ基本はコピペで、パラメータや設定についてはリンク先へ行ってもらえると取得できるようになってるつもりです…
※ISBNは本のバーコードの下にある数字のこと。今回は上段のバーコードの数字13桁(978…)を使う

※非常に残念ですが、「api.rakuten.co.jp」で提供しているAPIの廃止についてということで、こちらの記事書き直さなきゃいけなくなりました。
app.rakuten.co.jpのAPIに切り替えるので少々お待ちください。
切り替え次第更新のお知らせを出させて頂きます(。-人-。)

##手順
1.事前準備(Amazonでキーの取得)
2.必要なパラメータの設定
3.パラメータを用いてリクエストURLの作成
4.楽天ブックス書籍検索APIから情報を取得

##1.事前準備
まずはじめに楽天ウェブサービス会員登録またはログインをして
・アプリID(デベロッパーID)
・application_seacret
・アフィリエイトID(アフィリエイトの際に必要)
を取得しておく。
楽天ウェブサービスの利用方法はコチラ

##2.必要なパラメータの設定

/* ※は自分で設定してください */
define("APPLICATION_ID"     , '※アプリID');
define("APPLICATION_SEACRET", '※application_seacret');
define("AFFILIATE_ID"       , '※アフィリエイトID'); //アフィリエイトの際に必要
define("ACCESS_URL"         , 'https://app.rakuten.co.jp/services/api/BooksBook/Search/20130522?');
//BooksBook/Search/は楽天ブックス書籍検索APIを使用しているため
//20130522はバージョンを表している(基本的には最新でOK)

$params = array();
$params['format']              = 'json';
$params['applicationId']       = APPLICATION_ID;
$params['application_seacret'] = APPLICATION_SEACRET;
$params['affiliateId']         = AFFILIATE_ID; //アフィリエイトの際に必要
$params['isbn']                = '※欲しい本のISBN';

1で取得しておいたIDなどをそのままコピペ
また、欲しい本のISBNを設定

今回は楽天ブックス書籍検索APIを利用しているが、他にブックス系のAPIとして、楽天ブックス総合検索API楽天ブックスCD検索APIなど計9種類のAPIがあります。

##3.パラメータを用いてリクエストURLの作成

$requestURL = ACCESS_URL;
foreach($params as $key => $param){
    $requestURL .= "&{$key}={$param}";
}

2で設定したパラメータをforeachでリクエストURLに付け足していく

##4.楽天ブックス書籍検索APIから情報を取得

//結果がjson形式で帰ってくるのでdecodeし配列へ
$request = file_get_contents($requestURL);
$info 	 = json_decode($request, true);

//ここでvar_dump($info);とかで確認すると良いよ

// 出力パラメータを変数に
if (count($info) != 0) {
	foreach ($info as $key => $Items) {
		if ($key == "Items") {
			//出力パラメータの構造については下記で説明します
			$Item = $Items['0']['Item'];
			// 各情報を配列へ格納
			$title        = $Item['title']; //タイトル
			$author       = $Item['author']; //著者
			$manufacturer = $Item['publisherName']; //出版社
			$imgURL       = $Item['mediumImageUrl']; //本の表紙の中サイズのURL(サイズは小中大から選べる)  
			$bookURL      = $Item['itemUrl']; //本の商品ページ

			// DBで管理しやすいように文字コードの宣言やスペースの削除等を行う
			$title 	      = mb_convert_kana($title, "as", "UTF-8");
		}
	}
} else {
	//エラー
}

json_decodeの処理ですが、他のサイトではsimplexml_load_stringを使っているのが多かったのですが、エラーが解決出来なかったためjson_decode処理にしました。

取得したい情報は「出力パラメータ」と言い、楽天ブックス書籍検索APIの出力パラメータで確認できます。
必要に応じて適宜出力パラメータを呼び出してください。
phpであればvar_dumpで出力パラメータの中身が確認できるので、吐き出してみると良いと思います。

##おわりに
今回もDBへ繋ぎ込むためPHPを使いました!

また、Amazonと楽天のAPIでやってみて、率直な感想としては楽天の方がシンプルで簡単だった気がします。
楽天のAPIはまだまだたくさんありますが、今回のを少しいじれば他のAPIも触れると思います。

Mashup Award 10に向けて急いでやったので、コードは汚かったり見にくい部分があると思うけど、コピペしてパラメータや出力パラメータを適宜追加してもらえれば何かと使えるかなー…

という事で、以上『PHPでISBNを用いて楽天ブックス書籍検索APIから本の情報を取得』でした☆

19
20
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
19
20

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?