Amazonの画像置換

AWSで返された画像のURLとかAmazonのASINコードから09で類推した画像が、1*1の黒いGIF画像だった場合に、01で類推できるURL無理やり置換してみる実験。

通常Amazon.co.jpの画像は、ASINコードがB00009LVXTだと、

http://images-jp.amazon.com/images/P/B00009LVXT.09.MZZZZZZZ.jpg

となります。しかしながら、このASINの商品は輸入物なので、実際は、

http://images-jp.amazon.com/images/P/B00009LVXT.01.MZZZZZZZ.jpg

です(ASINに続く数字が09ではなく01で、それ以外は固定)。

また、Amazon Web Services Discussion Boardには、こういった実際には画像が無いURLの場合に「画像が無いよ」画像を返すJavaScriptが投稿されています。

<img src="http://images-jp.amazon.com/images/P/B00009LVXT.09.MZZZZZZZ.jpg"
  onload="if(this.width=='1') this.src='/images/no-image.jpg'" />

こんなんなっているので、これをHackして無理やり置換してみようとかいう。

<img src="http://images-jp.amazon.com/images/P/B00009LVXT.09.MZZZZZZZ.jpg"
  onload="if(this.width=='1') this.src=this.src.replace('.09.','.01.')" />

こんなんでどうよ?

うまく出来た。

「09で類推できるURLと01で類推できるURLのどちらにも画像がなかった場合はどうするのよ?」とかアレな罠がありますが、onloadイベントはJavaScriptでsrcを書き換えたあとの読み込み終了でも起きる(と思う)ので、うまくJavaScriptコードを書いてやれば、「09で類推できるURLと01で類推できるURLのどちらにも画像がなかった場合は画像が無いよ画像を返す」とかも可能な気がする。