empty the blacklist

一键清空黑名单

  1. // ==UserScript==
  2. // @name empty the blacklist
  3. // @namespace https://github.com/harryhare/
  4. // @version 0.0.2
  5. // @description 一键清空黑名单
  6. // @author harryhare
  7. // @license GPL 3.0
  8. // @icon https://raw.githubusercontent.com/harryhare/userscript/master/index.png
  9. // @match https://www.douban.com/contacts/blacklist**
  10. // @grant none
  11. // ==/UserScript==
  12.  
  13. let interval = 2000;
  14.  
  15. function makeRequest(url) {
  16. return new Promise(function (resolve, reject) {
  17. let xhr = new XMLHttpRequest();
  18. console.log(url);
  19. xhr.open("GET", url);
  20. xhr.onload = function () {
  21. if (this.status === 200) {
  22. resolve(xhr.response);
  23. } else {
  24. reject({
  25. status: this.status,
  26. statusText: xhr.statusText
  27. });
  28. }
  29. };
  30. xhr.onerror = function () {
  31. reject({
  32. status: this.status,
  33. statusText: xhr.statusText
  34. });
  35. };
  36. xhr.send();
  37. });
  38. }
  39.  
  40. function sleep(ms) {
  41. return new Promise(resolve => setTimeout(resolve, ms));
  42. }
  43.  
  44.  
  45. async function clean_page(e) {
  46. let url = "https://www.douban.com/contacts/blacklist";
  47. let response = await makeRequest(url);
  48. let parser = new window.DOMParser();
  49. let xmlDoc = parser.parseFromString(response, "text/html");
  50. let items = xmlDoc.querySelectorAll("a.j.a_confirm_link");
  51. console.log(items);
  52. let str = e.target.innerHTML;
  53. for (let i = 0; i < items.length; i++) {
  54. let item = items[i];
  55. let url0 = item.href + "&start=99999";
  56. await makeRequest(url0);
  57. e.target.innerHTML = `${str}, 该页已完成 ${i + 1}/${items.length}`;
  58. await sleep(interval);
  59. }
  60. return items.length;
  61. }
  62.  
  63. async function clean_all(e) {
  64. let i = 0;
  65. while (true) {
  66. i++;
  67. e.target.innerHTML = `正在清空第 ${i} 页`;
  68. let n = await clean_page(e);
  69. if (n && n > 0) {
  70. console.log(n);
  71. await sleep(interval);
  72. continue;
  73. }
  74. break;
  75. }
  76. e.target.innerHTML = `黑名单已清空`;
  77. window.location="https://www.douban.com/contacts/blacklist";
  78. }
  79.  
  80. (function () {
  81. 'use strict';
  82. let div = document.querySelector("div.aside");
  83. let p = document.createElement('p');
  84. let a = document.createElement('a');
  85. a.onclick = clean_all;
  86. a.innerHTML = "清空黑名单";
  87. p.innerHTML = "> ";
  88. p.append(a);
  89. div.insertBefore(p, div.querySelector("h2"));
  90. })();

QingJ © 2025

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