RemoveInstagramUnfollowers icon indicating copy to clipboard operation
RemoveInstagramUnfollowers copied to clipboard

Cant I just unfollow my whole list?

Open ReloxDev opened this issue 9 months ago • 1 comments

Like without selecting users, just a script to unfollow everyone I followed? Cant you code a script for that too?

ReloxDev avatar May 11 '24 09:05 ReloxDev

Hi! The following code is a modification of the original repo owner's code such that it gets a JSON of everyone followed. Code has also been deobfuscated for readability.

function getCookie(name) {
    let cookieArr = document.cookie.split(";");
    for (let i = 0; i < cookieArr.length; i++) {
        let cookiePair = cookieArr[i].split("=");
        if (name == cookiePair[0].trim()) {
            return decodeURIComponent(cookiePair[1]);
        }
    }
    return null;
}

function sleep(ms) {
    return new Promise(resolve => setTimeout(resolve, ms));
}

function afterUrlGenerator(after) {
    return `https://www.instagram.com/graphql/query/?query_hash=3dec7e2c57367ef3da3d987d89f9dbc8&variables={"id":"${ds_user_id}","include_reel":"true","fetch_mutual":"false","first":"24","after":"${after}"}`;
}

let followedPeople = [],
    csrftoken = getCookie("csrftoken"),
    ds_user_id = getCookie("ds_user_id"),
    initialURL = `https://www.instagram.com/graphql/query/?query_hash=3dec7e2c57367ef3da3d987d89f9dbc8&variables={"id":"${ds_user_id}","include_reel":"true","fetch_mutual":"false","first":"24"}`,
    doNext = true,
    totalFollowing = 0,
    getFollowCounter = 0,
    scrollCicle = 0;

async function startScript() {
    while (doNext) {
        let response;
        try {
            response = await fetch(initialURL).then(response => response.json());
        } catch (error) {
            continue;
        }

        if (totalFollowing === 0) {
            totalFollowing = response.data.user.edge_follow.count;
        }

        let edges = response.data.user.edge_follow.edges;
        followedPeople.push(...edges.map(edge => edge.node));

        doNext = response.data.user.edge_follow.page_info.has_next_page;
        initialURL = afterUrlGenerator(response.data.user.edge_follow.page_info.end_cursor);

        getFollowCounter += edges.length;

        console.clear();
        console.log(`%c Progress ${getFollowCounter}/${totalFollowing} (${parseInt(100 * (getFollowCounter / totalFollowing))}%)`, "background: #222; color: #bada55;font-size: 35px;");
        console.log("%c List of users you are following (Still in progress)", "background: #222; color: #FC4119;font-size: 13px;");
        followedPeople.forEach(user => console.log(user.username));

        await sleep(Math.floor(400 * Math.random()) + 1000);
        scrollCicle++;
        if (scrollCicle > 6) {
            scrollCicle = 0;
            console.log("%c Sleeping 10 secs to prevent getting temp blocked", "background: #222; color: #FF0000;font-size: 35px;");
            await sleep(10000);
        }
    }

    let jsonContent = JSON.stringify(followedPeople),
        fileName = "followingUsers.json",
        fileType = "application/json",
        link = document.createElement("a"),
        blob = new Blob([jsonContent], { type: fileType });

    link.href = URL.createObjectURL(blob);
    link.download = fileName;
    link.click();

    console.log("%c All DONE!", "background: #222; color: #bada55;font-size: 25px;");
}

startScript();```