michael_hartman_cz

Remove all members from Facebook group

Jun 13th, 2016
598
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. //run this script on page with group members list
  2. //on chrome press f12 and copy paste the script, then press enter
  3. //original script https://gist.github.com/michaelv/11145168
  4.  
  5. var deleteAllGroupMembers = (function () {
  6.     var excludedFbNames = [ 'Name Surname', 'Name2 Surname2' ];
  7.     var deleteAllGroupMembers = {};
  8.     var usersToDeleteQueue = [];
  9.     var scriptEnabled = false;
  10.     var processing = false;
  11.  
  12.     deleteAllGroupMembers.start = function() {
  13.         scriptEnabled = true;
  14.         deleteAll();
  15.     };
  16.     deleteAllGroupMembers.stop = function() {
  17.         scriptEnabled = false;
  18.     };
  19.  
  20.     function deleteAll() {
  21.         if (scriptEnabled) {
  22.             queueMembersToDelete();
  23.             processQueue();
  24.         }
  25.     }
  26.  
  27.     function queueMembersToDelete() {
  28.         var adminActions = document.getElementsByClassName('adminActions');
  29.         for(var i=0; i<adminActions.length; i++) {
  30.             var gearWheelIconDiv = adminActions[i];
  31.             var hyperlinksInAdminDialog = gearWheelIconDiv.getElementsByTagName('a');
  32.             var fbMemberId = gearWheelIconDiv.parentNode.parentNode.id.replace('member_','');
  33.             var fbMemberName = getTextFromElement(gearWheelIconDiv.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.getElementsByClassName('fcb')[0]);
  34.  
  35.             if (excludedFbNames.indexOf(fbMemberName) != -1) {
  36.                 console.log("SKIPPING " + fbMemberName );
  37.                 continue;
  38.             } else {
  39.                 usersToDeleteQueue.push({'memberId': fbMemberId, 'gearWheelIconDiv': gearWheelIconDiv});
  40.             }
  41.         }
  42.     }
  43.  
  44.     function processQueue() {
  45.         if (!scriptEnabled) {
  46.             return;
  47.         }
  48.         if (usersToDeleteQueue.length > 0) {
  49.             removeNext();
  50.  
  51.             setTimeout(function(){
  52.                 processQueue();
  53.             },1000);
  54.         } else {
  55.             getMore();
  56.         }
  57.     }
  58.  
  59.     function removeNext() {
  60.         if (!scriptEnabled) {
  61.             return;
  62.         }
  63.         if (usersToDeleteQueue.length > 0) {
  64.             var nextElement = usersToDeleteQueue.pop();
  65.             removeMember(nextElement.memberId, nextElement.gearWheelIconDiv);
  66.         }
  67.     }
  68.  
  69.     function removeMember(memberId, gearWheelIconDiv) {
  70.         if (processing) {
  71.             return;
  72.         }
  73.         var gearWheelHref = gearWheelIconDiv.getElementsByTagName('a')[0];
  74.         gearWheelHref.click();
  75.         processing = true;
  76.         setTimeout(function(){
  77.             var popupRef = gearWheelHref.id;
  78.             var popupDiv = getElementByAttribute('data-ownerid',popupRef);
  79.             var popupLinks = popupDiv.getElementsByTagName('a');
  80.             for(var j=0; j<popupLinks.length; j++) {
  81.                 if (popupLinks[j].getAttribute('href').indexOf('remove.php') !== -1) {
  82.                     // this is the remove link
  83.                     popupLinks[j].click();
  84.                     setTimeout(function(){
  85.                         var confirmButton = document.getElementsByClassName('layerConfirm uiOverlayButton selected')[0];
  86.                         var errorDialog = getElementByAttribute('data-reactid','.4.0');
  87.                         if (confirmButton != null) {
  88.                             if (canClick(confirmButton)) {
  89.                                 confirmButton.click();
  90.                             } else {
  91.                                 console.log('This should not happen memberid: '+memberId);
  92.                                 5/0;
  93.                                 console.log(gearWheelIconDiv);
  94.                             }
  95.                         }
  96.                         if (errorDialog != null) {
  97.                             console.log("Error while removing member "+memberId);
  98.                             errorDialog.getElementsByClassName('selected  layerCancel autofocus')[0].click();
  99.                         }
  100.                         processing = false;
  101.                     },700);
  102.                     continue;
  103.                 }
  104.             }
  105.         },500);
  106.     }
  107.  
  108.     function canClick(el) {
  109.         return (typeof el != 'undefined') && (typeof el.click != 'undefined');
  110.     }
  111.  
  112.     function getMore() {
  113.         processing = true;
  114.         more = document.getElementsByClassName("pam uiBoxLightblue  uiMorePagerPrimary");
  115.         if (typeof more != 'undefined' && canClick(more[0])) {
  116.             more[0].click();
  117.             setTimeout(function(){
  118.                 deleteAll();
  119.                 processing = false;
  120.            }, 2000);
  121.         } else {
  122.             deleteAllGroupMembers.stop();
  123.         }
  124.     }
  125.  
  126.     function getTextFromElement(element) {
  127.         var text = element.textContent;
  128.         return text;
  129.     }
  130.  
  131.     function getElementByAttribute(attr, value, root) {
  132.         root = root || document.body;
  133.         if(root.hasAttribute(attr) && root.getAttribute(attr) == value) {
  134.             return root;
  135.         }
  136.         var children = root.children,
  137.             element;
  138.         for(var i = children.length; i--; ) {
  139.             element = getElementByAttribute(attr, value, children[i]);
  140.             if(element) {
  141.                 return element;
  142.             }
  143.         }
  144.         return null;
  145.     }
  146.     return deleteAllGroupMembers;
  147. })();
  148. deleteAllGroupMembers.start();
  149.  
  150. // stop the script by entering this in the console: deleteAllGroupMembers.stop();
Advertisement
Add Comment
Please, Sign In to add comment