Amazon Advertising API の流れ

検索キーワードは
rawurlencode() でURLエンコードする
時刻認証パラメータ Timestamp をAmazon の使用にそって作成
時間の表示はISO8691形式
タイムゾーンはUTCで
2012-12-18T11:09:51Z
というようになるようにする
UTCで現在時刻を出力するには
gmdate() を使う
これも最後にrawurlenccode() で
URLエンコードする
//Timestamp 作成
$Timestamp =gmdate(‘Y-m-d’).’T’.gmdate(‘H:i:s’).’Z’;
$Timestamp=rawurlencode($Timestamp);
そして、Amazon の使用にそった順番でパラメータを記述し変数に格納
署名認証パラメータのSignature をAmazon の仕様にそって作成
署名対象のリクエスト文字列を整えて変数に代入
それをAmazon から発効されたシークレットアクセスキーを使ってRFC2104準拠の
HMAC-SHA256ハッシュアルゴリズム計算して
それをさらにBASE64エンコードし
最後にURLエンコードする
仕様の詳細は
https://images-na.ssl-images-amazon.com/images/G/09/associates/paapi/dg/index.html?rest-signature.html
を参照
あとは、パラメータを組み合わせて
データ取得用URLを作り、XMLパースする
これも変数に格納
取得した検索結果
$xml->Items->Item

foreach() で1つずつ代入しながら処理
使用するレスポンス名が長いためこれを変数にすると
書きやすい
商品名と画像を表示して商品ページのリンクURLをはって
価格などの情報を定義リスト表示する
そして、 if else で検索結果がないなら
メッセージを表示するようにする
という流れ

Amazon AdvertisingAPIでリクエストURL作成

Amazon AdvertisingAPIでリクエストURL作成
ベースURLは
http://ecs.amazonaws.jp/onca/xml
必須パラメータは
Service
AWSAccessKeyId
AssociateTag
Timestamp
Signature
Operation
SearchIndex
Service
AWSAccessKeyId
AssociateTag
については、固定、
または
発行された固有パラメータを指定します
Operationは、商品検索の
ItemLookup
を指定して、
SearchIndexは、すべてにするので
Allを指定
Timestamp
Signature
は、認証のためのパラメータ
それでは、リクエストURLの作成
これも、ベースURLへ、
リクエストパラメータをつなげデータ取得URLを作成
Amazon AdvertisingAPIでは、
Signature以外のパラメータの順番を
バイト順に並び替えたうえで、最後に
Signatureパラメータをつける
これで、リクエストURLは、
http://ecs.amazonaws.jp/onca/xml?AWSAccessKeyId=アクセスキーID&AssociateTag=アソシエイトタグ&ItemPage=1&Keywords=検索キーワード&Operation=ItemSearch&ResponseGroup=Large&SearchIndex=All&Service=AWSECommerceService&Timestamp=時刻認証&Version=20110802&sigunature=署名認証
となります
しかし、なぜか、今回自宅サーバーで
実験したときにはwordpress で表示されませんでした
もっとスキルをあげて再挑戦したいと思います

Amazon AdvertisingAPIの基本仕様

Amazon AdvertisingAPI
Amazonの商品検索API
利用するには
アクセスキーID
シークレットアクセスキー
アフィリエイトタグ
が必要
ベースURLは
http://ecs.amazonaws.jp/onca/xml
リクエストパラメータの必須パラメータも多い 
以下は必須パラメータ
Service
AWSECommerceServiceを指定
AWSAccessKeyId
アクセスキーID
AssociateTag
アソシエイトタグ
Timestamp
認証のための現在時刻
Signature
認証のための署名を指定
Operation
実行するAPIの処理を指定
商品検索なら ItemLookup
SearchIndex
商品カテゴリーの指定
AllもしくはBlendedなら、全カテゴリ
Apparel
ファッション
Appliance
大型家電
Automotive
カー用品
Baby
ベビー&マタニティ
Beauty
コスメ
Books

DVD
DVD
Electronics
家電、カメラ、AV機器
ForeignBooks
洋書
Grocery
食品、飲料
HealthPersonalCare
ヘルス、ビューティー
Hobbies
ホビー
Jewelry
ジュエリー
Kitchen
ホーム、キッチン
Marketplace
マーケットプレイス
MP3Downloads
MP3ダウンロード
Music
音楽
MusicalInstruments
楽器
OfficeProducts
オフィス用品、文房具
Shoes

