51NB Asst

51助手,黑名单,自动签到

当前为 2014-10-09 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name 51NB Asst
  3. // @description 51助手,黑名单,自动签到
  4. // @namespace by 51nb.com-FlyToSky
  5. // @version 2.1.3
  6. // @grant GM_setValue
  7. // @grant GM_getValue
  8. // @grant GM_addStyle
  9. // @include *forum.51nb.com/*
  10. // @include *.51nb.com/forum/*
  11. // ==/UserScript==
  12.  
  13. var bid_Settings;
  14. var bid_BlackLists;
  15. var bid_blacklistStr;
  16. var bid_signed;
  17. var bid_formhash;
  18. var bid_uid;
  19. var bid_fid;
  20. var bid_keywords;
  21. var bid_Key_lastTid;
  22. var bid_VIEWTHREAD = window.location.href.indexOf('/thread-') > -1 || window.location.href.indexOf('/viewthread.php') > - 1;
  23. var bid_FORUMDISPLAY = window.location.href.indexOf('/forum-') > - 1 || window.location.href.indexOf('/forumdisplay.php') > - 1;
  24. var bid_POST = window.location.href.indexOf('/post.php') > - 1;
  25.  
  26. if (!this.GM_getValue || (this.GM_getValue.toString && this.GM_getValue.toString().indexOf("not supported")>-1)) {
  27. this.GM_getValue = function (key,def) {
  28. return localStorage.getItem(key) || def;
  29. }
  30. this.GM_setValue = function (key,value) {
  31. return localStorage.setItem(key, value);
  32. }
  33. this.GM_deleteValue = function (key) {
  34. return localStorage.removeItem(key);
  35. }
  36. }
  37.  
  38. if (!this.GM_addStyle || (this.GM_addStyle.toString && this.GM_addStyle.toString().indexOf("not supported")>-1)){
  39. this.GM_addStyle = function(css) {
  40. var head, style;
  41. head = document.getElementsByTagName('head')[0];
  42. if (!head) { return; }
  43. style = document.createElement('style');
  44. style.type = 'text/css';
  45. style.innerHTML = css;
  46. head.appendChild(style);
  47. }
  48. }
  49.  
  50. function bid_xpath(q) {
  51. return document.evaluate(q, document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
  52. }
  53.  
  54. //读取设置
  55. function bid_readConfig(){
  56. var s=GM_getValue('51Asst_Settings_' + bid_uid,'');
  57. if (s) {
  58. bid_Settings = JSON.parse(s);
  59. bid_signed = (bid_Settings.lastSignDate == (new Date()).toDateString()) ? true : false;
  60. } else {
  61. bid_Settings = new Object();
  62. }
  63. s=GM_getValue('51Asst_BlackLists_' + bid_uid,'');
  64. bid_blacklistStr = ',';
  65. if (s) {
  66. bid_BlackLists = JSON.parse(s);
  67. for (i=0;i<bid_BlackLists.blacklist.length;i++) {
  68. bid_blacklistStr += bid_BlackLists.blacklist[i].id + '=' + bid_BlackLists.blacklist[i].name + ',';
  69. }
  70. } else {
  71. bid_BlackLists= new Object();
  72. bid_BlackLists.blacklist = new Array();
  73. }
  74.  
  75. s=GM_getValue('51Asst_keywords_' + bid_uid,'');
  76. if (s) {
  77. bid_keywords = JSON.parse(s);
  78. } else {
  79. bid_keywords = new Object();
  80. bid_keywords.key = new Array();
  81. }
  82. }
  83.  
  84. var bid_BtnID;
  85. function bid_AddBlockBtn(){ // 添加屏蔽按钮
  86. s = bid_xpath('//div[@class="maintable"]/form[@name="delpost"]/table[@class="t_rown"]/tbody/tr[1]/td[1]/span/a');
  87. for (i = 0; i < s.snapshotLength; ++i) {
  88. var a = s.snapshotItem(i);
  89. if( a != undefined){
  90. a.addEventListener('mouseenter', function(e){clearTimeout(bid_BtnID);var p=bid_GetPos(e.target);var d=document.getElementById('_51nbbl_div');d.style.top=p.top+20;/*p.top-3;*/d.style.left=p.left;/*p.right+3;*/e.target.parentNode.parentNode.appendChild(d);d.style.display='';},false);
  91. a.addEventListener('mouseleave', function(e){bid_BtnID=setTimeout("document.getElementById('_51nbbl_div').style.display='none';",500)},false);
  92. }
  93. }
  94. }
  95.  
  96. function bid_GetPos(obj) { //获取元素的绝对坐标
  97. var curleft=0;
  98. var curtop=0;
  99. var curwidth=0;
  100. var curheight=0;
  101.  
  102. if (obj.offsetParent) { //返回父元素
  103. curwidth = obj.offsetWidth;
  104. curheight = obj.offsetHeight;
  105. while (obj.offsetParent) { //遍历所有父元素
  106. curleft += obj.offsetLeft;
  107. curtop += obj.offsetTop;
  108. obj = obj.offsetParent;
  109. }
  110. } else if (obj.x) {
  111. curleft += obj.x;
  112. curtop += obj.y;
  113. }
  114. return {left:curleft,top:curtop,right:curleft+curwidth,bottom:curtop+curheight};
  115. }
  116.  
  117. function bid_BlockUser(e){ //点击屏蔽按钮
  118. var a = e.target.parentNode.parentNode.getElementsByClassName('bold')[0].getElementsByTagName('a')[0];
  119. var nm= a.text.replace(/[\r\n]/g,'');
  120. var id= a.href.substring(a.href.indexOf('uid')+4,a.href.indexOf('.html'));
  121. bid_readConfig(); //先读取一下,解决多窗口情况下的同步问题
  122. if (bid_blacklistStr.indexOf(','+id+'=') < 0) { //检查黑名单是否已存在
  123. bid_blacklistStr += id + '=' + nm;
  124. bid_addBidlist(id,nm);
  125. bid_SaveConfig(2)
  126. }
  127. bid_BlockList();
  128. bid_HideComments();
  129. }
  130.  
  131. function bid_HideComments() {
  132. switch (bid_fid) {
  133. case '88':
  134. if (!bid_Settings.blockForum88) return;
  135. break;
  136. case '41':
  137. if (!bid_Settings.blockForum41) return;
  138. break;
  139. default: if (!bid_Settings.blockForumother) return;
  140. }
  141. if(bid_VIEWTHREAD){ // 帖子
  142. if (bid_Settings.blockComment) {// 屏蔽点评内容
  143. var s = bid_xpath('//div[starts-with(@id,"comment_")]//a[@class="xi2 xw1"]');
  144. for (i = 0; i < s.snapshotLength; ++i) {
  145. var a = s.snapshotItem(i);
  146. var id = a.href.substring(a.href.indexOf('uid=')+4);
  147. if (bid_blacklistStr.indexOf(','+id+'=')>=0)
  148. a.parentNode.style.display = 'none';
  149. }
  150. }
  151. }
  152. }
  153.  
  154. function bid_BlockList(){ // 屏蔽黑名单
  155. switch (bid_fid) {
  156. case '88':
  157. if (!bid_Settings.blockForum88) return;
  158. break;
  159. case '41':
  160. if (!bid_Settings.blockForum41) return;
  161. break;
  162. default:
  163. if (!bid_Settings.blockForumother) return;
  164. }
  165. if(bid_VIEWTHREAD){ // 帖子
  166. if (bid_Settings.blockPost) {//屏蔽回复
  167. var s = bid_xpath('//div[@class="maintable"]/form[@name="delpost"]/table[@class="t_rown"]/tbody/tr[1]/td[1]/span/a[@href]');
  168. for (i = 0; i < s.snapshotLength; ++i) {
  169. var a = s.snapshotItem(i);
  170. if( a != undefined){
  171. var id= a.href.substring(a.href.indexOf('uid-')+4,a.href.indexOf('.html'));
  172. if (bid_blacklistStr.indexOf(','+id+'=')>=0)
  173. a.parentNode.parentNode.parentNode.parentNode.style.display='none';
  174. }
  175. }
  176. }
  177. if (bid_Settings.blockQuote) {// 屏蔽被引用内容
  178. var s = bid_xpath('//div[@class="msgbody"]/div[@class="msgborder"]/i');
  179. for (i = 0; i < s.snapshotLength; ++i) {
  180. var a = s.snapshotItem(i);
  181. var n = a.innerHTML;
  182. if (bid_blacklistStr.indexOf('='+n+',')>=0)
  183. a.parentNode.parentNode.style.display = 'none';
  184. }
  185. }
  186. //重新设置背景色
  187. var s = bid_xpath('//div[@class="maintable"]/form[@name="delpost"]/table[@class="t_rown"]/tbody/tr');
  188. var j=0;
  189. for (i = 0; i < s.snapshotLength; ++i) {
  190. var a = s.snapshotItem(i);
  191. if( a != undefined){
  192. if (a.parentNode.style.display != 'none') {
  193. a.className = (j % 2)==0?"altbg1":"altbg2";
  194. ++j;
  195. }
  196. }
  197. }
  198. var s = bid_xpath('//div[@class="maintable"]/form[@name="delpost"]/table[@class="t_rown"]/tbody/tr/td/table[@class="t_msg"]/tbody/tr');
  199. for (i = 0; i < s.snapshotLength; ++i) {
  200. var a = s.snapshotItem(i);
  201. if( a != undefined){
  202. a.className=a.parentNode.parentNode.parentNode.parentNode.className;
  203. }
  204. }
  205.  
  206. } else if(bid_FORUMDISPLAY){ // 论坛列表
  207. if (bid_Settings.blockThread) {// 屏蔽主题帖
  208. var s = bid_xpath('//table[@class="t_rown"]/tbody/tr/td/a[starts-with(@href,"profile-uid")]');
  209. for (i = 0; i < s.snapshotLength; ++i) {
  210. var a = s.snapshotItem(i);
  211. if( a != undefined){
  212. var id= a.href.substring(a.href.indexOf('uid-')+4,a.href.indexOf('.html'));
  213. if (bid_blacklistStr.indexOf(','+id+'=')>=0)
  214. a.parentNode.parentNode.style.display='none';
  215. }
  216. }
  217. }
  218. //重新设置背景色
  219. var s = bid_xpath('//table[@class="t_rown"]/tbody/tr[@class="header"]/following-sibling::*');
  220. var j=0;
  221. for (i = 0; i < s.snapshotLength; ++i) {
  222. var a = s.snapshotItem(i);
  223. if( a != undefined){
  224. if (a.style.display != 'none') {
  225. if (a.className == 'category') {
  226. j=0;
  227. } else {
  228. a.bgColor = (j % 2)==0?"#E3E3E3":"#F7F7F7";
  229. }
  230. ++j;
  231. }
  232. }
  233. }
  234. var s = bid_xpath('//table[@class="t_rown"]/tbody/tr[@class="header"]/following-sibling::*//td');
  235. for (i = 0; i < s.snapshotLength; ++i) {
  236. var a = s.snapshotItem(i);
  237. if( a != undefined){
  238. a.bgColor="";
  239. }
  240. }
  241. // 隐藏最后回复位置的显示
  242. var s = bid_xpath('//td[@class="f_last"]/font/a[2]');
  243. for (i = 0; i < s.snapshotLength; ++i) {
  244. var a = s.snapshotItem(i);
  245. if(a != undefined) {
  246. var n = a.text.replace(/[\r\n]/g,'');
  247. if (bid_blacklistStr.indexOf(('='+n+','))>=0) a.innerHTML='anonymous';
  248. }
  249. }
  250. }
  251. }
  252.  
  253. function bid_menu(m) {
  254. var cur_menu=document.getElementById(m).parentNode;
  255. for (i=0;i<cur_menu.parentNode.childNodes.length;i++) {
  256. if (cur_menu.parentNode.childNodes[i].className=="_c_menu")
  257. cur_menu.parentNode.childNodes[i].className="";
  258. }
  259. cur_menu.className="_c_menu";
  260. document.getElementById("_51nb_setting1").style.display="none";
  261. document.getElementById("_51nb_setting2").style.display="none";
  262. document.getElementById("_51nb_setting3").style.display="none";
  263. switch(m) {
  264. case "_bid_m1":
  265. document.getElementById("_51nb_setting1").style.display="";
  266. break;
  267. case "_bid_m2":
  268. document.getElementById("_51nb_setting2").style.display="";
  269. break;
  270. case "_bid_m3":
  271. document.getElementById("_51nb_setting3").style.display="";
  272. break;
  273. }
  274. }
  275.  
  276. function bid_CreatConfigPanel(){ //创建设置面板
  277. GM_addStyle(
  278. '#_51nbccp_div {position: fixed;left:50%;bottom:50px;padding:0px 15px;margin-left:-115px; margin-top:-135px;align:center;width:220px;z-index:99;background:#d3d3d3;border:1px solid #bfbfbf;opacity:0.95;text-align:center;font-size:12px}'+
  279. '#_51nbccp_div table,#_51nbccp_div input,#_51nbccp_div select {font-size: 12px;}'+
  280. '#_51nbccp_div input {height: 18px;}'+
  281. '#_51nbccp_div input[type="text"] {height:17px;}'+
  282. //'#_51nbccp_div input[type="checkbox"] {height:10px;}'+
  283. '#_51nbccp_div input[type="button"] {margin-top:2px;}'+
  284. '#_51nb_setting1,#_51nb_setting2,#_51nb_setting3 {padding:5px 0px;border-width: 1px 0px 0px;border-color:#a3a3a3;border-style:solid;height:180px;text-align:left}'+
  285. '#_bid_menu li {list-style: none outside none;display:inline;}'+
  286. '#_bid_menu li {background:#b3b3b3;margin-left: 2px;}'+
  287. '#_bid_menu li._c_menu a {border-color:#a3a3a3;background:#d3d3d3;font-weight:bold;}'+
  288. '#_bid_menu a {border-width: 1px 1px 0px;border-color:#a3a3a3;border-style:solid;padding:1px 8px;height:25px;line-height:24px;text-decoration:none;color:#000;background:#b3b3b3;outline:none}'+
  289. '#_51nbgdb_div {position: fixed;top:25;left:50%;margin-left:-75px; align:center;width:150px;padding: 7px;text-align:center;color:#fff;background:#66c;z-index:100;border-radius:5px;font-size:14px;box-shadow: 0px 0px 9px #999999;}'+
  290. '#_51nbsr_div {position: fixed;right:5px;bottom:5px;align:center;padding: 0px;z-index:98;background:#f7f7f7;border:1px solid #b6b6b6;opacity:0.90;text-align:left;}'+
  291. '#_51nbsr_div td{border-bottom:1px solid #c6c6c6;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;padding:2px 2px 2px 5px}'+
  292. '#_51nbbl_div {position:absolute;width:50px;padding:3px 5px;background:#f3f3f3;border:1px solid #e3e3e3;z-index:101;text-align:center;opacity:0.90}' //background:#b3b3b3;border:1px solid #b6b6b6;
  293. );
  294. if (bid_Settings.autoSign && (!bid_signed) && (bid_formhash)) {
  295. var bid_gdb = document.createElement("div"); //签到提示面板
  296. bid_gdb.id = '_51nbgdb_div';
  297. bid_gdb.style.display = "none";
  298. document.getElementsByTagName('body')[0].appendChild(bid_gdb);
  299. }
  300.  
  301. var bid_sresult = document.createElement("div"); //关键字提示面板
  302. bid_sresult.id = '_51nbsr_div';
  303. bid_sresult.style.display = "none";
  304. document.getElementsByTagName('body')[0].appendChild(bid_sresult);
  305.  
  306. var bid_div_block = document.createElement("div"); //屏蔽提示面板
  307. bid_div_block.id = '_51nbbl_div';
  308. bid_div_block.style.display = "none";
  309. var a=document.createElement("a");
  310. a.innerHTML='屏蔽';
  311. a.href='javascript:void(0)';
  312. a.addEventListener('click', bid_BlockUser,false);
  313. bid_div_block.appendChild(a);
  314. bid_div_block.addEventListener('mouseenter', function(e){clearTimeout(bid_BtnID);},false);
  315. bid_div_block.addEventListener('mouseleave', function(e){bid_BtnID=setTimeout("document.getElementById('_51nbbl_div').style.display='none';",500)},false);
  316. document.getElementsByTagName('body')[0].appendChild(bid_div_block);
  317. var bid_ccp = document.createElement("div"); //设置面板
  318. bid_ccp.id = "_51nbccp_div";
  319. bid_ccp.style.display = "none";
  320. bid_ccp.innerHTML =
  321. '<div style="position:relative;margin:0px auto;width:90%;height:55px;padding:10px 0px 0px;"><font size=3>51助手<sub><font color=#e7e7e7>&nbsp;&nbsp;ver 2.0</font></sub></font>'+
  322. '<div id="_bid_menu" style="position:absolute;bottom:0px;padding:10px 0px 0px;height:20px"><ul>'+
  323. '<li class="_c_menu"><a id="_bid_m1" hidefocus="true" href="javascript:void(0)">黑名单</a></li>'+
  324. '<li><a id="_bid_m2" hidefocus="true" href="javascript:void(0)">关键字</a></li>'+
  325. '<li><a id="_bid_m3" hidefocus="true" href="javascript:void(0)">其它</a></li>'+
  326. '</ul></div></div>'+
  327. '<div id="_51nb_setting1">'+
  328. '<table id="_bid_cc1">'+
  329. '<tr><td>屏蔽版块:</td></tr>'+
  330. '<tr><td>'+
  331. '<input id="_bid_blockForum88" type="checkbox" />联谊区'+
  332. '<input id="_bid_blockForum41" type="checkbox" />交易区'+
  333. '<input id="_bid_blockForumother" type="checkbox" />其它版块'+
  334. '</td></tr>'+
  335. '<tr><td>屏蔽内容:</td></tr>'+
  336. '<tr><td>'+
  337. '<input id="_bid_blockThread" type="checkbox" />主题贴'+
  338. '<input id="_bid_blockPost" type="checkbox" />回复'+
  339. '<input id="_bid_blockQuote" type="checkbox" />被引用'+
  340. '<input id="_bid_blockComment" type="checkbox" />点评'+
  341. '</td></tr>'+
  342. '<tr><td>黑名单:</td></tr>'+
  343. '<tr><td>'+
  344. '<select size="4" id="_bid_blacklist" multiple style="width:155px">'+
  345. '</select>'+
  346. '<div style="float:right;padding-left:2px;">'+
  347. '<input type="button" id="_bid_del" value="移 除" onclick="javascript:void(0)"/>'+
  348. '</div>'+
  349. '</td></tr>'+
  350. '</table></div>'+
  351. '<div id="_51nb_setting2">'+
  352. '<table id="_bid_cc2">'+
  353. '<tr><td colspan="2">'+
  354. '<input id="_bid_enablekw" type="checkbox" />启用主题关键字提醒'+
  355. '</td></tr>'+
  356. '<tr><td>版块:</td>'+
  357. '<td>'+
  358. '<select id="_bid_forum_list" style="height:17px;width:100px;padding:0px 0px">'+
  359. '<option value="1">技术区</option>'+
  360. '<option value="2">智能手机</option>'+
  361. '<option value="41">交易区</option>'+
  362. '<option value="88">联谊区</option>'+
  363. '<option value="113">推荐区</option>'+
  364. '</select>'+
  365. '</td></tr>'+
  366. '<tr><td>关键字:</td>'+
  367. '<td>'+
  368. '<input type="text" id="_bid_key" value="" style="width:100px;background:#fff"/>'+
  369. '&nbsp;<input type="button" id="_bid_kw_add" value="添 加" onclick="javascript:void(0)"/>'+
  370. '</td></tr>'+
  371. '<tr><td></td><td>(多个关键字用"|"隔开)</td></tr>'+
  372. '<tr><td colspan="2">关键字列表:</td></tr>'+
  373. '<tr><td colspan="2">'+
  374. '<select size="4" id="_bid_keyslist" multiple style="width:155px"></select>'+
  375. '<div style="float:right;padding-left:2px">'+
  376. '<input type="button" id="_bid_kw_modi" value="编 辑" onclick="javascript:void(0)"/><br/>'+
  377. '<input type="button" id="_bid_kw_del" value="移 除" onclick="javascript:void(0)"/>'+
  378. '</div>'+
  379. '</td></tr>'+
  380. '</table></div>'+
  381. '<div id="_51nb_setting3">'+
  382. '<table id="_bid_cc3">'+
  383. '<tr><td>'+'<input id="_bid_autoSign" type="checkbox" />自动签到'+'</td></tr>'+
  384. '<tr><td>'+'发贴小尾巴:'+'</td></tr>'+
  385. '<tr><td>'+'&nbsp;&nbsp;&nbsp;文字&nbsp;&nbsp;'+'<input type="text" id="_bid_wb_text" value="" style="width:120px;background:#fff"/>'+'</td></tr>'+
  386. '<tr><td>'+'&nbsp;&nbsp;&nbsp;链接&nbsp;&nbsp;'+'<input type="text" id="_bid_wb_link" value="" style="width:120px;background:#fff"/>'+'</td></tr>'+
  387. '</table></div>'+
  388. '<div style="padding:0px 0px 15px;">'+
  389. '<input type="button" id="_bid_ok" value="确 定" onclick="javascript:void(0)"/>'+
  390. '&nbsp;&nbsp;&nbsp;'+
  391. '<input type="button" id="_bid_cancel" value="取 消" onclick="javascript:void(0)"/>'+
  392. '</div>'
  393. ;
  394. document.getElementsByTagName('body')[0].appendChild(bid_ccp);
  395. document.getElementById('_51nb_setting2').style.display='none';
  396. document.getElementById('_51nb_setting3').style.display='none';
  397. document.getElementById('_bid_ok').addEventListener('click', function(){bid_SaveConfig(99);bid_SaveConfig(0);}, false);
  398. document.getElementById('_bid_cancel').addEventListener('click', function(){bid_SaveConfig(0);}, false);
  399. document.getElementById('_bid_del').addEventListener('click', function(){bid_delBidlist();}, false);
  400. document.getElementById('_bid_m1').addEventListener('click', function(){bid_menu(this.id);}, false);
  401. document.getElementById('_bid_m2').addEventListener('click', function(){bid_menu(this.id);}, false);
  402. document.getElementById('_bid_m3').addEventListener('click', function(){bid_menu(this.id);}, false);
  403. document.getElementById('_bid_kw_add').addEventListener('click', function(){bid_key_add();}, false);
  404. document.getElementById('_bid_kw_del').addEventListener('click', function(){bid_key_del();}, false);
  405. document.getElementById('_bid_kw_modi').addEventListener('click', function(){bid_key_modi();}, false);
  406. document.addEventListener('keydown', bid_keyHandle, false);
  407. bid_refreshCfgdiv();
  408. }
  409.  
  410. function bid_key_add() {
  411. var key=document.getElementById("_bid_key");
  412. if (key.value) {
  413. var fl = document.getElementById("_bid_forum_list");
  414. var kl = document.getElementById("_bid_keyslist");
  415. for (i=0;i<kl.options.length;i++){
  416. if (kl[i].value==fl[fl.selectedIndex].value) {
  417. kl[i].text='['+fl[fl.selectedIndex].text+']'+key.value;
  418. return;
  419. }
  420. }
  421. var o = document.createElement('option');
  422. o.value = fl[fl.selectedIndex].value;
  423. o.text = '['+fl[fl.selectedIndex].text+']'+key.value;
  424. o.title=o.text;
  425. kl.options[kl.options.length] = o;
  426. }
  427. }
  428.  
  429. function bid_key_modi() {
  430. var kl = document.getElementById("_bid_keyslist");
  431. if (kl.selectedIndex<0) return;
  432. var key=document.getElementById("_bid_key");
  433. var fl = document.getElementById("_bid_forum_list");
  434. for (i=0;i<fl.options.length;i++){
  435. if (fl[i].value==kl[kl.selectedIndex].value) {
  436. fl.selectedIndex=i;
  437. key.value=kl[kl.selectedIndex].text.substring(kl[kl.selectedIndex].text.indexOf(']')+1);
  438. break;
  439. }
  440. }
  441. }
  442.  
  443. function bid_key_del() {
  444. var kl = document.getElementById("_bid_keyslist");
  445. for (i=0;i<kl.options.length;i++) {
  446. if (kl.options[i].selected) {
  447. kl.options.remove(i--);
  448. }
  449. }
  450. }
  451.  
  452. function bid_SaveConfig(s) { //保存
  453. if (s>0) {
  454. if (s==1 || s==99) { //保存设置
  455. bid_Settings.blockThread = document.getElementById('_bid_blockThread').checked;
  456. bid_Settings.blockPost = document.getElementById('_bid_blockPost').checked;
  457. bid_Settings.blockQuote= document.getElementById('_bid_blockQuote').checked;
  458. bid_Settings.blockComment= document.getElementById('_bid_blockComment').checked;
  459.  
  460. bid_Settings.blockForum88 = document.getElementById('_bid_blockForum88').checked;
  461. bid_Settings.blockForum41 = document.getElementById('_bid_blockForum41').checked;
  462. bid_Settings.blockForumother = document.getElementById('_bid_blockForumother').checked;
  463.  
  464. bid_Settings.autoSign = document.getElementById('_bid_autoSign').checked;
  465. bid_Settings.enablekw = document.getElementById('_bid_enablekw').checked;
  466. bid_Settings.wb_text = document.getElementById('_bid_wb_text').value;
  467. bid_Settings.wb_link = document.getElementById('_bid_wb_link').value;
  468.  
  469. GM_setValue('51Asst_Settings_' + bid_uid, JSON.stringify(bid_Settings));
  470. }
  471. if (s==2 || s==99) { //保存黑名单
  472. bid_BlackLists.blacklist.length = 0;
  473. var bl = document.getElementById("_bid_blacklist");
  474. for ( i = 0; i<bl.options.length; i++) {
  475. bid_BlackLists.blacklist[i]=new Object();
  476. bid_BlackLists.blacklist[i].id=bl.options[i].value;
  477. bid_BlackLists.blacklist[i].name=bl.options[i].text;
  478. }
  479. GM_setValue('51Asst_BlackLists_' + bid_uid,JSON.stringify(bid_BlackLists));
  480. }
  481. if (s==3 || s==99) { //保存关键字
  482. var bl = document.getElementById("_bid_keyslist");
  483. for (j=0;j<bid_keywords.key.length;j++) {
  484. var keyexist=false;
  485. for (i = 0; i<bl.options.length; i++) {
  486. if (bid_keywords.key[j].fid==bl.options[i].value) {
  487. keyexist=true;
  488. break;
  489. }
  490. }
  491. if (!keyexist) {
  492. bid_keywords.key.splice(j--,1);
  493. }
  494. }
  495. for (i = 0; i<bl.options.length; i++) {
  496. var keyexist=false;
  497. for (j=0;j<bid_keywords.key.length;j++) {
  498. if (bid_keywords.key[j].fid==bl.options[i].value) {
  499. bid_keywords.key[j].keyword=bl.options[i].text;
  500. keyexist=true;
  501. break;
  502. }
  503. }
  504. if (!keyexist) {
  505. bid_keywords.key[bid_keywords.key.length]=new Object();
  506. bid_keywords.key[bid_keywords.key.length-1].fid=parseInt(bl.options[i].value);
  507. bid_keywords.key[bid_keywords.key.length-1].keyword=bl.options[i].text;
  508. bid_keywords.key[bid_keywords.key.length-1].chktime=0;
  509. bid_keywords.key[bid_keywords.key.length-1].lastTid=0;
  510. }
  511. }
  512. GM_setValue('51Asst_keywords_' + bid_uid,JSON.stringify(bid_keywords));
  513. }
  514. if (s==1 || s==2) {
  515. bid_BlockList();
  516. bid_HideComments();
  517. }
  518. } else {
  519. document.getElementById('_51nbccp_div').style.display = (document.getElementById('_51nbccp_div').style.display == '')?'none':'';
  520. if (document.getElementById('_51nbccp_div').style.display == 'none') bid_refreshCfgdiv(); //刷新设置界面
  521. }
  522. }
  523.  
  524. function bid_refreshCfgdiv() { //刷新设置界面
  525. if (document.getElementById("_bid_blacklist").options.length != bid_BlackLists.blacklist.length) bid_addBidlist();
  526.  
  527. document.getElementById('_bid_blockThread').checked = bid_Settings.blockThread;
  528. document.getElementById('_bid_blockPost').checked = bid_Settings.blockPost;
  529. document.getElementById('_bid_blockQuote').checked = bid_Settings.blockQuote;
  530. document.getElementById('_bid_blockComment').checked = bid_Settings.blockComment;
  531. document.getElementById('_bid_blockForum88').checked = bid_Settings.blockForum88;
  532. document.getElementById('_bid_blockForum41').checked = bid_Settings.blockForum41;
  533. document.getElementById('_bid_blockForumother').checked = bid_Settings.blockForumother;
  534. document.getElementById('_bid_enablekw').checked = bid_Settings.enablekw;
  535. document.getElementById('_bid_wb_text').value = bid_Settings.wb_text?bid_Settings.wb_text:'';
  536. document.getElementById('_bid_wb_link').value = bid_Settings.wb_link?bid_Settings.wb_link:'';
  537. if (bid_uid) {
  538. document.getElementById('_bid_autoSign').checked = bid_Settings.autoSign;
  539. document.getElementById('_bid_autoSign').disabled = false;
  540. } else {
  541. document.getElementById('_bid_autoSign').checked = false;
  542. document.getElementById('_bid_autoSign').disabled = true;
  543. }
  544. var kl = document.getElementById("_bid_keyslist");
  545. for (i=0;i<bid_keywords.key.length;i++) {
  546. var o=document.createElement('option');
  547. o.value=bid_keywords.key[i].fid;
  548. o.text=bid_keywords.key[i].keyword;
  549. o.title=o.text;
  550. kl.options[i]=o;
  551. }
  552. }
  553.  
  554. function bid_addBidlist(id,nm) { //刷新新黑名单列表
  555. var bl = document.getElementById("_bid_blacklist");
  556. if (id !=undefined) { //id非空时增加一个名单
  557. var o = document.createElement('option');
  558. o.value = id;
  559. o.text = nm;
  560. bl.options[bl.options.length] = o;
  561. } else { //id为空时刷新列表
  562. bl.options.length = 0;
  563. for ( i = 0; i<bid_BlackLists.blacklist.length; i++) {
  564. var o = document.createElement('option');
  565. o.value = bid_BlackLists.blacklist[i].id;
  566. o.text = bid_BlackLists.blacklist[i].name;
  567. bl.options[bl.options.length] = o;
  568. }
  569. }
  570. }
  571.  
  572. function bid_delBidlist() { //删除黑名单列表选中的名单
  573. var bl = document.getElementById("_bid_blacklist");
  574. for (i=0;i<bl.options.length;i++) {
  575. if (bl.options[i].selected) {
  576. bl.options.remove(i--);
  577. }
  578. }
  579. }
  580.  
  581. function bid_keyHandle(e) { //热键回调函数
  582. if (/^(?:input|textarea)$/i.test(e.target.localName)) return;
  583. var keycom = e.ctrlKey? '1':'0';
  584. keycom += (e.metaKey || e.altKey)? '1':'0';
  585. keycom += e.shiftKey? '1':'0';
  586. keycom += String.fromCharCode(e.which);
  587. if (keycom=='010N') {
  588. e.preventDefault();e.stopPropagation();bid_SaveConfig(0);
  589. }
  590. }
  591.  
  592. function bid_sign() {
  593. if (bid_Settings.autoSign && (!bid_signed) && (bid_formhash)) {
  594. var d = new Date();
  595. if ((d.getHours()*60 + d.getMinutes()) < 10) return; //0点10分以后才开始签到
  596. var http = new XMLHttpRequest();
  597. var url = 'bank.php?action=getdailybonus';
  598. var data = 'formhash=' + bid_formhash + '&dailysubmit=yes';
  599. http.onreadystatechange=function() {
  600. if (http.readyState==4 && http.status==200) { // 200 = http OK
  601. if (http.responseText.indexOf('report.php?action=listbonus') > -1) { //签到成功
  602. bid_signed = true;
  603. bid_Settings.lastSignDate = d.toDateString();
  604. bid_SaveConfig(1);
  605. var reg=new RegExp(/^<br>.*\(<font color="red"><b>(\d+)<\/b><\/font>\)nb = .*/gm);
  606. if (reg.test(http.responseText)) {
  607. document.getElementById('_51nbgdb_div').innerHTML = '今日签到:+'+RegExp.$1+' NB';
  608. document.getElementById('_51nbgdb_div').style.display = '';
  609. setTimeout(function(){document.getElementById('_51nbgdb_div').style.display = 'none';}, 3000);
  610. }
  611. }
  612. }
  613. }
  614. http.open('POST', url, true);
  615. http.setRequestHeader("Referer","http://forum.51nb.com/bank.php?action=getdailybonus");
  616. http.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=gbk");
  617. http.overrideMimeType("text/html;charset=gbk");
  618. http.send(data);
  619. }
  620. }
  621.  
  622. function bid_search(i,p) {
  623. if (i >= bid_keywords.key.length || !bid_Settings.enablekw) return;
  624. var gt=parseInt((new Date()).getTime()/1000);
  625. var dt=gt - bid_keywords.key[i].chktime;
  626. dt=dt>259200?259200:dt; //只检测最近三天内的新主题
  627. if (dt > 30*60) { //两次检测间隔30分钟
  628. dt += 60;
  629. var http = new XMLHttpRequest();
  630. var sresult=document.getElementById('_51nbsr_div');
  631. var html='';
  632. var url = 'forumdisplay.php?fid='+bid_keywords.key[i].fid+'&filter='+dt+'&orderby=dateline&page='+p;
  633. http.onreadystatechange=function() {
  634. if (http.readyState==4 && http.status==200) { // 200 = http OK
  635. regstr='^<tr>.*<a class="p_pages">.*[\\d]+\\/([\\d]+).*';
  636. reg=RegExp(regstr,'mi');
  637. var MaxPage=reg.test(http.responseText)?parseInt(RegExp.$1):0;
  638. MaxPage=MaxPage>3?3:MaxPage; //最大读取3页
  639.  
  640. if (bid_keywords.key[i].fid==113) //处理推荐区
  641. var regstr='<tr>.*noBg.*<a.*href="viewthread\\.php\\?tid=(\\d+)&.*">(.*(?:' + bid_keywords.key[i].keyword.substring(bid_keywords.key[i].keyword.indexOf(']')+1) + ').*?)<[\\s\\S]*?<span>发布者:\\s*(.*?)\\s*</span>';
  642. else
  643. var regstr='<a.*href="viewthread\\.php\\?tid=(\\d+)&.*">(.*(?:' + bid_keywords.key[i].keyword.substring(bid_keywords.key[i].keyword.indexOf(']')+1) + ').*?)</a>[\\s\\S]*?<a.*href="profile-uid-\\d+\\.html">\\s*(.*?)\\s*</a>';
  644. var reg=RegExp(regstr,'gi');
  645. if (p==1) bid_Key_lastTid=bid_keywords.key[i].lastTid;
  646. while ((reg.exec(http.responseText)) != null) {
  647. if (bid_Key_lastTid < parseInt(RegExp.$1)) {
  648. var author=RegExp.$3.indexOf('<')>=0?RegExp.$3.substring(RegExp.$3.indexOf('>')+1,RegExp.$3.lastIndexOf('<')):RegExp.$3;
  649. if (bid_blacklistStr.indexOf('='+author+',')<0) {
  650. html += '<tr><td><a title="'+'【'+bid_keywords.key[i].keyword.substring(1,bid_keywords.key[i].keyword.indexOf(']'))+'】'+RegExp.$2+'【'+author+'】'+'" href="thread-' + RegExp.$1 + '-1-1.html" target="_blank">' + RegExp.$2 + '</a></td></tr>';
  651. }
  652. if (bid_keywords.key[i].lastTid < parseInt(RegExp.$1))
  653. bid_keywords.key[i].lastTid=parseInt(RegExp.$1);
  654. }
  655. }
  656. if (html) {
  657. if (sresult.innerHTML=='') {
  658. sresult.innerHTML='<div style="padding:2px;;color:#fff;background:#6666cc;font-weight:bold;text-align:center">感兴趣主题'+
  659. '<a href="javascript:void(0)" id="_bid_close" style="float:right;color:#fff;font-weight:normal;font-size: 10px;">关闭</a></div>'+
  660. '<div style="height:94px;overflow-y:scroll">'+
  661. '<table cellspacing="0" style="width:200px;table-layout:fixed">'+html+'</table>'+
  662. '</div>';
  663. } else {
  664. sresult.innerHTML=sresult.innerHTML.substring(0,sresult.innerHTML.indexOf('</table>'))+html+'</table>'+
  665. '</div>';
  666. }
  667. }
  668. if (p<MaxPage) {
  669. setTimeout(function(){bid_search(i,++p);},0);
  670. } else {
  671. bid_keywords.key[i].chktime=gt;
  672. if (i==bid_keywords.key.length-1) {
  673. if (sresult.innerHTML!='') {
  674. document.getElementById('_bid_close').addEventListener('click', function(){document.getElementById('_51nbsr_div').style.display='none';}, false);
  675. sresult.style.display = '';
  676. }
  677. GM_setValue('51Asst_keywords_' + bid_uid,JSON.stringify(bid_keywords));
  678. }
  679. setTimeout(function(){bid_search(++i,1);},0);
  680. }
  681. }
  682. }
  683. http.open('GET', url, true);
  684. http.setRequestHeader("Referer","http://forum.51nb.com/index.php");
  685. http.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=gbk");
  686. http.overrideMimeType("text/html;charset=gbk");
  687. http.send(null);
  688. } else {
  689. setTimeout(function(){bid_search(++i,1);},0);
  690. }
  691. }
  692.  
  693. function bid_getFormhash() {
  694. var s = bid_xpath('//a[starts-with(@href,"logging.php?action=logout")]');
  695. for (i = 0; i < s.snapshotLength; ++i) {
  696. var a = s.snapshotItem(i);
  697. if( a != undefined) {
  698. bid_formhash = a.href.substring(a.href.indexOf('formhash')+9, a.href.indexOf('formhash')+9+8);
  699. }
  700. }
  701. if (bid_formhash) {
  702. var s = bid_xpath('//div[@class="menu1"]/div[@class="maintable"]//span[@class="bold"]//a[starts-with(@href,"profile-uid-")]');
  703. for (i = 0; i < s.snapshotLength; ++i) {
  704. var a = s.snapshotItem(i);
  705. if( a != undefined) {
  706. bid_uid = a.href.substring(a.href.indexOf('uid')+4,a.href.indexOf('.html'));
  707. }
  708. }
  709. }
  710. if (!bid_uid) bid_uid = '';
  711. var s = bid_xpath('//div[@class="nav"]//a[2] | //div[@class="subtable nav"]//a[2]');
  712. for (i = 0; i < s.snapshotLength; ++i) {
  713. var a = s.snapshotItem(i);
  714. if( a != undefined) {
  715. bid_fid = a.href.substring(a.href.indexOf('forum-')+6,a.href.indexOf('-1.html'));
  716. }
  717. }
  718. }
  719.  
  720. function bid_addMessage() {
  721. var message='';
  722. if (bid_Settings.wb_text) {
  723. message='[size=1]'+bid_Settings.wb_text+'[/size]';
  724. message=bid_Settings.wb_link.search(/(?:^http:\/\/|^www\.).+/i)==0?'[url='+bid_Settings.wb_link+']'+message+'[/url]':message;
  725. }
  726. return message
  727. }
  728.  
  729. function bid_addCustom() {
  730. //console.log('submit');
  731. if ((this.id) && ((this.id == 'vfastpostform') || (this.id == 'postform'))) {
  732. var message=bid_addMessage();
  733. if (message && this.message.value.indexOf(message)<0)
  734. this.message.value = this.message.value+"\n\n"+message;
  735. }
  736. var formid=this.id?this.id:this.name;
  737. unsafeWindow.document.forms[formid]._submit();
  738. }
  739.  
  740. function bid_addCustom1() {
  741. //console.log('onsubmit');
  742. if (this.id == 'postform'){
  743. if (funcpost.apply(this)) {
  744. var message=bid_addMessage();
  745. if (message && this.message.value.indexOf(message)<0)
  746. this.message.value = this.message.value+"\n\n"+message;
  747. } else {
  748. return false;
  749. }
  750. }
  751. }
  752.  
  753. bid_getFormhash();
  754. bid_readConfig(); //读取设置参数
  755. bid_CreatConfigPanel(); //生成设置面板
  756. if (bid_VIEWTHREAD) {
  757. bid_AddBlockBtn();
  758. }
  759.  
  760. if(bid_FORUMDISPLAY || bid_VIEWTHREAD) {
  761. bid_BlockList(); //屏蔽黑名单
  762. window.onload = setTimeout(function(){bid_HideComments();},500);
  763. }
  764. window.onload = setTimeout(function(){bid_sign();},500); //自动签到
  765. bid_search(0,1); //关键字提醒
  766.  
  767. if (((bid_VIEWTHREAD) || (bid_POST)) && (document.forms['postform']) && (bid_Settings.wb_text)) { //添加发贴小尾巴
  768. var funcpost = document.forms['postform'].onsubmit;
  769. document.forms['postform'].onsubmit = bid_addCustom1;
  770. unsafeWindow.HTMLFormElement.prototype._submit=HTMLFormElement.prototype.submit; //greasemonkey用户脚本是在沙盒中运行的,改变外部对象属性时必须加unsafeWindow
  771. unsafeWindow.HTMLFormElement.prototype.submit=bid_addCustom;
  772. }
  773.  

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址