はてなブックマークに追加 deliciousに追加 Clipに追加

Home arrow Blog arrow Amazon ECSをnuSOAPで使ってみる。
Amazon ECSをnuSOAPで使ってみる。 プリント
2007/02/13 Tuesday 03:41:06 JST

久しぶりの更新です。(Second Lifeの情報以来か・・・)
Amazon ECSをSOAPで使ってみた。
(これも久しぶりです・・・前にも調べたんでたんですが、どうも根気が・・・)

PHPで下記のようなクラスを作ってみて検索してみた。
今ひとつ、SearchIndexとRequestの組み合わせが良く判ってないので
かな~り適当です。
なかなか面白いですね。

define("ASSOCIATE_ID", "アソシエイトID");
define("SUBSCRIPTION_ID", "サブスクリプションID");
define("INPUT_BASE", "UTF-8");
define("ECS4_VERSION", "2007-01-15");

define("WEBSERV_URL",  "アマゾンウェッブサービスのURL");

class Ecs4Personal
{
 var $Client;
 var $Proxy;
 var $SubscriptionId = SUBSCRIPTION_ID;
 var $AssociateTag = ASSOCIATE_ID;
 var $Version  = ECS4_VERSION;

 function Ecs4Personal() {
  $soapclient  = new soapclientx(WEBSERV_URL, 'wsdl');
  $this->Client  = $soapclient;
  $proxy    = $soapclient->getProxy();
  $this->Proxy  = $proxy;
  $soapclient->setDebugLevel(1);
 }

 function SetAssociateID($aid) {
  $AssociateTag   = $aid;
 }
}
class EcsSearchWord
{
 var $SubscriptionId;
 var $AssociateTag;
 var $params;
 var $SortItem = array(
  'Video'   => array('Sort' => '-orig-rel-date' ,'BrowseNode' => '562002'),
  'DVD'     => array('Sort' => '-orig-rel-date' ,'BrowseNode' => '562002'),
  'Books'   => array('Sort' => 'daterank'  ,'BrowseNode' => '465610'),
  'Electronics'  => array('Sort' => '-release-date' ,'BrowseNode' => '3210991'),
  'VideoGames'  => array('Sort' => 'salesrank'  ,'BrowseNode' => '637872'),
  'Toys'    => array('Sort' => '-release-date' ,'BrowseNode' => '13299551'),
 );

 function EcsSearchWord($SubscriptionId, $AssociateTag) {
  if($SubscriptionId != null){
   $this->SubscriptionId = $SubscriptionId;
  } else {
   $this->SubscriptionId = SUBSCRIPTION_ID;
  }

  if($AssociateTag != null){
   $this->AssociateTag = $AssociateTag;
  } else {
   $this->AssociateTag = ASSOCIATE_ID;
  }
 }

 function CreateItemSearch($SearchIndex,$Keywords,$Page){

  $this->Request['SearchIndex']  = $SearchIndex;

  if(($Keywords != null) && ($Keywords != '')){
   $this->Request['Keywords']  = $Keywords;
  }
  
  if($SortItem[$SearchIndex] != null){
   $this->Request['Sort']   = $SortItem[$SearchIndex]['Sort'];
   $this->Request['BrowseNode'] = $SortItem[$SearchIndex]['BrowseNode'];
  }

  if($Keywords == null){
   $this->Request['Sort']   = 'salesrank';
  }

  $this->Request['Conditon']  = 'New';
  $this->Request['Version']  = ECS4_VERSION;
  $this->Request['MerchantId'] = 'Amazon';
  $this->Request['ResponseGroup'] = 
   array('Large', 'OfferFull','Variations','ItemAttributes',
    'Tracks','Accessories','EditorialReview','Images','Reviews');
  $this->Request['ItemPage']  = $Page;

  $params = array('SubscriptionId' => $this->SubscriptionId,
      'AssociateTag'   => $this->AssociateTag,
      'Request'   => $this->Request);

  return $params;
 }

 function CreateSimilarityLookup($ASIN,$Page){
  $this->Request['ItemId']   = $ASIN;
  $this->Request['Sort']   = 'daterank';
  $this->Request['Conditon']  = 'New';
  $this->Request['Version']  = ECS4_VERSION;
  $this->Request['MerchantId'] = 'Amazon';
  $this->Request['ResponseGroup'] = 
   array('Large', 'OfferFull','Variations','ItemAttributes',
    'Tracks','Accessories','EditorialReview','Images','Reviews');
  $this->Request['ItemPage']  = $Page;

  $params = array('SubscriptionId' => $this->SubscriptionId,
      'AssociateTag'   => $this->AssociateTag,
      'Request'   => $this->Request);

  return $params;
 }
}
class Ecs4Item
{
 var $ASIN;
 var $Image;
 var $Author;
 var $Manufacturer;
 var $AverageRating;
 var $ReleaseDate;
 var $Availability;
 var $Price;
 
