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
で置換してやるとかで。