Facebook
From Corrupt Penguin, 2 Years ago, written in Plain Text.
This paste is a reply to Untitled from Unique Panda - go back
Embed
Viewing differences between Untitled and Re: Untitled
openFollowersWindow().then(function () {

    populateUnfollowsPool();

    digestUnfollowsPool();

});

function openFollowersWindow() {

    var onFollowersWindowWasOpenedListeners = [];

    var openWindowTimeout = 3000;




    var followersElement = getFollowersElement();

    followersElement.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];

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

    return followersElement;

}

var unfollowsPool;

function populateUnfollowsPool() {

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

    unfollowsPool = [];

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

        var button = buttons[i];

        if (button.innerHTML.includes('Following')) {

            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();

    var unfollowTimeout = unfollow.timeout;

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

    setTimeout(function () {

        var unfollowButtonElement = unfollow.buttonElement;

        unfollowButtonElement.scrollIntoView(true);

        console.log('Clicking unfollow button');

        unfollowButtonElement.click();

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

        digestUnfollowsPool();

    }, unfollowTimeout);

}