47 lines
1.2 KiB
JavaScript
47 lines
1.2 KiB
JavaScript
|
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++) {
|
||
|
let fetchReq = await fetch(`https://api.scratch.mit.edu/users/${user}/followers/?limit=40&offset=${i * 40}`);
|
||
|
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",
|
||
|
"headers": {
|
||
|
"x-csrftoken": getCookie('scratchcsrftoken')
|
||
|
}
|
||
|
});
|
||
|
e = await e.json();
|
||
|
console.log(e);
|
||
|
if (e.success) {
|
||
|
gek++;
|
||
|
} else {
|
||
|
spamTimeout = 20;
|
||
|
}
|
||
|
} else {
|
||
|
console.log("end");
|
||
|
}
|
||
|
}
|
||
|
|
||
|
await downloadUser(user);
|
||
|
|
||
|
setInterval(function () {
|
||
|
unfollowUser(user)
|
||
|
}, 500)
|