Followed Douban User Status Blocker

Blocking Followed Douban User's Status (including reposts)

  1. // ==UserScript==
  2. // @name Followed Douban User Status Blocker
  3. // @namespace Zcc911
  4. // @version 0.5
  5. // @description Blocking Followed Douban User's Status (including reposts)
  6. // @author Zcc911
  7. // @match *://www.douban.com/*
  8. // @match *://www.douban.com/people/*
  9. // @copyright Zcc911
  10. // ==/UserScript==
  11.  
  12. var blocked_UID,
  13. blocked_USR;
  14.  
  15. // get blocking list
  16. function getBlocked(){
  17. blocked_UID = JSON.parse(localStorage.getItem('douban_blocked_UID')) || [];
  18. blocked_USR = JSON.parse(localStorage.getItem('douban_blocked_USR')) || [];
  19. }
  20. getBlocked();
  21.  
  22. if(window.location.pathname === "/"){ // masking user posts/reposts on douban homepage via blocking list
  23. console.log("当前屏蔽的用户ID:", blocked_UID);
  24. console.log("当前屏蔽的用户昵称:", blocked_USR);
  25. var ids_blocked = new RegExp(blocked_UID.join('|'));
  26. usr_blocked = new RegExp(blocked_USR.join('|'));
  27. $(".status-wrapper").each(function(index){ // "this" directly points to DOM object in each method
  28. if (!blocked_UID.length || !blocked_USR.length) { return false; }
  29. var resharer = this.querySelector(".reshared_by > a"),
  30. usrname = resharer.title ? resharer.title : "";
  31. if (this.dataset.uid.match(ids_blocked) || usrname.match(usr_blocked)) { // block the posts/reposts
  32. this.style.display = "none";
  33. }
  34. });
  35. }else{ // modify blocking list on user homepage
  36. var blockStatus = $('.user-opt .user-group'),
  37. listEle = $('.more-opt .user-group-list');
  38. if (!listEle.length) { return false; }
  39. var usrid = people_info.id, // is this method stable?
  40. usrname = people_info.name;
  41. if (blocked_UID.filter(function (num, nickname) {
  42. nickname = usrname;
  43. return num == usrid;
  44. }).length) { // user already blocked
  45. blockStatus.append('<span class="user-rs" class="red">已屏蔽</span>');
  46. listEle.prepend('<li><a href="javascript:;" class="cancel-block">取消屏蔽</a></li>');
  47. } else {
  48. blockStatus.append('<span class="user-rs">未屏蔽</span>');
  49. listEle.prepend($('<li><a href="javascript:;" class="block-status">屏蔽广播</a></li>'));
  50. }
  51. listEle.delegate('.cancel-block', 'click', function () { // event delegation, listening on block canceling event
  52. getBlocked();
  53. blocked_UID = blocked_UID.filter(function (num) {
  54. return usrid != num;
  55. });
  56. blocked_USR = blocked_USR.filter(function (nickname) {
  57. return usrname != nickname;
  58. });
  59. localStorage.setItem('douban_blocked_UID', JSON.stringify(blocked_UID));
  60. localStorage.setItem('douban_blocked_USR', JSON.stringify(blocked_USR));
  61. $(this).removeClass('cancel-block').addClass('block-status').text('屏蔽广播');
  62. blockStatus.children().last().removeAttr("style").html("未屏蔽");
  63. console.log("当前屏蔽用户列表:", blocked_USR);
  64. })
  65. .delegate('.block-status', 'click', function () { // event delegation, listening on block event
  66. getBlocked();
  67. blocked_UID.push(parseInt(usrid, 10));
  68. blocked_USR.push(usrname);
  69. localStorage.setItem('douban_blocked_UID', JSON.stringify(blocked_UID));
  70. localStorage.setItem('douban_blocked_USR', JSON.stringify(blocked_USR));
  71. $(this).removeClass('block-status').addClass('cancel-block').text('取消屏蔽');
  72. blockStatus.children().last().css("color", "red").html("已屏蔽");
  73. console.log("当前屏蔽用户列表:", blocked_USR);
  74. });
  75. }

QingJ © 2025

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