Software
PCソフト
SportingGoods
スポーツ用品
Toys
おもちゃ
VideoGames
TVゲーム
Watches
時計
以下は必須ではないパラメータ
keywords
検索ワード
ただし、URLエンコードが必要
Title
検索する商品名
Availability
在庫かあるもののみ出すならAvailableを指定
MaxmumPrice
商品の最高価格
MinimumPrice
最低価格
Condition
商品の状態
All
すべて
New
新品
ちなみに!デフォルト設定ほこれ
Used
中古
Collective
コレクター商品
Refyrbished
修理品
MerchantId
出品者ID
Amazon
Amazonのみ
デフォルト設定はこれ
All
すべての出品者
ID
出品者固有のID
ResponseGroup
取得する情報や種類の絞り込み
情報量を指定する
Large
Medium
Small
特定の属性の指定になる
Topsellers
NewRelease
などがある
ItemPage
何ページ目の検索結果を取得するか指定
SearchIndex=All
なら、最大5件となり
5ページ目まで検索できる
 
Version
使用するAPIバージョンを日付で指定
続いてレスポンスフィールド
Items->Result->IsValid
検索結果があればTRUEを返す
Items->Item->DetailPageURL
商品ページのURL
Items->Item->LargeImage->URL
大きな商品画像のURL
Items->Item->ItemAttributes->Title
商品名
Items->Item->ItemAttributes->Label
レーベル
Items->Item->ItemAttributes->ListPrice->FormattedPrice
価格
Items->Item->OfferSummary->LowestNewPrice->FormattedPrice
新品の最安値
Items->Item->OfferSummary->LowestUsedPrice->FormattedPrice
中古最安値
Items->Item->EditorialReviews->EditorialReview->Content
商品の説明
Items->MoreResearchResultsUrl
その他の検索結果のURL

Amazon Advertising API

https://affiliate.amazon.co.jp/gp/advertising/api/detail/main.html
へアクセスしてアカウントを作成します
注意点は、Amazon アソシエイトで登録した
メールアドレスと同じにするということ
サポート関連が面倒になることを回避するためです
ちなみに、すべて登録ページは英語での入力になります
http://www.blog-ouendan.com/amazonasosieito.html
を参考に入力することができました
一番悩んだのが、電話番号
携帯なので、どうしようかということで検索
個人輸入時の電話番号入力について
を参考に、
お持ちのケータイの番号が仮に090-1234-5678だとしたら、
+81-90-1234-5678と書くことになる
ということなので、
この方法でクリアしました
英語の入力は今後もありそうなので
メモしてみました
Address Line 1
(住所1) 番地など (通常、市区町村名の後に表示される住所) を記入 (例:2-15-1, Shibuya)
Address Line 2
(住所2) アパート・マンション・ビル名などを記入
City
市区町村名を記入
State, Province or Region
都道府県名を記入
ZIP or Postal Code
郵便番号を記入
Country
(国名) 日本の場合、ドロップダウンメニューから “Japan” を選択
Phone Number
(電話番号) 国番号から電話番号を記入
(例:81-3-1234-5678)
Company Name
会社名を記入 (法人の場合)
Website URL
Web サイトの URL を記入
Website or Application Description
API を利用予定の Web サイトやアプリケーションの簡単な説明を英語で記入

楽天のショッピングサイトの商品を表示 その2

リクエストパラメータ確認
まず、楽天の商品検索APIを使うため
applicationId
アプリID
keyword
キーワード
を指定する
そして、wordpressてPHPてWebAPIを使うので
format
は今回は、xmlを指定
その他のパラメータとして
hits
取得件数の指定
sort
並び方
最低金額
minPrice
最高金額
maxPrice
商品画像の有無を指定する
imageFlag
除外キーワード指定の
NGkeyword
を使って、リクエストURL作成
ベースURLへ
?
をつけて、パラメータは
&
てつなげて作成する
並び順は、
-reviewAverage
てレビューの低い順にしてみます
ベースURLは長いため
変数
$baseurlへ格納します
もし、いくつかベースURLがあるなら
わかりやすいように
$rakyten_baseurl
とするとわかりやすくなります
これで、リクエストURL作成すると
$baseurl?applicationId=アプリID&keyword=キーワード&NGkeyword=除外キーワード&format=xml&sort=-reviewAverage
ただし、sortの値をurlエンコードする必要があります
レスポンスフィールドのうち、使用するてーたの確認
商品の一覧表示に使うのは以下のデータを使います
count
検索結果の総数
Items->item->itemName
商品名
Items->Item->catchcopy
キャッチコピー
Items->Item->itemPrice
商品価格
Items->Item->itemURL
商品のURL
Items->Item->mediumImageUrls->imageUrl([0])
商品画像
Items->Item->reviewCount
レビュー件数
Items->Item->reviewAverage
レビューの平均点数
Items->Item->shopName
店舗名
Items->Item->shopUrl
店舗URL

