案ずるより産むが易し 意外と簡単 楽天ウェブサービスを使ってみる(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>
他にも指定するパラメータにはありますが、ご自身で追加して試してみてください。
(デモページは検索設定、デザイン等は上記コードで表示されるものと違う場合があります)
お約束ですが、このサイト、およびサイトに掲載されているコードを利用する場合、その利用者、第三者に不利益、損害等が発生したとしても、当方は一切その責任を負わないものとします。自己責任でご利用ください。