 function Ecs4Item(){
 }
}

class Ecs4 extends Ecs4Personal
{
 var $result;
 var $TotalResult;
 var $TotalPage;

 function Ecs4() {
  parent::Ecs4Personal();
 }

 function ItemSearchKeyword($SearchIndex,$Keywords,$Page) {
  $word   = mb_convert_encoding($Keywords,"UTF-8",INPUT_BASE);
  $querykey  = rawurlencode($word);

  $word = new EcsSearchWord($this->SubscriptionId, $this->AssociateTag);

  $proxy  = $this->Proxy;
  $param  = $word->CreateItemSearch($SearchIndex,$Keywords,$Page);

  $this->result = $proxy->ItemSearch($param);

  $this->TotalResult = $this->result['Items']['TotalResults'];
  $this->TotalPage   = $this->result['Items']['TotalPages'];

  return $this->result;
 }

 function SimilarityLookup($ASIN,$Page) {
  $word = new EcsSearchWord($this->SubscriptionId, $this->AssociateTag);

  $proxy  = $this->Proxy;
  $param  = $word->CreateSimilarityLookup($ASIN,$Page);

  $this->result = $proxy->SimilarityLookup($param);

  $this->TotalResult = $this->result['Items']['TotalResults'];
  $this->TotalPage   = $this->result['Items']['TotalPages'];

  return $this->result;
 }
}




で結果を表示すると・・・

*)2007/2/17 検索リクエストを作る部分が余りにもエレガントさに欠けていたので
 少々修正(^^; ---手抜きしすぎでした。

ちょっと趣味の書籍を検索して表示してみました


超重族レティクロン
超重族レティクロン
著者 :H.G.エーヴェルス
発売元:早川書房
評価 :
発売日:2007-02
価格 :¥ 588

太陽起爆装置
太陽起爆装置
著者 :エルンスト・ヴルチェク
発売元:早川書房
評価 :
発売日:2007-01
価格 :¥ 588

バイオ・プログラム―宇宙英雄ローダン・シリーズ〈330〉
バイオ・プログラム―宇宙英雄ローダン・シリーズ〈330〉
著者 :H.G. エーヴェルス
発売元:早川書房
評価 :
発売日:2006-12
価格 :¥ 588

アルクトゥルス事件―宇宙英雄ローダン・シリーズ〈329〉
アルクトゥルス事件―宇宙英雄ローダン・シリーズ〈329〉
著者 :クルト マール
発売元:早川書房
評価 :
発売日:2006-11
価格 :¥ 588

地球最後の奇術師―宇宙英雄ローダン・シリーズ〈328〉
地球最後の奇術師―宇宙英雄ローダン・シリーズ〈328〉
著者 :クラーク ダールトン
発売元:早川書房
評価 :
発売日:2006-10
価格 :¥ 588

月面脳ネーサン―宇宙英雄ローダン・シリーズ〈327〉
月面脳ネーサン―宇宙英雄ローダン・シリーズ〈327〉
著者 :H.G. エーヴェルス
発売元:早川書房
評価 :
発売日:2006-09
価格 :¥ 588

ヘトス・インスペクター―宇宙英雄ローダン・シリーズ〈326〉
ヘトス・インスペクター―宇宙英雄ローダン・シリーズ〈326〉
著者 :H.G. フランシス
発売元:早川書房
評価 :
発売日:2006-08
価格 :¥ 588

七銀河同盟―宇宙英雄ローダン・シリーズ〈325〉
七銀河同盟―宇宙英雄ローダン・シリーズ〈325〉
著者 :ウィリアム フォルツ
発売元:早川書房
評価 :
発売日:2006-07
価格 :¥ 588

ユーロクとの戦い―宇宙英雄ローダン・シリーズ〈324〉
ユーロクとの戦い―宇宙英雄ローダン・シリーズ〈324〉
著者 :クラーク ダールトン
発売元:早川書房
評価 :
発売日:2006-06
価格 :¥ 588

永遠とのコンタクト―宇宙英雄ローダン・シリーズ〈323〉
永遠とのコンタクト―宇宙英雄ローダン・シリーズ〈323〉
著者 :ウィリアム フォルツ
発売元:早川書房
評価 :
発売日:2006-05
価格 :¥ 588

 


«2007年 February 
MoTuWeThFrSaSu
   1234
567891011
12131415161718
19202122232425
262728       



-天気予報コム-

cybershot_t9_234_60.gif











BBS7.COM
MENURNDNEXT
相互リンクドクター!アクセスアップ SEO検索エンジン最適化