red list

世界是由各种各样的人组成的,当你拉黑某个沙雕,你也屏蔽了世界的一部分信息,世界也就变得不再完整。怎么办?拉红他!拉红之后,他依然会出现在你的视线里,但是会被标记,以提示这是你认为的一个沙雕。

  1. // ==UserScript==
  2. // @name red list
  3. // @namespace https://gf.qytechs.cn/zh-CN/scripts/388742-red-list
  4. // @version 0.2.7
  5. // @description 世界是由各种各样的人组成的,当你拉黑某个沙雕,你也屏蔽了世界的一部分信息,世界也就变得不再完整。怎么办?拉红他!拉红之后,他依然会出现在你的视线里,但是会被标记,以提示这是你认为的一个沙雕。
  6. // @author taxayd
  7. // @match *://*.v2ex.com/*
  8. // @grant GM_setValue
  9. // @grant GM_getValue
  10. // @grant GM_deleteValue
  11. // ==/UserScript==
  12.  
  13. (function() {
  14. 'use strict';
  15.  
  16. let username_in_infopage;
  17. let listName = 'red-list';
  18. let strlist = GM_getValue(listName, "");
  19. let redlist = strlist.split(';');
  20. let url = document.URL;
  21. let path = location.pathname
  22. let buttonName = 'redbutton';
  23.  
  24. // delete all
  25. //GM_deleteValue('red-list');console.log('list:' + GM_getValue('red-list', 'empty'));return;
  26.  
  27. function redthis() {
  28. let strlist = GM_getValue(listName, "");
  29. let redlist = strlist.split(';');
  30. // console.log('redlist:' + redlist, 'username_in_infopage:' + username_in_infopage, 'strlist:' + strlist);
  31. if (redlist.indexOf(username_in_infopage) >= 0) {
  32. GM_setValue(listName, strlist.replace(';' + username_in_infopage, ''));
  33. } else {
  34. GM_setValue(listName, strlist + ';' + username_in_infopage);
  35. }
  36. document.getElementById(buttonName).value = GM_getValue(listName, '').split(';').indexOf(username_in_infopage)>=0 ? 'Unred' : 'Red';
  37. // console.log('strlist:' + GM_getValue(listName, ""));
  38. }
  39.  
  40. if (path == '/' || path.startsWith('/go/') || path.startsWith('/tag/'))
  41. {
  42. // 首页及类首页
  43. let home_list = document.getElementsByClassName('topic_info');
  44. let len = home_list.length;
  45. for(let i=0; i<len; i++) {
  46. let username = path === '/' || path.startsWith('/tag/') ? home_list[i].children[2] : home_list[i].children[0];
  47. if (redlist.indexOf(username.innerText) >= 0) {
  48. // console.log('in red list: ' + username.innerText);
  49. home_list[i].parentElement.parentElement.parentElement.parentElement.parentElement.style = "background-image:url(https://i.loli.net/2019/06/09/5cfbebdfd083a19907.png);background-size:contain;";
  50. }
  51. }
  52. } else if (path.startsWith('/t/')) {
  53. // 帖子详情页
  54. let comments = document.getElementsByClassName('cell');
  55. let len = comments.length;
  56. for(let i=0; i<len; i++) {
  57. if (comments[i].id.substr(0, 2) != 'r_') {
  58. continue;
  59. }
  60. let username = comments[i].getElementsByTagName('strong')[0];
  61. if (redlist.indexOf(username.innerText) >= 0) {
  62. // console.log('in red list: ' + username.innerText);
  63. comments[i].style = "background-image:url(https://i.loli.net/2019/06/09/5cfbebdfd083a19907.png);background-size:contain;";
  64. }
  65. }
  66. } else if (path.startsWith('/member/')) {
  67. // 个人主页
  68. username_in_infopage = document.getElementsByTagName('h1')[0].innerText;
  69. // let button = document.getElementsByClassName('fr')[0];
  70. let button_container = document.getElementsByTagName('input')[1].parentElement;
  71. let red = document.createElement('input');
  72. red.setAttribute('type', 'button');
  73. red.setAttribute('id', buttonName);
  74. red.setAttribute('value', redlist.indexOf(username_in_infopage)>=0 ? 'Unred' : 'Red');
  75. red.setAttribute('class', 'super normal button');
  76. button_container.appendChild(red);
  77. document.getElementById(buttonName).onclick = redthis;
  78. }
  79. })();

QingJ © 2025

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