monnsutogatya_tool

ADBlock Reborn and Refresh tool.

  1. // ==UserScript==
  2. // @name monnsutogatya_tool
  3. // @namespace http://qqboxy.blogspot.com/
  4. // @version 0.9.3
  5. // @description ADBlock Reborn and Refresh tool.
  6. // @author QQBoxy
  7. // @match http://tw.monnsutogatya.com/*
  8. // @grant none
  9. // ==/UserScript==
  10.  
  11. // Install https://greasyfork.org/zh-TW/scripts/12760-monnsutogatya-tool
  12.  
  13. (function() {
  14. function $(id) {
  15. switch(id.substr(0,1)) {
  16. case '#':
  17. return document.getElementById(id.substr(1));
  18. case '.':
  19. var elems = document.body.getElementsByTagName('*');
  20. var target = id.substr(1);
  21. var result=[];
  22. for(i=0;j=elems[i];i++) {
  23. if((j.className).indexOf(target)!=-1) result.push(j);
  24. }
  25. return result;
  26. default:
  27. return document.getElementsByTagName(id);
  28. }
  29. }
  30. var getCookie = function(name) {
  31. var n = name + "=";
  32. var nlen = n.length;
  33. var clen = document.cookie.length;
  34. var i = 0;
  35. while(i < clen) {
  36. var j = i + nlen;
  37. if(document.cookie.substring(i, j) == n) {
  38. var endstr = document.cookie.indexOf(";", j);
  39. if(endstr == -1)
  40. endstr = clen;
  41. return unescape(document.cookie.substring(j, endstr));
  42. }
  43. i = document.cookie.indexOf(" ", i) + 1;
  44. if(i == 0) break;
  45. }
  46. return null;
  47. };
  48. //----- Clear other
  49. var other = function() {
  50. var i = 0;
  51. var j = 0;
  52. var adclass = ["adsbygoogle", "adsense", "facebook-bnr"];
  53. for(i=0;i<adclass.length;i++) {
  54. var ads = $("."+adclass[i]);
  55. for(j=0;j<ads.length;j++) {
  56. ads[j].parentNode.removeChild(ads[j]);
  57. }
  58. }
  59. };
  60. //----- Control Bar-----
  61. var controlbar = function() {
  62. var tbox = document.getElementById("t-box");
  63. var ctrl = document.createElement("div");
  64. ctrl.setAttribute("style",
  65. "width: 950px;"+
  66. "white-space: nowrap;"+
  67. "text-align: center;"+
  68. "background-color: #848280;"+
  69. "border-bottom-style: solid;"+
  70. "border-bottom-width: 1px;"+
  71. "padding: 10px 0;"
  72. );
  73. ctrl.setAttribute("id", "ctrlboxy");
  74. var start = document.createElement("button");
  75. start.setAttribute("id", "startboxy");
  76. start.setAttribute("style",
  77. "font-size: 20px;"+
  78. "margin: 0 10px;"
  79. );
  80. var sec = document.createElement("input");
  81. sec.setAttribute("style",
  82. "width: 50px;"+
  83. "font-size: 20px;"+
  84. "margin-right: 10px;"
  85. );
  86. sec.setAttribute("id", "secboxy");
  87. var txt1 = document.createElement("span");
  88. txt1.setAttribute("style",
  89. "font-size: 20px;"+
  90. "margin-right: 10px;"+
  91. "color: #f0f0a9"
  92. );
  93. txt1.innerHTML = "秒, 同時抽到";
  94. var count = document.createElement("input");
  95. count.setAttribute("style",
  96. "width: 50px;"+
  97. "font-size: 20px;"+
  98. "margin-right: 10px;"
  99. );
  100. count.setAttribute("id", "countboxy");
  101. var txt2 = document.createElement("span");
  102. txt2.setAttribute("style",
  103. "font-size: 20px;"+
  104. "color: #f0f0a9"
  105. );
  106. txt2.innerHTML = "隻☆5時提醒";
  107. ctrl.appendChild(start);
  108. ctrl.appendChild(sec);
  109. ctrl.appendChild(txt1);
  110. ctrl.appendChild(count);
  111. ctrl.appendChild(txt2);
  112. tbox.parentNode.insertBefore(ctrl, tbox);
  113. };
  114. //----- Refresh Tool -----
  115. var refresh_tool = function() {
  116. var ms = null;
  117. var started = null;
  118. var refreshTimmer = null;
  119. var keyTimer = null;
  120. var set = function() {
  121. var c_started = getCookie("c_started");
  122. var c_ms = getCookie("c_ms");
  123. if(c_ms && ms==null) {
  124. ms = c_ms;
  125. } else if(!c_ms && ms==null) {
  126. ms = 60000;
  127. }
  128. document.cookie = "c_ms=" + escape(ms);
  129. document.getElementById('secboxy').value = ms/1000;
  130.  
  131. if(c_started && started==null) {
  132. if(c_started=="true") {
  133. started = true;
  134. } else if(c_started=="false") {
  135. started = false;
  136. }
  137. } else if(!c_started && started==null) {
  138. started = false;
  139. }
  140. document.cookie = "c_started=" + escape(started);
  141. clearTimeout(refreshTimmer);
  142. if(started) {
  143. document.getElementById('startboxy').innerHTML = "自動重新整理(啟用中)";
  144. refreshTimmer = setTimeout(function(){
  145. location.reload();
  146. }, ms);
  147. } else {
  148. document.getElementById('startboxy').innerHTML = "自動重新整理(停止中)";
  149. }
  150. };
  151. var startboxy = document.getElementById("startboxy");
  152. startboxy.onclick = function() {
  153. if(started) {
  154. started = false;
  155. } else {
  156. started = true;
  157. }
  158. set();
  159. };
  160. var secboxy = document.getElementById("secboxy");
  161. secboxy.onkeyup = function() {
  162. if(keyTimer) clearTimeout(keyTimer);
  163. keyTimer = setTimeout(function() {
  164. ms = parseInt(document.getElementById('secboxy').value, 10) * 1000;
  165. if(ms>=5000) {
  166. set();
  167. } else {
  168. alert("不允許小於5秒");
  169. }
  170. }, 500);
  171. };
  172. set();
  173. };
  174. //----- Alert Tool -----
  175. var alert_tool = function() {
  176. var mp3 = "https://dl.dropboxusercontent.com/u/12316009/ms/StrikeShot.mp3";
  177. var i = 0;
  178. var j = 0;
  179. var c = 0;
  180. var cardtime = {};
  181. var tp = /☆5\s(\d+)\:(\d+)/;
  182. var cards = $("#c-box").getElementsByTagName("h1");
  183. for(i=0;i<cards.length;i++) {
  184. var m = cards[i].innerHTML.match(tp);
  185. if(m) {
  186. var n = parseInt(m[1], 10)*60+parseInt(m[2], 10);
  187. if(cardtime[n]) {
  188. cardtime[n]++;
  189. } else {
  190. cardtime[n] = 1;
  191. }
  192. } else {
  193. cards[i].parentNode.parentNode.parentNode.parentNode.parentNode.style.display="none";
  194. }
  195. }
  196. //console.log(JSON.stringify(cardtime));
  197. var countboxy = document.getElementById("countboxy");
  198. countboxy.onkeyup = function() {
  199. c = parseInt(document.getElementById('countboxy').value, 10);
  200. document.cookie = "c_count=" + escape(c);
  201. };
  202. var c_count = getCookie("c_count");
  203. if(c_count) {
  204. c = parseInt(c_count, 10);
  205. } else {
  206. c = 3; //預設值
  207. document.cookie = "c_count=" + escape(c);
  208. }
  209. countboxy.value = c;
  210. var c_cardtime = getCookie("c_cardtime");
  211. if(c_cardtime != JSON.stringify(cardtime)) {
  212. var c_cardtime_obj = JSON.parse(c_cardtime);
  213. document.cookie = "c_cardtime=" + escape(JSON.stringify(cardtime));
  214. for(p in c_cardtime_obj) {
  215. for(q in cardtime) {
  216. if(q == p) {
  217. delete cardtime[p];
  218. }
  219. }
  220. }
  221. for(j in cardtime) {
  222. //console.log(parseInt((j/60), 10), ":", j%60);
  223. if(cardtime[j] >= c) {
  224. var audio = document.createElement('audio');
  225. audio.autoplay = "autoplay";
  226. var source = document.createElement('source');
  227. source.src = mp3;
  228. source.type = "audio/mpeg";
  229. audio.appendChild(source);
  230. document.getElementsByTagName("body")[0].appendChild(audio);
  231. break;
  232. }
  233. }
  234. }
  235. };
  236. // Remove AD
  237. var del = function() {
  238. var remove = function(obj) {
  239. obj.parentNode.removeChild(obj);
  240. };
  241. for(var i = 1; i < 100; i++) {
  242. clearTimeout(i);
  243. }
  244. $("#for-ad-blocker").style.display="none";
  245. $("#site-box").style.display="";
  246. $("#a-box").style.marginBottom = "-15px";
  247. $("#ypaAdWrapper-monst_2a").innerHTML="";
  248. $("#ypaAdWrapper-monst_2b").innerHTML="";
  249. };
  250. //主函式
  251. if(navigator.userAgent.match("Firefox")) {
  252. del();
  253. controlbar();
  254. refresh_tool();
  255. alert_tool();
  256. window.onload = function() {
  257. other();
  258. };
  259. } else {
  260. del();
  261. controlbar();
  262. other();
  263. refresh_tool();
  264. alert_tool();
  265. }
  266. })();