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

Home arrow Blog
日記帳
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 検索リクエストを作る部分が余りにもエレガントさに欠けていたので
 少々修正(^^; ---手抜きしすぎでした。

続きを読む...
 
面白情報「Second Life」 プリント
2006/02/15 Wednesday 19:28:57 JST
Second Life」は、なかなか面白そうです、今現在142,122人の居住者がいて
なんと、生計を立てる事も可能らしいですね。
日本でも、こういうアバターを使ったサービスは過去に有りましたが
今ひとつ普及しませんでしたが、日本語版が出ればそこそこ楽しそうです。
(日本の怪しげな、情報起業家=インフォプレナーとかに騙される前にみてみたらどうでしょ)
(どういう仕組みなのかは、私は、判りませんのでサイトを参照して下さいね)


 
モバイル情報も拾ってみる(^^) プリント
2006/02/14 Tuesday 20:49:43 JST
これからは、モバイル情報も拾ってみます。

個人的に、モバイルというか、小さいマシンが好きなので
いろいろ、情報を拾っていこうと思っています。

しかし、モバイル機器もいろいろ出ますね

最近興味があるのは、HTC HermesとWizardですね

今回出た、NECのVoToLも、なかなか良いです。
DocomoもHTCの端末を出すらしいので、期待しているところです
できれば、Hermesだと嬉しいな~
同じWM5でも、W-ZERO3とHTC Universalは、ちょっと大きくて
食指が動かないです。(でもVGAは魅力ですね)


今使ってる、SL-C860もpdaXromを入れて使ってて、
結構気に入ってるんですが、そろそろ、買い替え時かな?
 
ようやく復旧です. プリント
2006/01/21 Saturday 16:19:31 JST
ようやく一段落です.
無くなったデータは、あきらめてデザインも少々変えました.
 
DBのテーブル壊れた プリント
2006/01/19 Thursday 11:13:21 JST
このサイトで試用しているCMSのデータベーステーブルの一部が
壊れてしまった復旧も効かない。

悲しい、何でこんな事になってしまったかというと
新しいコンポーネントを追加して、間違った操作をしてしまったら
ユーザーテーブルが消されてしまったのです。
なんと全て、全てのユーザーを消してくれました。(危険です。)

テーブルに無理やりユーザー追加したり、アクセスコントロールのテーブル修正したり
しましたが、どうにも論理矛盾が解消されず、一般ユーザーまでにしか修正できませんでしたので
あきらめて、インストールから始めて再構築しました・・・・・疲れました。

データベースのバックアップはまめに取りましょうという痛~い教訓でした

 
お知らせ プリント
2006/01/19 Thursday 10:33:20 JST
メンテナンス中にデータを失ってしまいました。
リカバリーできそうにないので再度構築しなおしました!!
 


«2007年 February 
MoTuWeThFrSaSu
   1234
567891011
12131415161718
19202122232425
262728       



-天気予報コム-

cybershot_t9_234_60.gif











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