Greasemonkeyを使って海外Amazonサイトに日本円換算の価格を表示してみた

円高(など)の影響で海外のamazonで買ったほうが安いとかいうことになっている*1そうなので海外サイトでも日本円に換算した価格が表示されれば便利だろうと思って作ってみました。
ページから価格の部分を抜き出してGoogleに投げ、金額換算をしてもらっています。
とりあえず、USとUKのみの対応ですが他の国のamazonでも動くと思います*2(※2009・02・04追記:USとUK以外では動かなくなりました)。

※2009・01・31追記: userscript.orgからインストールできるようになりました。 http://userscripts.org/scripts/show/41488
※2009・02・02追記:Firefox3でしかテストしていないので他のブラウザでは動かない可能性があります

使用前

http://gyazo.com/a7ac6ddc48be4d2e5d55554ed6a73937.png

使用後

http://gyazo.com/8c08a5a9db0210152a7ef913b95a8914.png

ソース

userscript.orgからインストールできます
http://userscripts.org/scripts/show/41488

// ==UserScript==
// @name           amazon_change2yen 
// @namespace      koki-h
// @description    googleの検索を使ってamazon.comとamazon.co.ukの価格を日本円に換算する
// @include        http://www.amazon.com/*
// @include        http://www.amazon.co.uk/*
// ==/UserScript==

(function () {
  function parseHTML(text) {
    //This function is copied from http://d.hatena.ne.jp/odz/20060901/1157165797
    //Thanks to id:odz!
    var createHTMLDocument = function() {
        var xsl = (new DOMParser()).parseFromString(
            ['<?xml version="1.0"?>',
             '<stylesheet version="1.0" xmlns="http://www.w3.org/1999/XSL/Transform">',
             '<output method="html"/>',
             '</stylesheet>'].join("\n"), "text/xml");

        var xsltp = new XSLTProcessor();
        xsltp.importStylesheet(xsl);
        var doc = xsltp.transformToDocument(
            document.implementation.createDocument("", "", null));
        return doc;
    };

    var doc = createHTMLDocument();
    var range = doc.createRange();
    doc.appendChild(doc.createElement("html"));
    range.selectNodeContents(doc.documentElement);
    doc.documentElement.appendChild(
        range.createContextualFragment(text));
    return doc;
  }
  var orgPrice = document.getElementsByClassName('priceLarge')[0].innerHTML;
  var gSearchUrl = "http://www.google.co.jp/search?hl=ja&q=" + orgPrice 
                   + "%E3%82%92%E5%86%86%E3%81%AB"; //"を円に"を追加する
  var gSearchRequest = GM_xmlhttpRequest({
    method: "GET",
    url: gSearchUrl,
    onload: function(res){
      var parser = new DOMParser();
      var gSearchResultPage = parseHTML(res.responseText);
      var gSearchResult = gSearchResultPage.getElementsByTagName('b')[8].innerHTML
      var yenPrice = gSearchResult.split(' = ')[1]
      document.getElementsByClassName('priceLarge')[0].innerHTML += " (" + yenPrice + ")";
    }
  });
})()

参考にしたページ

Greasemonkey開発全般について
502 Bad Gateway
Ajaxで取得したページをパースする方法について(ソースをまるごといただきました)
JavaScript で HTML を Parse する - odz buffer