Associate This (with image)!

Firefoxに暫定的に移行中なので、IEのMenuExtで愛用していたAmazonの個別商品リンクを画像付きで作るスクリプトをBookmarkletにしてみました。IEのMenuExtではevent.srcとかで画像のURLが簡単に拾えるので、簡単だったのですが、Bookmarkletではちっと苦労しました。が、ソースのimg要素を全部調べ、src属性にMZZZZZZZが含まれるかどうかを調べれば良いことに気づいたあとはけっこう簡単でした。

Amazonの個別商品ページには画像があればかならず正しいURLで画像へのリンクが張られている(と思う)ので、document.imagesで拾うことができるimg要素でループを回してやり、正規表現でMZZZZZZZが含まれているかどうかチェックするというわけ。

JavaScriptのコードは以下のような構造になってます。

var aid  = 'hail2unet-22';
var t    = document.title;
var u    = document.location.href;
var i    = u.indexOf('ASIN');
var asin = u.substring(i+5,i+15);
u        = 'http://www.amazon.co.jp/exec/obidos/ASIN/'+asin+'/'+aid;
var img;

for (i=0; i < document.images.length; i++) {
  if (document.images[i].src.match(/MZZZZZZZ/)) {
    img = document.images[i].src;
    break;
  }
}

prompt('Associate This (with image)!',
  '<a href="' + u + '" title="' + t + '"><img src="' + img + '" alt="' + t +
  '" /></a>');

Bookmarkletはこちら。

Bookmarklet: Associate This (with image)!

使い方は、上記リンクをBookmarks Toolbarにドラッグ・アンド・ドロップし、Amazonの個別商品ページを開いた状態でそれをクリックするだけ!すると、

<a href="http://www.amazon.co.jp/exec/obidos/ASIN/B00028G7J8/hail2unet-22" title="Amazon.co.jp: DVD: Corporate Ghost - the Videos: 1990-2002 / (Dol)"><img src="http://images-jp.amazon.com/images/P/B00028G7J8.01.MZZZZZZZ.jpg" alt="Amazon.co.jp: DVD: Corporate Ghost - the Videos: 1990-2002 / (Dol)" /></a>

というコードがプロンプトで出てきます。hail2unet-22となっているアソシエイトIDは自分のアソシエイトIDに書き換えましょう。

コピーするのメンドイ(なんてズボラな・・・)。

追記@2004/07/02

BookmarkletのURL内に含まれる"の実体参照化をミスってまして、正常なURLになっていなかったのを修正しました。