Facebook
From Onur Özkır, 3 Years ago, written in JavaScript.
This paste is a reply to Untitled from Unique Panda - go back
Embed
Viewing differences between Untitled and Added Buton Name language

var followButtonInnerHTML = {
  'en' : 'Following',
  'tr' : 'Takiptesin'
}


openFollowersWindow().then(function () {

    populateUnfollowsPool();

    digestUnfollowsPool();

});

});


function openFollowersWindow() {

    var onFollowersWindowWasOpenedListeners = [];

    var openWindowTimeout = 3000;




3000;


    var followersElement = getFollowersElement();

getFollowersElement();
  

    followersElement.click();




click();



    function digestOnFollowersWindowWasOpenedListeners() {

        onFollowersWindowWasOpenedListeners.forEach(function (onFollowersWindowWasOpenedListener) {

            onFollowersWindowWasOpenedListener();

        });

    }

    var wasOpened;

    setTimeout(function () {

        // TODO Verify that the window was indeed opened

        wasOpened = true;

        digestOnFollowersWindowWasOpenedListeners();

    }, openWindowTimeout);

    return {

        then: function (onFollowersWindowWasOpened) {

            if (wasOpened) {

                onFollowersWindowWasOpened();

            } else {

                onFollowersWindowWasOpenedListeners.push(onFollowersWindowWasOpened);

            }

        }

    };

}

function getFollowersElement() {

    return getFollowersElementWithUsername(getUsername());

}

function getUsername() {

    var pageTitleElement = document.getElementsByTagName('h1')[0];

    if (!pageTitleElement) throw new Error('No title to get username from');

    return pageTitleElement.innerHTML;

}

function getFollowersElementWithUsername(username) {



    var followersElement = document.querySelectorAll('a[href="/' + username + '/following/"]')[0];

getElementsByClassName('-nal3 ')[0]; 

    if (!followersElement) throw new Error('No followers element was found');

    return followersElement;

}

var unfollowsPool;

function populateUnfollowsPool() {


    var buttons = document.getElementsByTagName('button');

getElementsByClassName('isgrP')[0].querySelectorAll('button');    

    unfollowsPool = [];

    for (var i = 0; i < buttons.length; i++) {

        var button = buttons[i];

        if (button.innerHTML.includes('Following')) includes(followButtonInnerHTML[window.navigator.language || 'en'])) {

            var randomTimeoutForUnfollow = Math.floor((Math.random() * 10) + 1) * 1000;

            console.log('Following button!');

            var unfollow = {

                buttonElement: button,

                timeout: randomTimeoutForUnfollow

            };

            unfollowsPool.push(unfollow);

        }

}
    }



}

function digestUnfollowsPool() {

    if (unfollowsPool.length === 0) {

        console.log('Unfollow pool empty, repopulating');

        populateUnfollowsPool();

    }

}
 
    var unfollow = unfollowsPool.shift();

shift(); 

    var unfollowTimeout = unfollow.unfollowTimeout.timeout;

    console.log('Clicking unfollow button in ', unfollowTimeout);

    setTimeout(function () {

        var unfollowButtonElement = unfollow.buttonElement;

        unfollowButtonElement.scrollIntoView(true);

        console.log('Clicking unfollow button');

        
scrollIntoView(true);
   
              
unfollowButtonElement.click();

        console.log('Clicked. Continuing digesting unfollow pool');

        digestUnfollowsPool();

    }, 
click();
      
              var stopFollowingButton = document.getElementsByClassName('aOOlW -Cab_   ')[0];
      
              setTimeout(function(){ 
                if(stopFollowingButton) {
                           stopFollowingButton.click();
                }
     
                setTimeout(function(){
                     digestUnfollowsPool();
                },unfollowTimeout / 2)
              
              },unfollowTimeout / 2)

 }, 
unfollowTimeout);

}