Amazonの商品個別ページでのwindow.productTagsオブジェクト

Amazon.co.jp(Amazon.comでも)の商品個別ページのDOMにはwindow.productTagsというオブジェクトがあり、その中にASINをはじめ商品のタイトルや商品画像のURL、著者名(CDとかならアーティスト名)など基本的な情報が格納されている。これを使えば簡単な商品紹介リンクならば外部のサービスを介することなく作成することが出来る。

window.productTagsオブジェクトは商品個別ページにあるタグをつける機能のために用意されているものみたい。Perlクックブック〈VOLUME1〉のページを例にwindow.productTagsオブジェクトを探してみると、

productTags: {
  asin: "4873112028",
  image: "http://ec2.images-amazon.com/images/I/51FHW5B8GQL._SL75_PIsitb-sticker-arrow-st,TopRight,8,-14_OU09_.jpg",
  title: "Perl\u30AF\u30C3\u30AF\u30D6\u30C3\u30AF\u3008VOLUME1\u3009",
  authors: [
    "\u30C8\u30E0 \u30AF\u30EA\u30B9\u30C1\u30E3\u30F3\u30BB\u30F3",
    "\u30CD\u30A4\u30B6\u30F3 \u30C8\u30FC\u30AD\u30F3\u30C8\u30F3",
    "Tom Christiansen",
    "Nathan Torkington",
    "Shibuya Perl Mongers",
    "\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u30B7\u30B9\u30C6\u30E0"
  ],
  appID: "retail",
  // 以下、タグをつける機能に関するプロパティが色々
}

こんな感じになっている。productTags.authorsもジャンルによってプロパティ名が違うとかそういうことは無く(空の配列だったりすることはあるけど)、どこでも同じように値を取り出すことが出来る。試しに画像つきのアソシエイト・リンクを生成するブックマークレットを作ってみた。

Install Bookmarklet: Associate this!

style指定とかを削除すればもっと短くなる。

画像のサイズは基本的に長辺が75pxにリサイズされているものを参照している(_SL75_)が、なか見! 検索のマークやおすすめマークと混ぜられたりしてると83pxとかそれ以上の時もあるので、適当に正規表現で削除してやると良さそう。

productTags.image.replace(/_SL75_.*\.jpg$/, "_SL75_.jpg");

こんなんで多分いける。ついでに画像を大きくしたかったりする場合は_SL120_.jpgで置換してやるとかで。