Amazon Product Advertising API を利用してみる
Amazonの商品情報をAPIから取得できるかどうかを試してみる。
Amazon Product Advertising API とは
Amazonの商品情報を利用して独自のEコマースサイトを作成するためのAPI群。 これにより、APIを叩くだけでAmazonの商品情報をはじめ、様々な情報を取得できる。
Amazon Product Advertising API を利用する
詳細については、以下のサイトが非常に分かりやすいので、参考にしてください。
Amazon Web サービス入門(Product Advertising API)
■ APIを利用する上で必要なもの
- トラッキングID
事前にAmazonアソシエイト・プログラムへの参加し、トラッキングIDを取得 *1
参考:Amazonアソシエイト・プログラムへの参加
- Access Key ID, Secret Access Key
Product Advertising API アカウントを作成し、上記のID, Keyを取得
参考:Access Key IDとSecret Access Keyの取得
Product Advertising APIはREST APIなので、XMLが取得できるかどうかだけなら、
ブラウザのURL部分に下記のリクエストを入力すればXMLが取得できるはず。
※AccessKeyID部分を自分のAccess Key IDに置き換える
※プログラムからXMLを取得する際は、署名などを加えたりしてめんどくさい。
http://ecs.amazonaws.jp/onca/xml? Service=AWSECommerceService &AWSAccessKeyId=[AccessKeyId] &Operation=ItemSearch &SearchIndex=Books &Title=Harry%20Potter &Version=2009-07-01
■ APIを利用してみる
yum -y install httpd php pear pear install Services_Amazon-0.9.0
※Amazonにリクエストを送る際に、タイムスタンプ、署名を加える必要があるので、今回は、PearのServices_Amazonを利用する。
- Services_Amazonを利用し、リクエストを取得する
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8" /> <title>Amazon API</title> </head> <body> <h1>Amazon API</h1> <form action="" method="post"> <input type="text" placeholder="Keyword" name="test"> <button type="submit" class="btn">Submit</button> </form> <?php require_once "Services/Amazon.php"; $amazon = new Services_Amazon(); $amazon->setLocale("JP"); $amazon->setAccessKeyID("****************"); $amazon->setSecretAccessKey("*************************"); $amazon->setAssociateID("************"); $options = array(); $options['Keywords'] = $_POST['test']; $options['Sort'] = 'salesrank'; $options['ResponseGroup'] = 'ItemIds,ItemAttributes,Images'; $result = $amazon->ItemSearch('Books', $options); if(!empty($_POST['test'])){ if (PEAR::isError($result)) { // Error $error = $amazon->getError(); echo $error['Code']; echo $error['Message']; } else { // Correct echo "<pre>"; var_dump($result); echo "</pre>"; } } ?> </body> </html>
詳しい関数の説明については、Services_Amazon を参照。
XMLで取得したい情報はResponseGroupで指定。
今回はAmazon Product Advertising APIを利用して、商品の検索しか行なっていませんが、他にもカートの追加、削除であったり色々とできるみたいなので、気になる方は調べてみてください。
以上
*1:Amazonアソシエイト・プログラムへの参加の為に、利用するWEBサイトの情報を入力するんだけど、しっかりとしたサイトや目的がないとAmazonの審査が通らない。審査に落ちても確認はできないがAPIは利用できるっぽいので、審査が通らない場合は、トラッキングID, Access Key ID, Secret Access Keyは確認したらメモしといたほうが良い。
Homebrewを使ったMANP環境構築
今さらながらmacportsからhomebrewに乗り換えてみた。
とりあえず以下の環境でPHP, mysql, apacheの環境を揃えた。
PC:Macbook
OS:Mac OS X lion
パッケージ管理:homebrew
% brew install coreutils % brew install bash-completion % brew install curl % brew install zsh % brew install readline # php, mysql, apache % curl -O https://raw.github.com/ampt/homebrew/php/Library/Formula/php.rb % mv php.rb `brew --prefix`/Library/Formula % brew options php % php --with-mysql % Include MySQL support --with-pgsql Include PostgreSQL support % --with-mssql Include MSSQL-DB support % --with-fpm Enable building of the fpm SAPI executable % --with-apache Build shared Apache 2.0 Handler module % --with-intl Include intl extension % --with-readline Include readline extension % brew install php --with-mysql --with-apache --with-readline # php % vi /etc/apache2/httpd.conf で以下を追加 LoadModule php5_module /usr/local/Cellar/php/5.3.10/libexec/apache2/libphp5.so # mysql % mysql_install_db --verbose --user=`whoami` --basedir="$(brew --prefix mysql)" --datadir=/usr/local/var/mysql --tmpdir=/tmp % mysql_install_db
いつも分からなくなるので、以下は、設定ファイル、コマンドなど。
■ php
/user/local/Cellar/php/5.3.10/etc/php.ini
■ apache
/etc/apache2/httpd.conf apachectl start (= /usr/sbin/apachectl start) apachectl stop (= /usr/sbin/apachectl stop) apachectl restart (= /usr/sbin/apachectl restart)
■ mysql
/usr/local/Cellar/mysql/5.5.25/bin/mysqld_safe & /usr/local/bin/mysql.server start /usr/local/bin/mysql.server stop /usr/local/local/bin/mysql.server restart
phpinfo();にアクセスして確認
想像していた通り、元々macに入っているapache2.2を利用してくれてる。
homebrewすげえええええええ。 とりあえずこんな感じ。
はてなブログのサイドバーにYoutube貼り付ける
タイトル通りです。自分用のPlayerをブログに。Youtube自体がHTML5ですし、はてなブログのサイドバーは「html」、「javascript」挿入可能なので非常に簡単にできる。
- 管理 -> デザイン
- カスタマイズ -> サイドバー -> モジュールを追加
- 追加したいYotubeの埋め込みコードを挿入
<iframeclass="youtube-player"type="text/html"width="200"height="200"src="http://www.youtube.com/embed/3cupbrwhNp0"frameborder="0"> </iframe>
※ 注意点として、画像サイズを200px x 200pxより小さくし過ぎると
「Video player is too samll.」って言って再生できないので注意。
参考:YouTube API Blog: Minimum embeds: 200px x 200px
一曲だけじゃなくて複数の曲をランダムに流したいと思って検索してみた。
- javascriptの配列に複数のyoutubeのURLを入れてランダムにする方法
PARA MI GENTE「複数のyoutube動画を埋め込んでランダム再生する方法」 - サイドバー用にリストを作成し、リストを再生する方法
Youtube ヘルプ
- [動画の管理] に移動し、[再生リスト] を選択します。
- 埋め込む再生リストを選択します。ページの上部にある [共有] ボタンをクリックします。
- [共有] タブをクリックして埋め込みコードをコピーします。
- そのコードをウェブサイトやブログに貼り付けます。
ブログ用のリストをyoutubeで作って再生するのが一番スマートなのかな。
プレーヤーのカスタマイズとかもできるみたいなので暇な時にカスタマイズしよう。
ニフティクラウド関連の個人的なリンク集
基本的にはAPIを利用するために以下のSDKなどのツールが公開されている。
[公式] コマンドラインツール (zip)
− コマンドラインツールリファレンス (pdf)
− コマンドラインツール 使用例
% cd NIFTY_Cloud_api-tools/bin % chmod 700 nifty-* % ./nifty-describe-instances SERVER_NAME -I ACCESS_KEY -S SECRET_KEY % INSTANCE SERVER_NAME xxx.xxx.xxx.xxx xxx.xxx.xxx.xxx running USER_NAME mini 2011-03-12T00:00:00+09:00 japan disabled xxx.xxx.xxx.xxx xxx.xxx.xxx.xxx disk 2 2 static x86_64 centos LOADBALANCING LB 80 80
[公式] ニフティクラウド SDK for Java (zip)
− ニフティクラウド SDK for Java リファレンス (JavaDoc)
[公式] ニフティクラウドSDK for Ruby (zip)
− ニフティクラウド SDK for Ruby リファレンス (RDoc)
% cd NIFTY_Cloud_SDK_for_Ruby/sample/instances % vi describe-instances.rb require 'rubygems' require File.dirname(__FILE__) + "/../../lib/NIFTY" require 'pp' ACCESS_KEY = "ACCESS_KEY" SECRET_KEY = "SECRET_KEY" ncs4r = NIFTY::Cloud::Base.new(:access_key => ACCESS_KEY, :secret_key => SECR ET_KEY) options = { #:instance_id => ["SERVER_NAME"] } pp response = ncs4r.describe_instances(options) % ruby describe-instances.rb
[非公式] ニフティクラウドSDK for PHP (zip)
以下便利なリンク集。
− ニフティクラウドの技術関連ユーザブログ。
− 起動スクリプトなど便利なスクリプト多数。
− おすすめスクリプト
・ニフティクラウド探検隊 起動時スクリプトでサーバーを自動構築してみた。
− Githubで「nifty cloud」で検索した結果。
− 2012/06/16 100件以上のプログラムが公開されています。