Amazonの商品を送料無料でセブンイレブンで受け取れるUserJS(Greasemonkey)

Amazon.co.jpは1日、注文した商品をコンビニエンスストアの店頭で受け取れる「コンビニ受取」サービスを開始した。現時点では、対象となるコンビニはローソンのみとなっている。

http://internet.watch.impress.co.jp/cda/news/2008/07/02/20132.html

一番最寄りはセブンイレブンなので。ついでに送料無料だし。というわけで作った奴。Amazon商品ページで7&Yの該当商品 (ISBNがあるもの)ページへのリンクが表示される。


Opera9.5でしか試してない*1

とりあえず、こっちをインストールしとけば、Amazonの商品ページで、7&Yの当該商品検索結果画面へのリンクができる。
http://userscripts.org/scripts/source/34921.user.js

// ==UserScript==
// @name          Amazon to 7&y
// @namespace     http://www.hatena.ne.jp/r-west/
// @description	  Amazon to 7&y
// @include       http://*.amazon.*
// ==/UserScript==

(function(){
function libsearch() {
    var mainmatch = window.location.href.match(/\/(\d{9}[\d|X])/);
    if (!mainmatch) {
        return;
    }
    var asin = mainmatch[1];
    if (!asin){
        return;
    }
    var bs = document.getElementsByTagName('b');
    for (i in bs) {
        if (bs[i].getAttribute('class') == 'sans') {
            var header = bs[i];
            break;
        }
    }
    if (!header) {
        return
    }
    var spl_link = document.createElement('a');
    spl_link.setAttribute('href', 'http://www.7andy.jp/all/search_result/?kword_in=' + transToIsbn13(asin));
    spl_link.innerHTML = '<span style=\"font-size:90%; background-color:#ffffcc;\">&raquo; Search 7&amp;Y! </span>';
    header.parentNode.insertBefore(spl_link, header.nextSibling);
}
function transToIsbn13(asin) {
    var isbn12 = "978" + asin.substring(0,9);
    var sum=0;
    for (var i=0 ; i<12 ; i++) {
        sum = sum + (isbn12.charAt(i)-'0') * (i%2==0 ? 1 : 3);
    }
    return isbn12 + ((10-(sum % 10))%10);
}
libsearch();
})();

こっちもインストールすると、上記で飛んだ7&Yの検索結果ページから、商品詳細ページを開く1クリックの手間が省ける。
http://userscripts.org/scripts/source/34923.user.js

// ==UserScript==
// @name           7andY direct by isbn
// @namespace      http://www.hatena.ne.jp/r-west/
// @include        http://www.7andy.jp/all/search_result/*
// @description    
// ==/UserScript==
(function () {
    if(document.referrer.indexOf('amazon')<0){
        return;
    }
    var zz=document.evaluate('//td/small/a[contains(@href,"detail/-/accd")]',document,document.createNSResolver(document),XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,null);
    location.href=zz.snapshotItem(0);
})();


Yahoo支店版も作ったけど、Yahoo支店だとISBNが入ってない書籍があったので止めた。

*1:超適当だけど。2本組というのもダサい