Created
May 2, 2012 03:16
-
-
Save nobodyplace/2573333 to your computer and use it in GitHub Desktop.
ニコニコ動画のブログ貼り付け用コードを動画画面に表示するGreasemonkey(Zero対応)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// ==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 = '<script type="text/javascript" src="http://ext.nicovideo.jp/thumb_watch/'+id+'"></script>' + '<noscript><a href="http://www.nicovideo.jp/watch/'+id+'">'+title+'</a></noscript>'; | |
//動画情報 | |
var movieInfo = '<iframe width="312" height="176" src="http://ext.nicovideo.jp/thumb/'+id+'" scrolling="no" style="border:solid 1px #CCC;" frameborder="0"><a href="http://www.nicovideo.jp/watch/'+id+'">'+title+'</a></iframe>'; | |
//HTMLエスケープ | |
var htmlEscape = function(str){ | |
var map = {"<":"<", ">":">", "&":"&", "'":"'", "\"":""", " ":" ", " ":" "}; | |
var replaceStr = function(s){ return map[s]; }; | |
return str.replace(/<|>|&|'|"|\s| /g, replaceStr); | |
} | |
//表示するテキストを作成 | |
var str = | |
'<table cellspacing="0">'+ | |
'<tr><th class="font10">外部プレイヤー</th></tr>'+ | |
'<tr><td><form name="form_script"><input type="text" style="width: 250px;" readonly="true" name="script_code" onclick="javascript:document.form_script.script_code.focus(); document.form_script.script_code.select();" value="'+htmlEscape(extPlayer)+'"></form></td></tr>'+ | |
'<tr><th class="font10">動画情報</th></tr>'+ | |
'<tr><td><form name="form_iframe"><input type="text" style="width: 250px;" readonly="true" name="iframe_code" onclick="javascript:document.form_iframe.iframe_code.focus(); document.form_iframe.iframe_code.select();" value="'+htmlEscape(movieInfo)+'"></form></td></tr>'+ | |
'</table>' | |
; | |
//表示 | |
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); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// ==UserScript== | |
// @name Nico Blogparts / Textarea | |
// @version 0.2.1t | |
// @namespace https://gist.github.com/2573333 | |
// @description ニコニコ動画のブログ貼り付け用コードを動画画面に表示するGreasemonkey / テキストエリア版 | |
// @include http://www.nicovideo.jp/watch/* | |
// @updated 2011/05/03 11:24: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 動画のページ遷移に対応 | |
// 0.2.1t - 2012/05/03 「動画情報」をinputからtextareaに変更 | |
(function(doc){ | |
'use strict'; | |
var createTag = function(id, title, author) { | |
if(!id || !title) return; | |
//外部プレイヤー | |
var extPlayer = '<script type="text/javascript" src="http://ext.nicovideo.jp/thumb_watch/'+id+'"></script>' + '<noscript><a href="http://www.nicovideo.jp/watch/'+id+'">'+title+'</a></noscript>'; | |
//動画情報 | |
var movieInfo = '<iframe width="312" height="176" src="http://ext.nicovideo.jp/thumb/'+id+'" scrolling="no" style="border:solid 1px #CCC;" frameborder="0"><a href="http://www.nicovideo.jp/watch/'+id+'">'+title+'</a></iframe>'; | |
//HTMLエスケープ | |
var htmlEscape = function(str){ | |
var map = {"<":"<", ">":">", "&":"&", "'":"'", "\"":""", " ":" ", " ":" "}; | |
var replaceStr = function(s){ return map[s]; }; | |
return str.replace(/<|>|&|'|"|\s| /g, replaceStr); | |
} | |
//表示するテキストを作成 | |
var str = | |
'<table cellspacing="0">'+ | |
'<tr><th class="font10">外部プレイヤー</th></tr>'+ | |
'<tr><td><form name="form_script"><input type="text" style="width: 250px;" readonly="true" name="script_code" onclick="javascript:document.form_script.script_code.focus(); document.form_script.script_code.select();" value="'+htmlEscape(extPlayer)+'"></form></td></tr>'+ | |
'<tr><th class="font10">動画情報</th></tr>'+ | |
'<tr><td><form name="form_iframe"><textarea style="width: 250px;" readonly="true" name="iframe_code" onclick="javascript:document.form_iframe.iframe_code.focus(); document.form_iframe.iframe_code.select();">'+'***'+htmlEscape(title)+'('+htmlEscape(author)+')'+"\n"+htmlEscape(movieInfo)+'</textarea></form></td></tr>'+ | |
'</table>' | |
; | |
//表示 | |
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, data.uploaderInfo.nickname); | |
})(document); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment