douban delete follower

add button to douban to delete follower

目前为 2018-11-01 提交的版本。查看 最新版本

  1. // ==UserScript==
  2. // @name douban delete follower
  3. // @namespace http://tampermonkey.net/
  4. // @version 0.3
  5. // @description add button to douban to delete follower
  6. // @author harryhare
  7. // @license GPL 3.0
  8. // @match https://www.douban.com/contacts/rlist**
  9. // @grant none
  10. // ==/UserScript==
  11.  
  12.  
  13. var i=0;
  14. var button;
  15. var ck="";
  16. var url_ban="/j/contact/addtoblacklist";
  17. var url_unban="/j/contact/unban";
  18.  
  19. //time delay
  20. var interval=2000;
  21. var interval_id;
  22.  
  23. var mode="serial";//do unfollow one by one
  24.  
  25. function getCookie(c_name)
  26. {
  27. if (document.cookie.length>0)
  28. {
  29. var c_start=document.cookie.indexOf(c_name + "=");
  30. if (c_start!=-1){
  31. c_start=c_start + c_name.length+1;
  32. var c_end=document.cookie.indexOf(";",c_start);
  33. if (c_end==-1) c_end=document.cookie.length;
  34. return unescape(document.cookie.substring(c_start,c_end));
  35. }
  36. }
  37. return "";
  38. }
  39.  
  40. var user_list=[];
  41. var name_map={};
  42. var node_map={};
  43. var href_map={};
  44. var button_list=[];
  45. var cur=0;
  46.  
  47. function prepare(){
  48. var userlist_nodes=document.querySelectorAll("div#wrapper div#content div.grid-16-8.clearfix ul.user-list li.clearfix");
  49. for(let i=0;i<userlist_nodes.length;i++){
  50. var t=userlist_nodes[i];
  51. var id=t.id.replace("u","");
  52. var name=t.childNodes[1].title;
  53. var href=t.childNodes[1].href;
  54. user_list.push(id);
  55. name_map[id]=name;
  56. node_map[id]=t;
  57. href_map[id]=href;
  58. var b=document.createElement('a');
  59. b.class="a-btn-add mr10 add_contact";
  60. b.id=id;
  61. b.innerHTML='取消对我的关注';
  62. b.onclick=click_unfollow;
  63. b.style="align:right;";
  64. button_list.push(b);
  65. var x=t.querySelector("div.info");
  66. x.append(b);
  67. }
  68. }
  69.  
  70. function click_unfollow(e){
  71. var id=e.target.id;
  72. var name=name_map[id];
  73. var node=node_map[id];
  74. var href=href_map[id];
  75. var asyn=true;
  76. if(asyn){
  77. ban(id,name,node,href,true);
  78. }else{
  79. ban(id,name,node,href,false);
  80. unban(id,name,node,href,false);
  81. after(id,name,node,href);
  82. }
  83. }
  84.  
  85. function do_ban_and_unban(){
  86. if(cur>=button_list.length){
  87. interval_id=window.clearInterval(interval_id);
  88. return;
  89. }
  90. button_list[cur].click();
  91.  
  92. cur++;
  93. }
  94.  
  95. function ban(userid,name,node,href,asyn) {
  96. var xmlhttp=new XMLHttpRequest();
  97. var url=url_ban;
  98. var data="people="+userid+"&ck="+ck;
  99. console.log('ban:',data);
  100. node.innerHTML="<a href='"+href+"'>正在ban:"+name+"</a>";
  101. xmlhttp.open("POST",url,asyn);
  102. xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
  103. if(asyn){
  104. xmlhttp.onreadystatechange=function(){
  105. if(xmlhttp.readyState == 4 && xmlhttp.status == 200 ) {
  106. unban(userid,name,node,asyn);
  107. }
  108. };
  109. }
  110. xmlhttp.send(data);
  111. }
  112.  
  113. function unban(userid,name,node,asyn){
  114. var xmlhttp=new XMLHttpRequest();
  115. var url=url_unban;
  116. var data="people="+userid+"&ck="+ck;
  117. console.log("ban success:"+data);
  118. console.log('unban:',data);
  119. node.children[0].innerHTML="正在unban:"+name;
  120. xmlhttp.open("POST",url,asyn);
  121. xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
  122. if(asyn){
  123. xmlhttp.onreadystatechange=function(){
  124. if(xmlhttp.readyState == 4 && xmlhttp.status == 200 ) {
  125. after(userid,name,node);
  126. }
  127. };
  128. }
  129. xmlhttp.send(data);
  130. }
  131.  
  132. function after(userid,name,node){
  133. console.log("unban success:"+userid);
  134. node.children[0].innerHTML="已取消"+name+"对你的关注";
  135. }
  136.  
  137. (function() {
  138. 'use strict';
  139. ck=getCookie("ck");
  140. var x=document.querySelector("div#wrapper div#content");
  141. var y1=document.querySelector("div#wrapper div#content h1");
  142. var y2=document.querySelector("div#wrapper div#content div.grid-16-8.clearfix");
  143. var userlist_container=document.querySelector("div#wrapper div#content div.grid-16-8.clearfix ul.user-list");
  144. if(!x || !y1 || !y2 ){
  145. return;
  146. }
  147. button=document.createElement('button');
  148. button.innerHTML='一键取消本页用户对我的关注';
  149. prepare();
  150. button.onclick=(e)=>{
  151. interval_id= window.setInterval(do_ban_and_unban,interval);
  152. };
  153. userlist_container.prepend(button);
  154. })();