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