Instagram like deleter

Deletes ALL of your likes

// ==UserScript==
// @name         Instagram like deleter
// @namespace    greaseyfork_insta_like_del
// @version      2024-01-07.2
// @description  Deletes ALL of your likes
// @author       Dr. Ligma
// @include      /^https://www\.instagram\.com/your_activity/interactions/likes/?/
// @icon         https://www.google.com/s2/favicons?sz=64&domain=instagram.com
// @grant        none
// @license      MIT
// ==/UserScript==

// Limitations:
// Instagram limits the amount of unlikes you can do to per time interval (12h to 2d)
// When you start getting error messages, try again later.

// WARNING:
// THIS WILL IMMEDIATELY START DELETING YOUR LIKES ON INSTAGRAM
// THE SCRIPT WILL RUN AS SOON AS YOU VISIT THE FOLLOWING PAGE:
// https://www.instagram.com/your_activity/interactions/likes
// BE ABSOLUTELY SURE YOU WANT THIS!!!

// Troubleshooting:
// The script relies heavily on setTimeouts for the scripts flow, it is dumb and doesn't check if elements exist.
// If you have issues or a slow connection, play around with the timeout values
// (big number good)
//
// By default does 10 unlikes per refresh of the page, you can change that yourself, but know that if you too many,
// Instagram will rate limit you and you have to wait before trying again.

(function() {
    'use strict';

    // Click on the "Select" button to reveal the comment selection box
    setTimeout(function() {

        var select = document.querySelectorAll("div[data-testid=liked_container_non_empty_state] span")[2]
        select.click()

        // Randomly click comments to select them, this is needed for it to work, selecting them all in one go doesn't work for unknown reasons
        setTimeout(function() {

            var divs = document.querySelectorAll("div[data-testid=bulk_action_checkbox]")

            function getRandomInt(max) {
                return Math.floor(Math.random() * max);
            }

            function getRandomSample(array, size) {
                var length = array.length;

                for(var i = size; i--;) {
                    var index = getRandomInt(length);
                    var temp = array[index];
                    array[index] = array[i];
                    array[i] = temp;
                }

                return array.slice(0, size);
            }

            getRandomSample(Array.from(divs), 10).forEach(function(e) { // Limit to 10 at a time
                setTimeout(function() {
                    e.click()
                }, getRandomInt(3000))
            })

            // Click the Delete button on the bottom of the page
            setTimeout(function() {
                var delbutton = document.querySelectorAll("div[aria-label=Unlike]")[0]
                delbutton.click()

                // Click the Delete button on the popup dialog
                setTimeout(function () {
                    var deldialog = document.querySelectorAll("div[role=dialog] button")[0]
                    deldialog.click()

                    // Reload the page when done to process the next batch
                    setTimeout(function () {
                        location.reload()
                    }, 2000)

                }, 1000)

            }, 5000)

        }, 250)

    }, 6000)

})();