Amazonの画像を引用

いくつかAmazonの画像置換とかをJavaScriptで書いてみたりしましたが、そもそもAmazonで商品を見ている時には、画像を見ているわけで(あるならばですがね)、その画像のURLを一発で持ってこれれば良いということなわけだ、と、なんか「普通、最初にそれ考えるだろ」的なことに思い至りました。とりあえず考えてみていたら、Internet ExplorerのMeneExtでは、画像上で発生させると、event.srcElementimg要素が拾えるので、それを使えば画像のURLを持ってくることができるということに気づきました。

てなわけで画像付きのAmazonアソシエイトリンクを作成するMenuExtのコードを書いてみる。

<html>
<script type="text/javascript" defer>
<!--
  var aid = 'hail2unet-22';

  var pWin = external.menuArguments;

  if (pWin.event.srcElement.tagName == 'IMG') {
    var uri = pWin.location.href;
    var i = uri.indexOf('ASIN');
    var asin = uri.substring(i + 5, i + 15);
    var uri = "https://www.amazon.co.jp/exec/obidos/ASIN/" + asin + "/" + aid;
    var imguri = new String(pWin.event.srcElement.src);
    var title = pWin.document.title;
    pWin.clipboardData.setData("text", "<a href=\"" + uri + "\" title=\"" +
      title + "\"><img src=\"" + imguri + "\" alt=\"" + title + "\" /></a>");
  }
//-->
</script>
</html>

これを適当なフォルダに保存して、IE MenuExtで「Associate this!」などというタイトルで登録するだけ。登録時には忘れずに、表示方法のところで画像上にチェックを入れておきましょう。

で、Amazonの各商品のページの*画像上で*右クリックし、Associate this!を選択すると、

<a href="https://www.amazon.co.jp/exec/obidos/ASIN/B00021LRWM/hail2unet-22"
  title="Amazon.co.jp: 音楽: To the 5 Boroughs [FROM US] [IMPORT] [EXPLICIT LYRICS]">
  <img src="https://m.media-amazon.com/images/P/B00021LRWM.jpg"
    alt="Amazon.co.jp: 音楽: To the 5 Boroughs [FROM US] [IMPORT] [EXPLICIT LYRICS]" />
</a>

というようなコードがクリップボードにコピーされます(見やすいように改行を入れていますが、実際には一行で)。

お、なかなか良いかも。

Bookmarkletには移植できるかな? 各商品ページではユニークっぽい「vspace=3 hspace=5 align=left border=0」とかいう文字列をキーにして探すこともできないことは無さそうだけど、かなり力技になりそう。興味がある方は作ってみたらどうでしょう? 人気者になれるかも!

私? メンドイ。