scratch-utils/unfollow_all.js

53 lines
1.4 KiB
JavaScript
Raw Normal View History

2024-09-30 05:25:43 -04:00
let tree = [], the, user = '08draven', gek = 0, spamTimeout = 0;
function getCookie(name) {
const value = `; ${document.cookie}`;
const parts = value.split(`; ${name}=`);
if (parts.length === 2) return parts.pop().split(';').shift();
}
async function downloadUser(user) {
for (let i = 0; ; i++) {
2024-09-30 05:26:50 -04:00
let fetchReq = await fetch(`https://api.scratch.mit.edu/users/${user}/following/?limit=40&offset=${i * 40}`);
2024-09-30 05:25:43 -04:00
let fetchJson = await fetchReq.json();
if (fetchJson.length < 1) break;
tree = [...tree, ...fetchJson];
}
}
async function unfollowUser(user) {
if (spamTimeout > 0) {
spamTimeout--;
return;
}
if (the = tree[gek]) {
the = the.username;
e = await fetch(`https://scratch.mit.edu/site-api/users/followers/${the}/remove/?usernames=${user}`, {
"method": "PUT",
2024-09-30 05:31:55 -04:00
"body": "{}",
2024-09-30 05:25:43 -04:00
"headers": {
"x-csrftoken": getCookie('scratchcsrftoken')
}
});
2024-09-30 05:31:55 -04:00
e = await e.text();
try {
e = JSON.parse(e);
} catch (err) {
e = {};
}
2024-09-30 05:25:43 -04:00
console.log(e);
if (e.success) {
gek++;
} else {
spamTimeout = 20;
}
} else {
console.log("end");
}
}
await downloadUser(user);
setInterval(function () {
unfollowUser(user)
}, 500)