O'Reilly Japan -> amazon.co.jp banner

  • // ==UserScript==
    // @name        O'Reilly Japan -> amazon.co.jp banner
    // @description O'Reilly Japan の書籍紹介ページに amazon.co.jp バナーを勝手に追加
    // @include     http://www.oreilly.co.jp/books/*
    // @include     https://www.oreilly.co.jp/books/*
    // @grant       none
    // ==/UserScript==
    
    /*
     * @title O'Reilly Japan -> amazon.co.jp banner
     * @description O'Reilly Japan の書籍紹介ページに amazon.co.jp バナーを勝手に追加
     * @include http://www.oreilly.co.jp/books/*
     * @include https://www.oreilly.co.jp/books/*
     * @license MIT License
     */
    
    // ISBN13 -> ISBN10
    var m = location.href.match(/\/books\/(?:\d{3}(\d{9})|(\d{9}))/);
    var isbn9 = (m[2] != undefined) ? m[2] : m[1];
    
    // re-calculate check digit
    var sum = 0;
    for (var i = 0; i <= 8; ++i){
        sum += isbn9[i] * [10, 9, 8, 7, 6, 5, 4, 3, 2][i]; 
    }
    var isbn10 = isbn9 + '*123456789X0'[11 - sum % 11];
    
    // create banner
    var a = document.createElement('a');
    	a.href = 'http://www.amazon.co.jp/dp/' + isbn10;
    	a.innerHTML = '<img src="https://images-na.ssl-images-amazon.com/images/G/09/extranet/associates/buttons/remote-buy-jp8._V192265084_.gif" style="height:20px; vertical-align:top; margin:0 22px 0 0;" />';
    
    elem('//*[@id="content"]//div[@class="social-tools"]').appendChild(a);
    
    
    function elem(xpath)
    {
    	return document.evaluate(
    		xpath,
    		document,
    		null,
    		XPathResult.FIRST_ORDERED_NODE_TYPE,
    		null
    	).singleNodeValue;
    }
  • Permalink
    このページへの個別リンクです。
    RAW
    書かれたコードへの直接のリンクです。
    Packed
    文字列が圧縮された書かれたコードへのリンクです。
    Userscript
    Greasemonkey 等で利用する場合の .user.js へのリンクです。
    Loader
    @require やソースコードが長い場合に多段ロードする Loader コミのコードへのリンクです。
    Metadata
    コード中にコメントで @xxx と書かれたメタデータの JSON です。

History

  1. 2015/04/16 21:39:25 - 2015-04-16
  2. 2014/11/21 03:45:50 - 2014-11-21
  3. 2014/11/21 03:44:37 - 2014-11-21
  4. 2014/11/21 03:43:17 - 2014-11-21
  5. 2012/08/10 23:30:36 - 2012-08-10
  6. 2012/08/10 23:12:24 - 2012-08-10
  7. 2012/08/10 23:07:43 - 2012-08-10
  8. 2012/08/10 22:49:03 - 2012-08-10
  9. 2012/08/10 22:43:12 - 2012-08-10
  10. 2012/08/10 22:42:41 - 2012-08-10
  11. 2012/08/10 22:38:25 - 2012-08-10
  12. 2012/08/10 22:17:50 - 2012-08-10
  13. 2012/08/10 22:03:10 - 2012-08-10