案ずるより産むが易し 意外と簡単 楽天ウェブサービスを使ってみる(4)

案ずるより産むが易し 意外と簡単 楽天ウェブサービスを使ってみる(1)

案ずるより産むが易し 意外と簡単 楽天ウェブサービスを使ってみる(2

案ずるより産むが易し 意外と簡単 楽天ウェブサービスを使ってみる(3)

のまとめ編です。

<?php
//========================================================================= 
//   	楽天Kobo電子書籍検索テスト
//========================================================================= 
header('Content-Type: text/html; charset=utf8'); // charset
require_once "./Cache/Lite.php";			   // Cache_Lite読み込み ご自分のパスに合わせてください

?>

<!DOCTYPE html>
<html lang="ja">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<title>楽天ウェブサービスを利用する</title>
</head>
<body>

<h1>楽天Kobo電子書籍検索テスト</h1>
<?php
// -----------------------------------------------------------------------------------
// 配列を使って、基本的なリクエストを作成します
// ----------------------------------------------------------------------------------- 
		$_BASEURL 	= 'https://app.rakuten.co.jp/services/api/Kobo/EbookSearch/20170426'; // 楽天Kobo電子書籍検索リクエストURL
		$_PARAMS	= array();								// パラメータ用配列

		$_PARAMS['applicationId']	= '012345678901234567890';		// あなたのアプリID
		$_PARAMS['affiliateId']		= 'a0b2d5g7y8a6f3t5a8u9ff009e';	// あなたのアフィリエイトID
		$_PARAMS['format']		    = "xml";						// json か xml を選択
		$_PARAMS['keyword']		    = "料理";						// キーワードを入力します
		$_PARAMS['koboGenreId']	    = "";						// ジャンルを指定する場合はそのIDを入力します
		$_PARAMS['hits']			= 12;						// 1ページあたりの取得件数 	1から30までの整数 
		$_PARAMS['page']			= 1;						// 取得ページ 1から100までの整数


	//配列の中の空要素を削除します
		$_PARAMS = array_filter($_PARAMS, "strlen");	// 指定のない項目を削除します

	// canonical string を作成します
		$canonical_string = '';
		foreach ($_PARAMS as $key => $val) {
		    $canonical_string .= '&'.$key.'='.$val;
		}
		$canonical_string = substr($canonical_string, 1);	// $canonical_string の最初の文字'&'を除きます

	// リクエストURL を作成します
		$_REQ_URL = $_BASEURL.'?'.$canonical_string;	// BASEURLにパラメータを付加してリクエストを生成します
		print("REQ_URL ::: $_REQ_URL <br>");		// リクエストの確認をしています 確認できたらコメントアウトします

// -----------------------------------------------------------------------------------
// APIクエストして、データを確認します
// ----------------------------------------------------------------------------------- 
 		$sxmlStr = @file_get_contents ($_REQ_URL ); 	//APIリクエストをします
		$sxmlData = simplexml_load_string($sxmlStr);	//xml文字列をsimpleXmlオブジェクトに変換
												//以降xmlオブジェクト($sxmlData)を処理します
		print "<pre>";print_r($sxmlData);print "</pre>";	// データを表示して確認しています 確認できたらコメントアウトします

//--------------------------------------キャッシュオプション設定
	$cacheOptions = array(
		'cacheDir' 				=> './temp_cache/', //キャッシュファイルの保存先ディレクトリ
		'lifeTime' 				=> '86400', 		//キャッシュの有効期限(一秒単位)。例の86400は一日
		'automaticCleaningFactor' 	=> '20'			//新規キャッシュファイル保存時の期限切れファイル自動削除設定。1/20の確率で削除される
	);

	$Cache_Lite = new Cache_Lite($cacheOptions);		//オブジェクト生成

	$_CACHE_ID 	= $_PAGE_NO.$_KOBO_KEYWD.$_KOBO_JENRE_ID;// 重複しないキャッシュIDを生成します

	if($data = $Cache_Lite->get($_CACHE_ID)){	     		//有効なキャッシュがある場合の処理	  
		  $sxmlStr = $data;  						   //キャッシュデータを変数にセット
	} else {									     	//キャッシュがなかった場合の処理
 		 $sxmlStr = @file_get_contents ($_REQ_URL ); 	//APIリクエストする
		 $Cache_Lite->save($sxmlStr,$_CACHE_ID);  	//キャッシュ保存
	}

	$sxmlData = simplexml_load_string($sxmlStr);		//xml文字列をsimpleXmlオブジェクトに変換
												//以降xmlオブジェクト($xmlData)を処理する

// --------------------------------------------------------------------------- 全体情報
	$_KOBO_ITEM_COUNT		=	$sxmlData->count;			// 検索結果の総商品数
	$_KOBO_ITEM_PAGE		=	$sxmlData->page;			// 現在のページ番号
	$_KOBO_ITEM_FIRST		=	$sxmlData->first;			// 検索結果の何件目からか
	$_KOBO_ITEM_LAST		=	$sxmlData->last;			// 検索結果の何件目までか
	$_KOBO_ITEM_HITS		=	$sxmlData->hits;			// 1度に返却する商品数
	$_KOBO_ITEM_PAGE_COUNT	=	$sxmlData->pageCount;		// 総ページ数 最大100


	print( "検索結果の総商品数 : $_KOBO_ITEM_COUNT <br>");
	print( "現在のページ番号 : $_KOBO_ITEM_PAGE <br>");
	print( "検索結果の : $_KOBO_ITEM_FIRST 件から $_KOBO_ITEM_LAST 件までを表示しています<br>");	
	print( "1度に返却する商品数 :  $_KOBO_ITEM_HITS <br>");
	print( "総ページ数 :   $_KOBO_ITEM_PAGE_COUNT <br><br>");
   
// ---------------------------------------------------------------------------
	foreach($sxmlData->Items->Item as $item){
	
		$_ITEM_TITLE			=	$item->title;				// 書籍タイトル
		$_ITEM_TITLE_KANA		=	$item->titleKana;			// 書籍タイトル カナ
		$_ITEM_SUB_TITLE		=	$item->subTitle;			// 書籍サブタイトル 書籍によっては表示されない場合もあります
		$_ITEM_SERIES_NAME		=	$item->seriesName;		// 本のシリーズ名   書籍によっては表示されない場合もあります

		$_ITEM_AUTHOR			=	$item->author;			// 著者名
		$_ITEM_AUTHOR_KANA		=	$item->authorKana;		// 著者名カナ
		$_ITEM_PUBLISHER_NAME	=	$item->publisherName;	// 出版社名
		$_ITEM_NUMBER			=	$item->itemNumber;		// 商品番号
		$_ITEM_CAPTION			=	$item->itemCaption;		// 商品説明文

		$_ITEM_SALLE_DATE		=	$item->salesDate;	  // 発売日
		$_ITEM_PRICE			=	$item->itemPrice;	  // 税込み販売価格

		$_ITEM_URL				=	$item->itemUrl;			// 商品URL
		$_ITEM_AFF_URL			=	$item->affiliateUrl;			// アフィリエイトURL

		$_ITEM_SIMG_URL		=	$item->smallImageUrl;	  // 商品画像 64x64URL
		$_ITEM_MIMG_URL		=	$item->mediumImageUrl;	  // 商品画像 128x128URL
		$_ITEM_LIMG_URL		=	$item->largeImageUrl;	  // 商品画像 200x200URL
		$_ITEM_REVIEW_COUNT	=	$item->reviewCount;		   // レビュー件数
		$_ITEM_REVIEW_AVERAGE	=	$item->reviewAverage;	 // レビュー平均

		$_ITEM_SALES_TYPE		=	$item->salesType;			// 販売タイプ 0:通常商品 1:予約商品 


		// 出力
		
		print("<img src=\"$_ITEM_LIMG_URL\" alt=\"$_ITEM_TITLE\"></a>");	// イメージの表示
		print("<br> $_ITEM_TITLE <br> $_ITEM_SUB_TITLE <br>");			// タイトル・サブタイトル表示
		print("$_ITEM_CAPTION <br><br>");								// 説明文の表示

}		// end of foreach

?>

</body>
</html>

他にも指定するパラメータにはありますが、ご自身で追加して試してみてください。

⇒デモページ

(デモページは検索設定、デザイン等は上記コードで表示されるものと違う場合があります)

お約束ですが、このサイト、およびサイトに掲載されているコードを利用する場合、その利用者、第三者に不利益、損害等が発生したとしても、当方は一切その責任を負わないものとします。自己責任でご利用ください。