楽天のショッピングサイトの商品を表示

楽天のショッピングサイトの商品を表示
楽天市場の商品の中から
キーワードにマッチする商品を表示することができます
それを行うのが
楽天商品検索API2
これは楽天
http://www.rakuten.co.jp/
の中から商品情報を表示することができます
これも価格帯や送料無料などで絞り込みができます
除外キーワードを設定してNOT検索も可能
楽天商品検索API2を利用するには
楽天Webサービスへ登録して、アプリIDが必要になります
楽天商品検索API2の詳細は
http://webservice.rakuten.co.jp/api/ichibaitemsearch/
へ記載されています
ベースURLは
https://app.rakuten.co.jp/services/api/IchibaItem/Search/20120723
パラメータは
applicationId
アプリID
これは必須
そして、keyword, genreId , itemCode
のどれか1つが必須になる
というより、このどれかを指定しないと
商品の検索ができない
keyword
キーワード
genreId
ジャンルID
ジャンル名、ジャンルの親子関係を調べたい場合
楽天ジャンル検索API2
http://webservice.rakuten.co.jp/api/ichibagenresearch/
を参照
itemCode
商品コード
これら以外のパラメータとして
affiliateId
アフィリエイトID
format
初期値はjson
XMLにしたいなら xml を指定
hits
取得件数の指定
デフォルトは30
設定は1~30で設定可能
sort
検索結果の並び替えに使用
かなり細かく設定できる
+affiliateRate
アフィリエイト利率順(多い順)
-affiliaateRate
アフィリエイト利率順(少ない順)
+reviewCount
レビュー件数の多い順
-reviewCount
レビュー件数の少ない順
+reviewAverage
レビューの平均で多い順
-reviewAverage
レビューの平均で少ない順
+itemPrice
価格の高い順
-itemPrice
価格の安い順
+updateTimestamp
商品更新日の日時の新しい順
-updateTimestamp
商品更新日の日時の古い順
standard
楽天標準ソート順
これがデフォルト
minPrice
検索する最低価格を設定
maxPrice
検索する最高値の設定
availability
在庫の状態指定
0なら指定なし
1なら在庫があるものだけになる
デフォルトは1
imageFrag
しょうひんの画像の有無
0なら画像の有無を気にしない(デフォルト)
1なら画像があるものだけにする
orFlag
複数キーワードで検索するときの方法の指定
0ならAND検索(デフォルト)
1ならOR検索
NGkeyword
検索から除外するキーワード設定
これはURLエンコードする必要あり
postageFag
送料の設定
0なら有料を含む
1なら送料無料のみにする
これらのAPIを使うメリットは
アフィリエイトサイト作成と
自分なりに使いやすいサイトを構築できるということ
おそらく、スマートフォンのアプリなどにも使えるはず
続いて、以下はレスポンスフィールド関連
こちらは、サイトなどに内容表示するときに使います
count
検索結果の総商品数
itemName
商品名
catchcopy
キャッチコピー
itemPrice
商品価格
itemCaption
商品の説明
itemUrl
商品URL
affiliateUrl
アフィリエイトURL
ただし、パラメータにアフィリエイトIDが入っているときのみ
imageFlag
商品画像の有無
0なら画像なし
1なら画像あり
ifなどで判別するのに使える
smallImageUrls
商品画像(小)のURL
最大3枚を配列 imageUrl で返す
mediumImageUrls
商品画像(中)のURL
最大3枚を配列 imageUrl で返す
availability
販売の可否
0なら販売不可
1なら販売可
taxFlag
消費税について
0なら税込み
1なら税別
postageFlag
送料について
0なら送料込み
1なら送料別
reviewAverage
レビューの平均点数
shopName
店舗名
shopUrl
店舗URL

yahoo ショッピング商品検索API 仕様

