KMT Fork

    @@ -1,9 +1,68 @@ /* - * @title Kindle漫画試し読み - * @description 選択した文字列をASINとみなして、Kindle漫画ブラウザ試し読みを開く。Kindle漫画以外は試し読みできない。利用例としては、Google検索で「作品名 kindle ASIN」で、表示されたASINを選択してブックマークレット実行。ブックマークレットの登録方法で確認済みなのは、下記のソースコードをそのままブラウザのブックマークバーにドロップする方法。それ以外は未確認。 - * @include - * @license MIT License - * @require + * @title KMT + * @description K*ndle manga trial + * @include https://www.amazon.tld/* + * @contributor cat2151 http://let.hatelabo.jp/cat2151/let/hLHU2LGPnagi + * @license MIT License https://opensource.org/licenses/MIT + * @javascript_url */ - javascript:(function(){ var d=document; var tx=d.selection?d.selection.createRange().text:d.getSelection(); var subw=window.open('https://read.amazon.co.jp/manga/'+tx+'?sample=true').document;})();+ /* for mobile and/or too old browsers + javascript:(function(){var a=document.head.querySelector(['link[rel="canonical"][href]'])||{};if(a&&a.href){var b=a.href.split('/').pop();if(b){var c='.'+location.hostname.split('.').slice(2).join('.');window.open('https://read.amazon'+c+'/manga/'+b+'?sample=true','_blank')}}})(); + */ + // transpile and minify w/ Babili + // https://babeljs.io/repl/ + + // c.f. + // http://let.hatelabo.jp/noromanba/let/hJmcjrPV1ecx + + // e.g. Terra Formars, Vol. 1 + // https://www.amazon.co.jp/dp/B00C9DYZFC + // https://read.amazon.co.jp/manga/B00C9DYZFC?sample=true + (() => { + 'use strict'; + + // Kindle Manga page nullable "#ASIN" + // c.f. + // http://let.hatelabo.jp/noromanba/let/hJmcjrPV1ecx + const canon = (document.head.querySelector([ + 'link[rel="canonical"][href]' + ]) || {}); + if (!canon || !canon.href) return; + + // c.f. + // http://let.hatelabo.jp/noromanba/let/hJmcjrPV1ecx + // redundant canonical syntax; + // https://www.amazon.<TLD>/<URL_ENCODED_ITEM_NAME>/dp/<ASIN> + /*/ + // [2] + const asin = new URL(canon.href).pathname.split('/').pop(); + //*/ + const asin = canon.href.split('/').pop(); + //*/ + if (!asin) return; + + // remove "www.amazon." -> TLD [1] + const tld = '.' + location.hostname.split('.').slice(2).join('.'); + // TODO this syntax only .co.jp + const reader = 'https://read.amazon' + tld + '/manga/' + asin + '?sample=true'; + + window.open(reader, '_blank'); + })(); + + // DBG + // + // [:1] TLDs e.g. Terra Formars, Vol. 1 + // https://www.amazon.co.jp/dp/B00C9DYZFC + // https://www.amazon.com/dp/B00LH87EBC + // https://www.amazon.com.au/dp/1421571544 + // https://www.amazon.com.mx/dp/1421571544 + // https://www.amazon.com.br/dp/8545700423 + // .com.mx and .com.br has not Kindle yet + // + // [:2] omit IE and Android 4.4.3< due to URL API c.f. + // https://caniuse.com/#feat=url + // https://developer.mozilla.org/en-US/docs/Web/API/URL/URL#Browser_compatibility + // https://developer.mozilla.org/en-US/docs/Web/API/URL#Browser_compatibility + // https://developer.microsoft.com/en-us/microsoft-edge/platform/status/urlapi/ +
  • /*
     * @title KMT
     * @description K*ndle manga trial
     * @include https://www.amazon.tld/*
     * @contributor cat2151 http://let.hatelabo.jp/cat2151/let/hLHU2LGPnagi
     * @license MIT License https://opensource.org/licenses/MIT
     * @javascript_url
     */
    
    /* for mobile and/or too old browsers
    javascript:(function(){var a=document.head.querySelector(['link[rel="canonical"][href]'])||{};if(a&&a.href){var b=a.href.split('/').pop();if(b){var c='.'+location.hostname.split('.').slice(2).join('.');window.open('https://read.amazon'+c+'/manga/'+b+'?sample=true','_blank')}}})();
    */
    // transpile and minify w/ Babili
    // https://babeljs.io/repl/
    
    // c.f.
    // http://let.hatelabo.jp/noromanba/let/hJmcjrPV1ecx
    
    // e.g. Terra Formars, Vol. 1
    // https://www.amazon.co.jp/dp/B00C9DYZFC
    //  https://read.amazon.co.jp/manga/B00C9DYZFC?sample=true
    (() => {
        'use strict';
    
        // Kindle Manga page nullable "#ASIN"
        // c.f.
        // http://let.hatelabo.jp/noromanba/let/hJmcjrPV1ecx
        const canon = (document.head.querySelector([
            'link[rel="canonical"][href]'
        ]) || {});
        if (!canon || !canon.href) return;
    
        // c.f.
        // http://let.hatelabo.jp/noromanba/let/hJmcjrPV1ecx
        // redundant canonical syntax;
        // https://www.amazon.<TLD>/<URL_ENCODED_ITEM_NAME>/dp/<ASIN>
        /*/
        // [2]
        const asin = new URL(canon.href).pathname.split('/').pop();
        //*/
        const asin = canon.href.split('/').pop();
        //*/
        if (!asin) return;
    
        // remove "www.amazon." -> TLD [1]
        const tld = '.' + location.hostname.split('.').slice(2).join('.');
        // TODO this syntax only .co.jp
        const reader = 'https://read.amazon' + tld + '/manga/' + asin + '?sample=true';
    
        window.open(reader, '_blank');
    })();
    
    // DBG
    //
    // [:1] TLDs e.g. Terra Formars, Vol. 1
    // https://www.amazon.co.jp/dp/B00C9DYZFC
    // https://www.amazon.com/dp/B00LH87EBC
    // https://www.amazon.com.au/dp/1421571544
    // https://www.amazon.com.mx/dp/1421571544
    // https://www.amazon.com.br/dp/8545700423
    //  .com.mx and .com.br has not Kindle yet
    //
    // [:2] omit IE and Android 4.4.3< due to URL API c.f.
    // https://caniuse.com/#feat=url
    // https://developer.mozilla.org/en-US/docs/Web/API/URL/URL#Browser_compatibility
    // https://developer.mozilla.org/en-US/docs/Web/API/URL#Browser_compatibility
    // https://developer.microsoft.com/en-us/microsoft-edge/platform/status/urlapi/
    
    
  • Permalink
    このページへの個別リンクです。
    RAW
    書かれたコードへの直接のリンクです。
    Packed
    文字列が圧縮された書かれたコードへのリンクです。
    Userscript
    Greasemonkey 等で利用する場合の .user.js へのリンクです。
    Loader
    @require やソースコードが長い場合に多段ロードする Loader コミのコードへのリンクです。
    Metadata
    コード中にコメントで @xxx と書かれたメタデータの JSON です。