Aex: Amazon.co.jpの全商品から検索するよ!

Amazon Product Advertising APIItemSearchオペレーションのパラメータとしてSearchIndex=Allが日本でも利用できるようになったらしいので、とりあえずAexという名前でAmazon.co.jpの検索サイトを作ってみた。これでドロップダウンでカテゴリを選択とかいう腐ったUIから解放される。

SearchIndex=Allを指定すると全商品からKeywordsに指定した文字列で検索してくれる。SearchIndex=Blendedとはまったく違い、カテゴリごとに検索結果が分けられて返ってきたりはしない。色々検索してみたところ、Amazon.co.jpでの検索と同じ結果で、概ね期待通りの検索結果が返ってくるようだ(ItemSearchオペレーションのデフォルトではCondition=Newなので中古商品などが含まれないというような違いはあったりもする)。

SearchIndex=Allのみの制限として、検索結果のページングに使用するItemPageの最大値が5(SearchIndex=Booksなどの場合は400)までというのがあるようだ。またSortに指定できる値も、

  1. price
  2. -price
  3. relevancerank
  4. salesrank

の4つだけになっており、名前順でソートなどは不可能。他にも何か制限ありそう……。

ItemAttributes/ProductGroupの値の一覧が(できれば対訳も)欲しい。今まではSearchIndexでカテゴリを絞っていたのでProductGroupの値を意識しないでも何とかなったけど、全カテゴリから検索できるようになるとどのカテゴリの商品かをProductGroupから類推することになるが、ローカライズされていないのでCEとか言われてもわからない。

Amazon アソシエイト・プログラム(アフィリエイト)公式ブログではProduct Advertising APIをPAAPIって略してるんだな。ぱーぴ!! 1

追記@2009-08-01T20:44:44+09:00

IE8ではonhashchange、それ以外のブラウザでは古のsetInterval()を使った簡単なjQueryプラグインを書いて、ブラウザの戻る・進むに対応させた。普通にjQuery history pluginを使えば良かったという……。Firefox 3.xでは、

location.watch("hash", function (obj, oldVal, newVal) {
    $(window).trigger("hashchange");
    });

とか初めてObject.watch()を使ってやってみたんだけど、location.hashに値をセットしようとすると#undefinedとかなってわけがわからなくなった。どうせ3.6でonhashchange導入されるから良いか。

追記2009-08-02T15:27:24+09:00

クエリの方式を#q=foo;p=3という形に変えたり、スタイルをモノクロにしたり、バグ直したり。