yahoo ショッピング商品検索API 仕様
今回はXMLで実験してみました
詳しい解説は
http://developer.yahoo.co.jp/webapi/shopping/shopping/v1/itemsearch.html
に掲載されています
ベースURLは
http://shopping.yahooapis.jp/ShoppingWebService/V1/itemSearch
パラメータは
appid
必須
アプリのID
query
検索キーワード
ただし、UTF-8エンコード必須
type
検索のタイプ
all すべての文字列を含む(こっちがデフォルト)
any 検索文字のうちいずれかを含む
jan
JANコードで商品検索
isbn
ISBNコードで商品検索
本を探すときに使う
store_id
店のIDを指定して検索
店の絞り込みに使う
http://store.shopping.yahoo.co.jp/○○○○/index.html
の○○○○の部分のURL
http://shopping.yahoo.co.jp/stores
でお店の名前を選ぶと
でてきます
例えば、
12月度の月間ベストストア 第1位!
の中で
世界のお店ニューヨークの場合だと
http://store.shopping.yahoo.co.jp/newyork19892005/index.html
となっているので、
newyork19892005
の部分がストア名に該当します
price_from
再低価格の設定
price_to
最高値の設定
hits
取得する検索結果の数
デフォルトは20
最大で50
sort
並び替えの設定
ただし、URLエンコードする必要があります
具体的な設定は
+price
価格の安い順
-price
価格の高い順
+name
ストア名順(昇順)
あいうえお順
-name
ストア名順(降順)
あいうえお順の逆
+score
おすすめ順(昇順)
おすすめ度の高いものから
-score
おすすめ順(降順)
おすすめ度の低いものから
+sold
売れ筋順(昇順)
売れているものから
-sold
売れ筋順(降順)
売れていないものから
+review_count
レビュー(昇順)
評価の高いものから
-review_count
レビュー(降順)
評価の低いものから
デフォルトは +score になっています
availability
在庫の設定
在庫があるものだけにしたいなら
availability=1 にする
discount
セール品への絞り込み
セール中商品だけ表示したいなら
discount=1 にする
shipping
送料無料の設定
shipping=1 で送料無料となります
あとは、使いそうなものとして
payment
これは支払方法の絞り込みにつかいます
creditcard
ならカード支払可能
となります
ほかにもパラメータはいくつかあります
続いて、レスポンスフィールド
totalResultsAvailable
検索結果の総数
totalResultsReturned
検索結果のうち、かえってきた検索結果の数
firstResultPosition
最初の検索結果が何個目にあたるかということ
最初は1になります
/ResultSet/Result/Hit/Name
商品名
/ResultSet/Result/Hit/Url
商品URL
/ResultSet/Result/Hit/Description
商品の説明
/ResultSet/Result/Hit/Headline
キャッチコピー
/ResultSet/Result/Hit/Availability
在庫の有無
instock 在庫あり
outofstock 在庫なし
/ResultSet/Result/Hit/JanCode
JANコード
/ResultSet/Result/Hit/IsbnCode
ISBNコード
書籍に使う
/ResultSet/Result/Hit/Model
型番
/ResultSet/Result/Hit/Store/Url
店のURL
/ResultSet/Result/Hit/Store/Name
店の名前
/ResultSet/Result/Hit/Store/Ratings/Rate
お店の評価
/ResultSet/Result/Hit/Store/Ratings/Count
評価した人数
/ResultSet/Result/Hit/Image/Small
76×76サイズの画像URL
/ResultSet/Result/Hit/Image/Medium
146×146サイズの画像URL
/ResultSet/Result/Hit/Review/Count
商品のレビュー件数
/ResultSet/Result/Hit/Review/Rate
商品レビューの平均
/ResultSet/Result/Hit/Review/Url
商品レビューページのURL
/ResultSet/Result/Hit/Price
価格
/ResultSet/Result/Hit/PriceLabel/FixedPrice
定価
/ResultSet/Result/Hit/PriceLabel/SalePrice
セール価格
/ResultSet/Result/Hit/Category/Current/Name
現在カテゴリ名
/ResultSet/Result/Hit/Point/Amount
ポイント数
これらを使って
リクエストURLを組み立てます
例えば、
検索キーワードを指定して商品を探し
その中で、在庫があるのだけを表示するようにします
この場合
リクエストURLは
http://shopping.yahooapis.jp/ShoppingWebService/V1/itemSearch?appid=アプリID&query=検索キーワード&availability=1
というようになります
なお、検索キーワードは
URLエンコードする必要があります

yahoo ショッピング商品検索API

