ニコ生Flash視聴

    @@ -1,129 +1,6 @@ -// ==UserScript== -// @name ShogiDB2 DownloadLinkCreator -// @description 将棋DB2の検索結果一覧ページに棋譜ダウンロードボタンを追加します。 -// @include https://shogidb2.com/latest* -// @include https://shogidb2.com/floodgate* -// @include https://shogidb2.com/tournament/* -// @include https://shogidb2.com/player/* -// @include https://shogidb2.com/strategy/* -// @require https://cdn.rawgit.com/polygonplanet/encoding.js/master/encoding.min.js -// @namespace knoa.jp -// @version 1.0 -// ==/UserScript== - -(function () { - console.log('ShogiDB2 DownloadLinkCreator'); - var KEYWORDS = ['竜王戦','名人戦','順位戦','王位戦','王座戦','棋王戦','王将戦','棋聖戦'];/*対局情報に含まれていればハイライト*/ - var TITLES = ['竜王','名人','王位','王座','棋王','王将','棋聖','叡王','朝日杯','銀河','NHK杯','JT杯'];/*対局者名から取り除く称号*/ - var FILETYPE = 'KIF';/*棋譜ファイルの形式(CSA,KIF,KI2)*/ - var ENCODING = 'SJIS';/*棋譜ファイルの文字コード変換(SJIS,UTF8,...)※ブックマークレット実行時は無効*/ - var INTERVAL = 1000;/*短時間連続読み込みの抑制*/ - var LIMIT = 100;/*取得数制限(デバッグ用)*/ - var games = document.querySelectorAll('a.list-group-item');/*検索結果一覧*/ - var core = { - /*初期化*/ - 'initialize': function(){ - console.log('initialize...'); - var a, script; - core.attatchStyle(); - a = document.createElement('a'); - a.className = 'make-downloads btn btn-primary'; - a.innerHTML = 'ダウンロードボタン生成'; - a.addEventListener('click', function(e){ - this.classList.add('disabled'); - /*棋譜データ処理スクリプトを取得してからボタン生成を始める*/ - script = document.createElement('script'); - script.src = '/js/shogiboard.min.js'; - script.addEventListener('load', function(e){ - core.createLink(0); - }); - document.getElementsByTagName('head')[0].appendChild(script); - }); - document.querySelector('h2').appendChild(a); - }, - /*スタイル付与*/ - 'attatchStyle': function(){ - console.log('attatchStyle...'); - var style, css = ''; - css += 'a.keywords{background:#ccddee!important;}'; - css += 'a.make-downloads{position:absolute;right:15px;}'; - css += 'a.download{position:absolute;right:30px;margin-top:-45px;}'; - style = document.createElement('style'); - style.innerHTML = css; - document.getElementsByTagName('head')[0].appendChild(style); - for(var i=0; games[i]; i++){ - if(games[i].innerText.match(new RegExp(KEYWORDS.join('|'))) != null){ - games[i].classList.add('keywords'); - } - } - }, - /*棋譜ダウンロードボタン生成*/ - 'createLink': function (i) { - console.log('createLink...', i); - var a, xhr, d, table, date, title, sente, gote, kifu; - /*無効状態のボタンを作っておく*/ - a = document.createElement('a'); - a.className = 'download btn btn-primary disabled'; - a.innerHTML = FILETYPE + '形式'; - games[i].parentNode.insertBefore(a, games[i].nextSibling); - setTimeout(function () { - xhr = new XMLHttpRequest(); - xhr.onreadystatechange = function() { - if (xhr.readyState == 4 && xhr.status == 200) { - d = xhr.responseXML; - /*ここからファイル名構築*/ - table = d.querySelector('table'); - date = table.querySelector('tr:nth-child(1) td').innerText.replace(/\b([1-9])(月|日)/g, '0$1$2'); - title = table.querySelector('tr:nth-child(2) td').innerText; - sente = core.normalizeName(table.querySelector('tr:nth-child(4) td').innerText); - gote = core.normalizeName(table.querySelector('tr:nth-child(5) td').innerText); - a.download = [date, title, sente, gote].join('-') + '.' + FILETYPE.toLowerCase(); - /*ここから棋譜取得*/ - eval(d.querySelector('body>script[type]').innerText);/*"var data = {(json)}"であることを信頼*/ - kifu = core.exportKifu(data); - /*ここからボタン有効化*/ - a.href = core.kifuToObjectURL(kifu); - a.classList.remove('disabled'); - } - }; - xhr.open('GET', games[i].href); - xhr.responseType = 'document'; - xhr.send(); - if (!games[i+1] || LIMIT <= i+1){ - console.log('done.'); - return; - } - core.createLink(i+1); - }, INTERVAL); - }, - /*段位タイトルを削除*/ - 'normalizeName': function(name){ - var dan = new RegExp('((女流|奨励会)?[初一二三四五六七八九・](級|段|冠)|' + TITLES.join('|') + ')$', 'g'); - name = name.replace(dan, ''); - name = name.replace(/ | /g, ''); - return name; - }, - /*指定形式で棋譜ファイル生成*/ - 'exportKifu': function(data){ - switch(FILETYPE){ - case 'CSA': - return new CSAExporter(data).export(); - case 'KIF': - return new KifExporter(data).export(); - case 'KI2': - return new KI2Exporter(data).export(); - } - }, - /*棋譜ファイルからobjectURL生成*/ - 'kifuToObjectURL': function(kifu){ - var kifuArray; - if(typeof Encoding === 'undefined' || ENCODING == 'UTF8'){ - kifuArray = [new Uint8Array([0xEF, 0xBB, 0xBF])/*BOM追加*/, kifu]; - }else{ - kifuArray = [new Uint8Array(Encoding.convert(kifu, {to:ENCODING, from:'AUTO', type:'array'}))]; - } - return window.URL.createObjectURL(new Blob(kifuArray)); - } - }; - core.initialize(); -}) (); +(function(){ + let lv = location.href.match(/lv[0-9]+/); + if(lv){ + window.open('http://live.nicovideo.jp/nicoliveplayer.swf?v=' + lv[0], '_blank', 'width=960,height=540') + } +})();
  • (function(){
     let lv = location.href.match(/lv[0-9]+/);
     if(lv){
      window.open('http://live.nicovideo.jp/nicoliveplayer.swf?v=' + lv[0], '_blank', 'width=960,height=540')
     }
    })();
  • Permalink
    このページへの個別リンクです。
    RAW
    書かれたコードへの直接のリンクです。
    Packed
    文字列が圧縮された書かれたコードへのリンクです。
    Userscript
    Greasemonkey 等で利用する場合の .user.js へのリンクです。
    Loader
    @require やソースコードが長い場合に多段ロードする Loader コミのコードへのリンクです。
    Metadata
    コード中にコメントで @xxx と書かれたメタデータの JSON です。

History

  1. 2018/10/28 15:48:09 - 2018-10-28
  2. 2018/10/28 15:46:55 - 2018-10-28
  3. 2016/11/10 03:27:39 - 2016-11-10
  4. 2016/11/10 02:42:53 - 2016-11-10
  5. 2016/11/10 02:40:33 - 2016-11-10