N embed2link

    
      
  • /*
     * @title N embed2link
     * @description replace Nicovideo embed player to link
     * @include http://*
     * @license MIT License http://opensource.org/licenses/MIT
     * @javascript_url
     */
    
    // ES6/7/2015+ monkey traning
    // TODO more smart Harmony+ way; e.g.;
    //      ugly Array scan and RegExp captures, to Array#includes
    (() => {
        var swfSelector = [
            'embed[type="application/x-shockwave-flash"]',
            '[src^="http://ext.nicovideo.jp/swf/player/thumbwatch.swf"]',
            '[flashvars]'
        ].join('');
    
        Array.from(document.querySelectorAll(swfSelector)).forEach(swf => {
            // flashvars can't access from property and bracket-notation;
            // -> swf.flashvars / swf['flashvars']
            var queries = decodeURIComponent(swf.getAttribute('flashvars')).split('&');
    
            // TBD Array#find replace to Array#findIndex
            var id = queries.find(q => /v=/.test(q)).match(/(sm\d+)/)[1];
    
            var link = document.createElement('a');
            link.href = 'http://www.nicovideo.jp/watch/' + id;
            var title = queries.find(q => /thumbTitle=/.test(q)).split('=')[1] || '';
            var detail = queries.find(q => /thumbDescription=/.test(q)).split('=')[1] || '';
            /*
            link.title = title + '\n' + detail;
            /*/
            link.title = detail;
            link.appendChild(document.createTextNode(title)); // TBD plaintext
            link.appendChild(document.createElement('br'));
            //*/
            link.appendChild(document.createTextNode(link));
    
            swf.parentNode.replaceChild(link, swf);
        });
    }).call(this);
    
    
  • Permalink
    このページへの個別リンクです。
    RAW
    書かれたコードへの直接のリンクです。
    Packed
    文字列が圧縮された書かれたコードへのリンクです。
    Userscript
    Greasemonkey 等で利用する場合の .user.js へのリンクです。
    Loader
    @require やソースコードが長い場合に多段ロードする Loader コミのコードへのリンクです。
    Metadata
    コード中にコメントで @xxx と書かれたメタデータの JSON です。

History

  1. 2015/12/03 06:36:10 - 2015-12-03
  2. 2015/12/03 06:35:41 - 2015-12-03
  3. 2015/12/03 06:11:02 - 2015-12-03
  4. 2015/11/26 08:01:33 - 2015-11-26