yahoo ショッピング商品検索API
を使うことで、
Yahooショッピングに登録されている商品を
キーワード検索して
マッチした商品の情報を表示できるようになります
ちなみに YahooショッピングのURLは
http://shopping.yahoo.co.jp/
このAPIを鵜買うことで
商品名
商品画像
価格
商品の平均評価などを取得する以外に
価格帯の上限、下限の設定、送料無料のみ
という絞り込んで表示することができます
Yahooショッピング商品検索APIを使うのにも
いままで使っているAPIと同じように
アプリIDが必要になります
このYahooデベロッパー登録は
http://developer.yahoo.co.jp/
から取得可能です
今回のAPIについての詳細は
http://developer.yahoo.co.jp/webapi/shopping/shopping/v1/itemsearch.html
にかかれています
形式は
XML
JSONP
以外に
PHPserialize があります

サイトのサムネイル画像作成

サイトのサムネイル画像作成
Simple API ウェブサイトサムネイル作成API
を使うことで、任意のURLを指定して
サイトのサムネイル画像を自動生成できます
すでにサーバー側に生成済みのサムネイル画像があるなら、それを使い
もしないなら新規にサムネイルを作成する間は
別の画像が表示されます
API提供元は
http://img.simpleapi.net/
になります
続いて、APIの基本仕様について
ベースURLは
http://img.simpleapi.net/small/
リクエスト方法は簡単で
サイトに掲載されているように
ベースURLの後に
サムネイル画像にしたいサイトのURLをつなげるだけです
例えば、yahoo なら
http://img.simpleapi.net/small/http://www.google.co.jp/
となります
ちなみに、書籍のサンプルでは
explode() があるけど、これは
文字列を区切るときに使う関数です
例えば、改行で区切るなら
explode(“\n”,inputword);
これで、inputword で渡された文字列に
改行があれば、そこで区切るようになります
参考URLは
http://phpspot.net/php/man/php/function.explode.html
参考書籍をみてわからないときには
その関数を検索してみると
いろいろなブログなどで解説されているので
理解しやすくなります

YouTube Data API 基本仕様

YouTube Data API 基本仕様
ベースURLは
http://gdata.youtube.com/feeds/api/videos
リクエストパラメータは
vq
検索キーワード
ただし、URLエンコードが必要
maxresults
取得する動画の数を指定
初期値なら25
最大で50
orderby
検索結果の並び替えの指定
初期値は関連順で表示
具体的には
relevance
関連順
published
投稿が新しい順
viewCount
視聴回数の多い順
rating
評価の高い順
次にレスポンスフィールド
title
動画タイトル
content
動画内容の説明
media:player
属性 url で動画のURL
media:thumbnail
属性 url で動画のサムネイルのURL
詳しい解説は
リファレンス ガイド: Data API プロトコル
https://developers.google.com/youtube/reference?hl=ja#youtube_data_api_tag_media:title
に掲載されています
これらを参考にリクエストURLの組み立てをします
ベースURLは
http://gdata.youtube.com/feeds/api/videos
でも長いので、変数に格納
$baseurl =”http://gdata.youtube.com/feeds/api/videos”;
キーワードは
vq=キーワード
取得する動画の数を20にするなら
max-results=20
視聴回数の多い順に並び替えということで
orderby=viewCount
これらのパラメータを組み合わせてみると
$baseurl?vq=検索キーワード&max-results=20&orderby=viewCount
というようになります
ただ、このYouTube Data API
については、いままで使ってきたAPIとは異なり
media:player というタグがあるので
これは
simplexml_load_file()
でパースすることができません
ちなみに、media:player のようなものを
名前空間プレフィックスといいます
これの対処方法は
children()を使うこと
media:player なら
children(‘media’,TRUE)->player
というようにして対処します
これで、いつものように下層データを取得することができます
さすがに毎回これを書くのも面倒なので
これもベースURLみたいに変数に格納しておくと
楽になります
たとえば、動画URL取得なら
$video_url = esc_url( $video->children(‘media’,TRUE)->group->children(‘media’,TRUE)->player->attributes()->url );
途中に esc_url()
がありますが、これは
URLをサニタイズするための関数です
URLのサニタイズというのは
不正な形式を受け付けないようにすることで
サイトに害を与えるのを予防することで
htmlspecialchar()
とかとおなじようなものです
この関数のわかりやすい説明が
esc_urlとhome_url
リファレンス的なものだと
http://elearn.jp/wpman/function/esc_url.html
が参考になります