// ==UserScript== // @name Nico Blogparts // @version 0.2.1 // @namespace https://gist.github.com/2573333 // @description ニコニコ動画のブログ貼り付け用コードを動画画面に表示するGreasemonkey // @include http://www.nicovideo.jp/watch/* // @updated 2011/05/02 16:30:00 // ==/UserScript== // 0.0.1 - 2009/11/01 リリース // 0.0.2 - 2009/11/08 チャンネル動画のvideoId(ex. http://www.nicovideo.jp/watch/1255083605)に対応 // 0.0.3 - 2010/05/31 videoId取得を変更 // 0.0.4 - 2010/05/31 canonicalを通常の動画URLに置き換えるようにした // 0.0.5 - 2010/06/02 全角スペースがundefineになる問題を修正 // 0.0.6 - 2010/10/14 動画視聴ページのリニューアルに対応 // 0.0.7 - 2010/10/25 チャンネル動画対応のため動画IDを変更 // 0.0.8 - 2010/11/07 二重表示対策 / 誕生日おめでとう>妹 // 0.0.9 - 2011/10/01 表示位置変更 // 0.1.0 - 2011/10/02 canonical置き換えを削除他 // 0.2.0 - 2012/05/02 Zero対応 // 0.2.1 - 2012/05/02 動画のページ遷移に対応 (function(doc){ 'use strict'; var createTag = function(id, title) { if(!id || !title) return; //外部プレイヤー var extPlayer = '' + ''; //動画情報 var movieInfo = ''; //HTMLエスケープ var htmlEscape = function(str){ var map = {"<":"<", ">":">", "&":"&", "'":"'", "\"":""", " ":" ", " ":" "}; var replaceStr = function(s){ return map[s]; }; return str.replace(/<|>|&|'|"|\s| /g, replaceStr); } //表示するテキストを作成 var str = ''+ ''+ ''+ ''+ ''+ '
外部プレイヤー
動画情報
' ; //表示 var dId = 'blog_parts_area'; //二重表示防止のため var t = doc.getElementById(dId); if(t) { t.innerHTML = str; } else { var e = doc.getElementById('playerCommentPanelOuter'); var d = doc.createElement('div'); d.id = dId; d.style.marginLeft = "7px"; d.style.marginTop = "50px"; d.style.color = "#fff"; d.style.fontSize = "x-small"; d.innerHTML = str; e.insertBefore(d, e.lastChild); } } //control //ページ内遷移時は取得するwatchAPIDataContainerに新しい動画データが反映されていないのでタイトルとURLからパーツ作成 var timer = 0; var h2 = doc.getElementsByTagName('h2')[0]; h2.addEventListener('DOMNodeInserted', function() { if(timer) return; // timerが初期化されていなければはじく timer = setTimeout(function() { if(h2.innerHTML) { createTag(location.pathname.match(/watch\/(.+)$/)[1], h2.innerHTML); timer = 0; return; } timer = 0; }, 30); }, false); //初回読み込み時はwatchAPIDataContainerからデータを取得してパーツ作成 var data = JSON.parse(document.querySelector("#watchAPIDataContainer").innerHTML); createTag(data.videoDetail.id, data.videoDetail.title); })(document);