Created
January 6, 2009 11:51
-
-
Save azu/43780 to your computer and use it in GitHub Desktop.
This file contains hidden or 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 mata niconico miteru | |
// @namespace http://d.hatena.ne.jp/ | |
// @include http://www.nicovideo.jp/watch/* | |
// @include http://www.nicovideo.jp/tag/* | |
// @include http://www.nicovideo.jp/search/* | |
// @include http://www.nicovideo.jp/related_tag/* | |
// @include http://ch.nicovideo.jp/community/co* | |
// @include http://dic.nicovideo.jp/* | |
// @include http://live.nicovideo.jp/watch/* | |
// @include http://www.niconicommons.jp/material/nc* | |
// @include http://www.niconicommons.jp/tag/* | |
// @include http://www.niconicommons.jp/search/* | |
// @include http://www.niconicommons.jp/tree/* | |
// @author Sore_0 | |
// @version 0.3.2 | |
// @update 2008/12/15 | |
// @require http://kojim71.googlepages.com/update_checker.user.js | |
// ==/UserScript== | |
var w = unsafeWindow || window, document = w.document; | |
var ConfigDefault = { | |
SET: { | |
watch: true, | |
tag: true, | |
search: true, | |
related_tag: true, | |
community: true, | |
dic: true, | |
com_material: true, | |
com_tag: true, | |
com_search: true, | |
com_tree: true, | |
live: true | |
}, | |
COMMENT: { | |
watch: true, | |
tag: false, | |
search: false, | |
related_tag: false, | |
community: false, | |
dic: false, | |
com_material: false, | |
com_tag: false, | |
com_search: false, | |
com_tree: false, | |
live: false | |
}, | |
PREFIX: { | |
watch: ["\u307e\u305f\u30cb\u30b3\u30cb\u30b3\u52d5\u753b\u898b\u3066\u308b:"], | |
tag: ["\u30bf\u30b0:"], | |
search: ["\u30ad\u30fc\u30ef\u30fc\u30c9:"], | |
related_tag: ["\u95a2\u9023\u30bf\u30b0:"], | |
community: ["\u307e\u305f\u30cb\u30b3\u30cb\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u898b\u3066\u308b:"], | |
dic: ["\u307E\u305F\u30CB\u30B3\u30CB\u30B3\u5927\u767E\u79D1\u898B\u3066\u308B:"], | |
com_material: ["\u307e\u305f\u30cb\u30b3\u30cb\u30fb\u30b3\u30e2\u30f3\u30ba\u7d20\u6750\u898b\u3066\u308b:"], | |
com_tag: ["\u30cb\u30b3\u30cb\u30fb\u30b3\u30e2\u30f3\u30ba \u30bf\u30b0:"], | |
com_search: ["\u30cb\u30b3\u30cb\u30fb\u30b3\u30e2\u30f3\u30ba \u30ad\u30fc\u30ef\u30fc\u30c9:"], | |
com_tree: ["\u307e\u305f\u30b3\u30e2\u30f3\u30ba\u30c4\u30ea\u30fc\u898b\u3066\u308b:"], | |
live: ["\u307e\u305f\u30cb\u30b3\u751f\u307f\u3066\u308b:"] | |
}, | |
DEFAULT_PREFIX: { | |
watch: ["\u307e\u305f\u30cb\u30b3\u30cb\u30b3\u52d5\u753b\u898b\u3066\u308b:"], | |
tag: ["\u30bf\u30b0:"], | |
search: ["\u30ad\u30fc\u30ef\u30fc\u30c9:"], | |
related_tag: ["\u95a2\u9023\u30bf\u30b0:"], | |
community: ["\u307e\u305f\u30cb\u30b3\u30cb\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u898b\u3066\u308b:"], | |
dic: ["\u307E\u305F\u30CB\u30B3\u30CB\u30B3\u5927\u767E\u79D1\u898B\u3066\u308B:"], | |
com_material: ["\u307e\u305f\u30cb\u30b3\u30cb\u30fb\u30b3\u30e2\u30f3\u30ba\u7d20\u6750\u898b\u3066\u308b:"], | |
com_tag: ["\u30cb\u30b3\u30cb\u30fb\u30b3\u30e2\u30f3\u30ba \u30bf\u30b0:"], | |
com_search: ["\u30cb\u30b3\u30cb\u30fb\u30b3\u30e2\u30f3\u30ba \u30ad\u30fc\u30ef\u30fc\u30c9:"], | |
com_tree: ["\u307e\u305f\u30b3\u30e2\u30f3\u30ba\u30c4\u30ea\u30fc\u898b\u3066\u308b:"], | |
live: ["\u307e\u305f\u30cb\u30b3\u751f\u307f\u3066\u308b:"] | |
}, | |
TEMPLATE: { | |
watch : "%PREFIX% %TITLE% %URL% (%DATA%) %COMMENT%", | |
tag : "%PREFIX% %TITLE% %DATA% %URL% %COMMENT%", | |
search : "%PREFIX% %TITLE% %DATA% %URL% %COMMENT%", | |
related_tag: "%PREFIX% %TITLE% %DATA% %URL% %COMMENT%", | |
community : "%PREFIX% %TITLE% %DATA% %URL% %COMMENT%", | |
dic : "%PREFIX% %TITLE% %URL% %COMMENT%", | |
com_material : "%PREFIX% %TITLE% %DATA% %URL% %COMMENT%", | |
com_tag : "%PREFIX% %TITLE% %DATA% %URL% %COMMENT%", | |
com_search : "%PREFIX% %TITLE% %DATA% %URL% %COMMENT%", | |
com_tree : "%PREFIX% %TITLE% %DATA% %URL% %COMMENT%", | |
live: "%PREFIX% %TITLE% %DATA% %URL% %COMMENT%" | |
}, | |
POSITION: { | |
watch: function(){ return document.getElementsByTagName("h1")[0] }, | |
tag: function(){ return document.getElementsByClassName("search_word")[0].parentNode }, | |
search: function(){ return document.getElementsByClassName("search_word")[0] }, | |
related_tag: function(){ return document.getElementsByClassName("search_word")[0] }, | |
community: function(){ return document.getElementsByTagName("h1")[0] }, | |
dic: function(){ return document.getElementById("contents") }, | |
com_material: function(){ return document.getElementsByClassName("commons_title")[0] }, | |
com_tag: function(){ return document.getElementsByClassName("search_title")[0].firstChild; }, | |
com_search: function(){ return document.getElementsByClassName("search_title")[0].firstChild; }, | |
com_tree: function(){ return document.getElementsByTagName("h2")[1] }, | |
live: function(){ return document.getElementsByClassName("title")[0] } | |
}, | |
COMMENT_LENGTH: { | |
watch: 10, | |
tag: 10, | |
search: 10, | |
related_tag: 10, | |
community: 10, | |
dic: 10, | |
com_material: 10, | |
com_tag: 10, | |
com_search: 10, | |
com_tree: 10, | |
live: 10 | |
} | |
}; | |
var Config = eval(GM_getValue("CONFIG", ConfigDefault)) || ConfigDefault; | |
var pg = ""; | |
if(/http:\/\/live\.nicovideo\.jp\/watch/.test(location.href)){ | |
pg = "live"; | |
} else if(/http:\/\/.*?\.nicovideo\.jp\/([^\/]*)\/?/.test(location.href)){ | |
switch(RegExp.$1){ | |
case "watch": pg = "watch"; break; | |
case "tag" : pg = "tag"; break; | |
case "search" : pg = "search"; break; | |
case "related_tag":pg = "related_tag"; break; | |
case "community" : pg = "community"; break; | |
case "a" : pg = "dic"; break; | |
default : break; | |
} | |
} else if(/http:\/\/.*?\.niconicommons\.jp\/([^\/]*)\/?/.test(location.href)){ | |
switch(RegExp.$1){ | |
case "material" : pg = "com_material"; break; | |
case "tag" : pg = "com_tag"; break; | |
case "search" : pg = "com_search"; break; | |
case "tree" : pg = "com_tree"; break; | |
} | |
} else { | |
return; | |
} | |
if(!pg) return; | |
function ConfigBox(){this.initialize.apply(this, arguments);} | |
ConfigBox.prototype = { | |
initialize: function(cfg, items) { | |
this.cfg = cfg; | |
this.name = "MataNico_cfg" | |
this.items = items; | |
}, | |
show: function() { | |
var bd = document.getElementById(this.name); | |
if(bd) return; | |
var self = this; | |
var items = this.items; | |
var nodes = []; | |
var box = document.createElement("div"); | |
box.id = this.name; | |
var box_page = document.createElement("span"); | |
box_page.id = this.name + "_header"; | |
box_page.innerHTML = "<b>MataNico Config</b> \u3000\u3000\u3000" + pg.toUpperCase() + "\u3000\u3000\u3000"; | |
for(var i = 0; i < items.length; i++){ | |
if(items[i][0] == "text"){ | |
nodes.push(self.makeText(self.items[i][1])) | |
} else if(items[i][0] == "select") { | |
nodes.push(self.makeSelect(self.items[i][1], self.items[i][2])) | |
} | |
} | |
var cf_body = this.createBoxBody(nodes); | |
box.appendChild(box_page); | |
box.appendChild(cf_body); | |
box.appendChild(self.makeSetButton()); | |
document.body.appendChild(box); | |
}, | |
createBoxBody: function(nodes){ | |
var body = document.createElement("div"); | |
body.id = "MNconf_box"; | |
var table = document.createElement("table"); | |
table.id = "cfg_form_table"; | |
for(var i = 0;i < nodes.length; i++){ | |
table.appendChild(nodes[i]); | |
} | |
body.appendChild(table); | |
return body; | |
}, | |
makeSelect: function(key, items) { | |
var cfg = this.cfg; | |
var cf_key = (cfg[key]) ? cfg[key] : ConfigDefault[key]; | |
var tr = document.createElement("tr"); | |
var td_1 = document.createElement("td"); | |
var td_2 = document.createElement("td"); | |
tr.appendChild(td_1); | |
tr.appendChild(td_2); | |
var label = document.createElement("label"); | |
label.className = "MN_label"; | |
var text = document.createTextNode(key + " :\u3000"); | |
var op = ""; | |
label.setAttribute("for", this.name + "_" + key); | |
label.appendChild(text); | |
var input = document.createElement("select"); | |
input.id = this.name + "_" + key; | |
input.className = "MN_input"; | |
if(!cf_key[pg] && typeof cf_key[pg] != "boolean") cf_key[pg] = ConfigDefault[pg]; | |
for(var i = 0; i < items.length; i++) { | |
op += (items[i] == cf_key[pg].toString()) ? | |
"<option value='" + items[i] + "' selected>" + items[i] + "</option>" | |
: "<option value='" + items[i] + "'>" + items[i] + "</option>"; | |
} | |
var v = (cf_key && cf_key[pg]) ? cf_key[pg] : ConfigDefault[pg]; | |
input.value = (v) ? v.toString() : ""; | |
input.innerHTML = op; | |
td_1.appendChild(label); | |
td_2.appendChild(input); | |
return tr; | |
}, | |
makeText: function(key) { | |
var cfg = this.cfg; | |
var cf_key = (cfg[key]) ? cfg[key] : ConfigDefault[key]; | |
var tr = document.createElement("tr"); | |
var td_1 = document.createElement("td"); | |
var td_2 = document.createElement("td"); | |
tr.appendChild(td_1); | |
tr.appendChild(td_2); | |
var label = document.createElement("label"); | |
label.className = "MN_label"; | |
var text = document.createTextNode(key + " :\u3000"); | |
label.setAttribute("for", this.name + "_" + key); | |
label.appendChild(text); | |
var input = document.createElement("input"); | |
input.id = this.name + "_" + key; | |
input.className = "MN_input"; | |
input.type = "text"; | |
var v = (cf_key && cf_key[pg]) ? cf_key[pg] : ConfigDefault[pg]; | |
input.value = (v) ? v.toString() : ""; | |
td_1.appendChild(label); | |
td_2.appendChild(input); | |
return tr; | |
}, | |
makeSetButton: function() { | |
var span = document.createElement("span"); | |
span.id = "MNconf_buttons"; | |
switch(pg){ | |
case "community": span.style.marginLeft = "109px";break; | |
case "dic": span.style.marginLeft = "92px";break; | |
default: break; | |
} | |
var self = this; | |
var cancel = document.createElement("input"); | |
cancel.type = "button"; | |
cancel.id = "MNconf_cancel"; | |
cancel.value = "\u30ad\u30e3\u30f3\u30bb\u30eb"; | |
cancel.className = "submit MN_button"; | |
cancel.addEventListener("click", function(){self.hide();}, false); | |
var set = document.createElement("input"); | |
set.type = "button"; | |
set.id = "MNconf_set"; | |
set.value = " \u3000O K\u3000 "; | |
set.className = "submit MN_button"; | |
set.addEventListener("click", function(){self.set();}, false); | |
var clear = document.createElement("input"); | |
clear.type = "button"; | |
clear.id = "MNconf_clear"; | |
clear.value = "\u521d\u671f\u5316"; | |
clear.className = "submit MN_button"; | |
clear.addEventListener("click", function(){self.clear();}, false); | |
span.appendChild(clear); | |
span.appendChild(cancel); | |
span.appendChild(set); | |
return span; | |
}, | |
getValue: function(){ | |
var name = this.name; | |
var items = this.items; | |
var values = {}; | |
for(var i = 0; i < this.items.length; i++){ | |
values[items[i][1]] = document.getElementById(name + "_" + items[i][1]).value; | |
} | |
return values; | |
}, | |
update: function() { | |
var cfg = this.cfg; | |
var span = document.getElementById("matamite_trigger"); | |
if(span)span.parentNode.removeChild(span); | |
var cfg_button = document.getElementById("cfg_button"); | |
var bar = cfg_button.previousSibling; | |
if(cfg_button) { | |
cfg_button.parentNode.removeChild(bar); | |
cfg_button.parentNode.removeChild(cfg_button); | |
} | |
var mn = new MataNico(cfg); | |
}, | |
save: function() { | |
var cfg = this.cfg; | |
var items = this.items; | |
var value = this.getValue(); | |
for(var i = 0; i < items.length; i++){ | |
switch(value[items[i][1]]){ | |
case "true" : cfg[items[i][1]][pg] = true;break; | |
case "false" : cfg[items[i][1]][pg] = false;break; | |
default : | |
if(items[i][1] == "PREFIX"){ | |
cfg[items[i][1]][pg] = eval("['" + value[items[i][1]].replace(/,/g,"','") + "']"); | |
break; | |
} | |
if(items[i][1] == "POSITION"){ | |
cfg[items[i][1]][pg] = eval("(" + value[items[i][1]] + ")"); | |
break; | |
} | |
if(items[i][1] == "COMMENT_LENGTH"){ | |
cfg[items[i][1]][pg] = value[items[i][1]] - 0; | |
break; | |
} | |
cfg[items[i][1]][pg] = value[items[i][1]]; | |
} | |
} | |
GM_setValue("CONFIG", uneval(cfg)); | |
}, | |
set: function() { | |
this.save(); | |
this.update(); | |
this.hide(); | |
}, | |
hide: function() { | |
var box = document.getElementById(this.name); | |
if(box) box.parentNode.removeChild(box); | |
}, | |
clear: function() { | |
if(!confirm(pg.toUpperCase() +"\u30da\u30fc\u30b8\u306e\u8a2d\u5b9a\u3092\u521d\u671f\u5316\u3057\u307e\u3059\u3002\u4e00\u5ea6\u521d\u671f\u5316\u3059\u308b\u3068\u3001\u5143\u306e\u8a2d\u5b9a\u306f\u623b\u308a\u307e\u305b\u3093"))return; | |
var cfg = this.cfg; | |
var items = this.items; | |
for(var i = 0;i < items.length; i++){ | |
cfg[items[i][1]][pg] = ConfigDefault[items[i][1]][pg]; | |
} | |
GM_setValue("CONFIG", uneval(cfg)); | |
this.update(); | |
this.hide(); | |
} | |
}; | |
var cfg_box = new ConfigBox( | |
Config, | |
[ | |
["select", "SET", ["true", "false"]], | |
["select", "COMMENT", ["display", "true", "false"]], | |
["text", "PREFIX"], | |
["text", "TEMPLATE"], | |
["text", "POSITION"], | |
["text", "COMMENT_LENGTH"] | |
] | |
); | |
GM_registerMenuCommand("MataNico - Setting", function(){cfg_box.show(this)}); | |
function MataNico(){this.initialize.apply(this, arguments);} | |
MataNico.prototype = { | |
initialize: function(cfg){ | |
this.cfg = cfg; | |
this.insertCfgBoxTrigger(); | |
if(!cfg.SET[pg])return; | |
this.template = this.cfg.TEMPLATE[pg]; | |
this.pos = cfg.POSITION[pg](); | |
this.DATA = {prefix:"",title:"",data:"",url:"",comment:""}; | |
this.insert(); | |
}, | |
insert: function(){ | |
var cfg = this.cfg; | |
var template = this.template; | |
var node = this.pos; | |
if(!node)return; | |
this.insertText(node, template, cfg.PREFIX[pg]); | |
}, | |
parse: function(string){ | |
var DATA = this.DATA; | |
var result = string.replace(/%(PREFIX)%|%(TITLE)%|%(DATA)%|%(URL)%|%(COMMENT)%/gi, | |
function(matched){ | |
var word = matched.substring(1, matched.length-1); | |
return DATA[word.toLowerCase()] || ""; | |
} | |
); | |
return result; | |
}, | |
getTitle: function(){ | |
var title = ""; | |
switch(pg){ | |
case "watch" : | |
if(w.Video)title = w.Video.title; | |
break; | |
case "tag" : | |
var search_words = document.getElementsByClassName("search_word"); | |
if(!search_words)return false; | |
for(var i = 0;i < search_words.length;i++){ | |
if(title) title = title + " "; | |
title = title + search_words[i].textContent; | |
} | |
break; | |
case "search" : | |
var search_words = document.getElementsByClassName("search_word"); | |
if(!search_words)return false; | |
for(var i = 0;i < search_words.length;i++){ | |
if(title) title = title + " "; | |
title = title + search_words[i].textContent; | |
} | |
break; | |
case "related_tag" : | |
var name = document.getElementsByClassName("search_word"); | |
if(name)title = name[0].textContent; | |
break; | |
case "community" : | |
var h1 = document.getElementsByTagName("h1"); | |
if(!h1)return false; | |
title = "\u300e" + h1[0].textContent + "\u300f"; | |
break; | |
case "dic" : | |
var contents = document.getElementById("contents"); | |
if(!contents)return false; | |
var titles = document.getElementsByTagName("title"); | |
title = titles[0].innerHTML.match('(.*) - [^-]+')[1]; | |
break; | |
case "com_material" : | |
var name = document.getElementsByClassName("commons_title"); | |
if(name)title = name[0].textContent; | |
break; | |
case "com_tag" : | |
var name = document.getElementById("search_word"); | |
if(name)title = name.value; | |
break; | |
case "com_search" : | |
var name = document.getElementById("search_word"); | |
if(name)title = name.value; | |
break; | |
case "com_tree" : | |
var name = document.getElementsByClassName("TXT12"); | |
if(name)title = name[1].textContent; | |
break; | |
case "live" : | |
var name = w.Video.title; | |
if(name)title = name; | |
break; | |
default : | |
return false; | |
break; | |
} | |
return (title) ? title : false; | |
}, | |
checkWrapper : function(){ | |
if (unsafeWindow.$('flvplayer').GetVariable('o') == "base") return true; | |
else return false; | |
}, | |
getData: function(){ | |
var data = ""; | |
switch(pg){ | |
case "watch" : | |
if(this.checkWrapper()){ | |
var len = unsafeWindow.$("flvplayer").GetVariable("nico.ContentLength"); | |
}else{ | |
var len = unsafeWindow.$("flvplayer").GetVariable("ContentLength"); | |
} | |
var lmin = Math.floor(len / 60); | |
var lsec = len % 60; | |
data = (0 < len ? lmin.z(2) : '--') + ':' + (0 < len ? lsec.z(2) : '--'); | |
break; | |
case "tag" : | |
var result_total = document.getElementsByClassName('result_total'); | |
if ( !result_total ) { GM_log( 'result_total not found' ); return; } | |
data = result_total[0].innerHTML + "\u4ef6"; | |
break; | |
case "search" : | |
var result_total = $x("descendant::div[@id='PAGEBODY']/div/p/strong", document); | |
if ( !result_total ) { GM_log( 'result_total not found' ); return; } | |
data = result_total[1].innerHTML + "\u4ef6"; | |
break; | |
case "related_tag" : | |
var result_total = document.getElementsByClassName("result_total"); | |
if ( !result_total ) { GM_log( "result_total not found" ); return; } | |
data = result_total[0].innerHTML + "\u4ef6"; | |
break; | |
case "community" : | |
var level = $x("/descendant::td[contains(descendant::text(), '\u30ec\u30d9\u30eb')]/following-sibling::td/strong", document); | |
var member = $x("/descendant::td[contains(descendant::text(), '\u30e1\u30f3\u30d0\u30fc')]/following-sibling::td/strong", document); | |
var video = $x("/descendant::td[contains(descendant::text(), '\u6295\u7a3f\u52d5\u753b')]/following-sibling::td/strong", document); | |
data = "\u3000\u30ec\u30d9\u30eb\uff1a" + level[0].textContent + "\u3000\u30e1\u30f3\u30d0\u30fc\uff1a" + member[0].textContent + "\u3000\u6295\u7a3f\u52d5\u753b\uff1a" + video[0].textContent; | |
break; | |
case "com_material" : | |
var info = document.getElementsByClassName("commons_info_value"); | |
if(!info)return false; | |
var author = info[0]; | |
var view = info[1]; | |
var download = info[2]; | |
var following_products = info[3] | |
data = "\u4f5c\u8005\uff1a" + author.textContent + "\u3000\u95b2\u89a7\uff1a" + view.textContent + "\u3000\u5229\u7528\u4f5c\u54c1\uff1a" + following_products.textContent; | |
if(download) data += "\u3000\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\uff1a" + download.textContent; | |
break; | |
case "com_tag" : | |
var number = $x("/descendant::div[@class='paginate']/div/span/b", document); | |
data = number[0].textContent + "\u4ef6"; | |
break; | |
case "com_search" : | |
var number = $x("/descendant::div[@class='paginate']/div/span/b", document); | |
data = number[0].textContent + "\u4ef6"; | |
break; | |
case "com_tree" : | |
var tree = document.getElementsByClassName("arrow_on_tree"); | |
var parents = $x("descendant::div[contains(concat(' ',normalize-space(@class),' '), ' tree_boxmini ')]", tree[0]); | |
var children = $x("descendant::div[contains(concat(' ',normalize-space(@class),' '), ' tree_boxmini ')]", tree[1]); | |
data = "\u3000\u3010\u89aa\u4f5c\u54c1\u3011" + parents.length + " \u3010\u5b50\u4f5c\u54c1\u3011" + children.length; | |
break; | |
case "live" : | |
var community = document.getElementsByClassName("community"); | |
if(community.length > 0){ | |
data = "from " + community[0].textContent; | |
} else { | |
data = "\u3010\u516c\u5f0f\u3011"; | |
} | |
break; | |
default : | |
break; | |
} | |
return data; | |
}, | |
insertText : function(node, data, strings) { | |
var self = this; | |
var cfg = this.cfg | |
var span = document.createElement("span"); | |
span.id = "matamite_trigger"; | |
if(strings.length > 1 || strings[0] != ConfigDefault.DEFAULT_PREFIX[pg][0]){ | |
for(var i = 0; i < strings.length; i++){ | |
var a = document.createElement("a"); | |
var parent = a.parentNode; | |
var num = function(n){return n}; | |
a.href = "javascript:void(0);" | |
if(i == 0){ | |
a.appendChild(document.createTextNode("[\u307e\u305f\u898b\u3066\u308b]")); | |
} else{ | |
a.appendChild(document.createTextNode("[" + strings[i] + "]")); | |
} | |
if(cfg.COMMENT[pg] == "display"){ | |
var dummy = ""; | |
self.makeCommentSpace(dummy, data, strings[0], "\u307e\u305f\u898b\u3066\u308b"); | |
return; | |
}else if(cfg.COMMENT[pg]){ | |
(function(n){a.addEventListener("click", function(e){ | |
var parent = e.target.parentNode; | |
for(var i = parent.childNodes.length - 1;i >= 0; i--){ | |
if(parent.childNodes[i] != e.target)parent.removeChild(parent.childNodes[i]); | |
} | |
if(n == 0){ | |
self.makeCommentSpace(e, data, strings[n], "\u307e\u305f\u898b\u3066\u308b"); | |
} else { | |
self.makeCommentSpace(e, data, strings[n]); | |
} | |
}, false);})(num(i)); | |
}else { | |
data = data.replace(/%COMMENT%/, ""); | |
(function(n){a.addEventListener("click", | |
function(e){ | |
var parent = e.target.parentNode; | |
for(var i = parent.childNodes.length - 1;i >= 0; i--){ | |
if(parent.childNodes[i] != e.target)parent.removeChild(parent.childNodes[i]); | |
} | |
self.PostPage(e, data, strings[n]); }, false);})(num(i)); | |
} | |
span.appendChild(a); | |
} | |
node.parentNode.insertBefore(span, node); | |
} else { | |
var a = document.createElement("a"); | |
var tx = "\u307e\u305f\u898b\u3066\u308b"; | |
a.href = "javascript:void(0)"; | |
a.className = "mata_miteru"; | |
a.appendChild(document.createTextNode("[" + tx +"]")); | |
if(cfg.COMMENT[pg] == "display"){ | |
var dummy = ""; | |
self.makeCommentSpace(dummy, data, strings[0], tx); | |
return; | |
} else if(cfg.COMMENT[pg]){ | |
a.addEventListener("click", function(e){ self.makeCommentSpace(e, data, strings[0], tx); }, false); | |
} else { | |
data = data.replace(/%COMMENT%/, ""); | |
a.addEventListener("click", function(e){ self.PostPage(e, data, strings[0], tx); }, false); | |
} | |
span.appendChild(a); | |
node.parentNode.insertBefore(span, node); | |
} | |
}, | |
makeCommentSpace : function(e, data, text, txt){ | |
var self = this; | |
var cfg = this.cfg; | |
var tx = txt ? txt : text; | |
if(e){ | |
var parent = e.target.parentNode; | |
parent.removeChild(e.target); | |
}else{ | |
var parent = document.createElement("span"); | |
parent.id = "matamite_trigger"; | |
var node = this.pos; | |
node.parentNode.insertBefore(parent, node); | |
} | |
var comment = document.createElement("input"); | |
comment.type = "text"; | |
comment.value = ""; | |
comment.size = 20; | |
comment.setAttribute("maxlength", cfg.COMMENT_LENGTH[pg]); | |
var a = document.createElement("a"); | |
a.appendChild(document.createTextNode("[" + tx + "]")); | |
a.href = "javascript:void(0)"; | |
a.addEventListener("click", function(e) { self.PostPage(e, data, text, comment.value); }, false); | |
parent.appendChild(a); | |
parent.appendChild(comment); | |
}, | |
PostPage : function(e, data, prefix, comment){ | |
var DATA = this.DATA; | |
var parent = e.target.parentNode; | |
DATA["prefix"] = prefix; | |
DATA["title"] = this.getTitle(); | |
DATA["data"] = this.getData(); | |
DATA["url"] = location.href; | |
if(comment){ | |
DATA["comment"] = comment; | |
} | |
while(parent.firstChild){parent.removeChild(parent.firstChild);} | |
var result = this.parse(data); | |
var req = { | |
method: "POST", | |
url: "http://twitter.com/statuses/update.json", | |
headers: { "Content-type": "application/x-www-form-urlencoded" }, | |
data: "status=" + encodeURIComponent(result), | |
onload: function(res){ GM_log('\u6295\u7a3f\u3057\u307e\u3057\u305f\u3002'); }, | |
onerror: function(res){ GM_log(res.status + ":" + res.statusText); } | |
}; | |
// debug | |
// GM_log(result); | |
GM_xmlhttpRequest(req); | |
}, | |
insertCfgBoxTrigger : function(){ | |
var trigger_pos = $x("descendant::table/tbody/tr/td", document)[0]; | |
if(pg == "live")trigger_pos = document.getElementById("headtxt"); | |
if(trigger_pos){ | |
var bd = document.createTextNode(" | ");; | |
var trigger = document.createElement("a"); | |
if(!pg.match("com_"))trigger.style.color = "yellow"; | |
var trigger_txt = document.createTextNode("Tw!"); | |
trigger.href = "javascript:void(0)"; | |
trigger.id = "cfg_button"; | |
trigger.addEventListener("click", function(e){ | |
init = 1; | |
cfg_box.show(this); | |
e.target.blur(); | |
},false); | |
trigger_pos.appendChild(bd); | |
trigger_pos.appendChild(trigger); | |
trigger.appendChild(trigger_txt); | |
} | |
} | |
}; | |
var mn = new MataNico(Config); | |
Number.prototype.z = function(len){ | |
var s = '0'.fill(len) + this.toString(); | |
return s.substr(s.length - len); | |
}; | |
String.prototype.fill = function(len){ | |
var result = ''; | |
for(var i = 0; i < len; i++) result += this; | |
return result; | |
}; | |
function $x(xpath, context){ | |
var x = document.evaluate(xpath, context, null, 7, null); | |
var array = []; | |
for(var i = 0;i < x.snapshotLength;i++){ | |
array.push(x.snapshotItem(i)); | |
} | |
return array; | |
} | |
new UpdateChecker({ | |
script_name: "mata niconico miteru" | |
,script_url: "http://kojim71.googlepages.com/mataniconicomiteru.user.js" | |
,current_version: "0.3.2" | |
}); | |
GM_addStyle(<><![CDATA[ | |
#MataNico_cfg { | |
position: fixed; | |
width: 355px; | |
left: 30%; | |
top: 30%; | |
border: 1px solid #000; | |
background-color: #EEE; | |
overflow: auto; | |
padding : 10px; | |
} | |
#MataNico_cfg_header { | |
width: 355px; | |
border-bottom : 1px solid #000; | |
padding-bottom : 3px; | |
} | |
#MNconf_buttons { | |
margin: 2px; | |
padding: 5px; | |
margin-left: 138px; | |
} | |
#MNconf_clear { | |
margin : 5px; | |
} | |
#MNconf_cancel { | |
margin : 5px; | |
} | |
#MNconf_set { | |
margin : 5px; | |
} | |
#cfg_form_table { | |
margin-top : 5px; | |
} | |
.MN_input { | |
margin : 5px; | |
padding : 2px; | |
} | |
.ML_label { | |
margin : 20px; | |
} | |
]]></>); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment