Twitterがインプレゾンビで荒れ果ててて手動でのスパム報告が追いつかなくなってきたので、Google Chrome前提でスパム報告を自動化する方法をちょっと書いておきます。悪用しないで良い方向に使ってください。
// sleep は https://qiita.com/teloppy_com/items/cd483807813af5a4a38aより
const sleep = (time) => new Promise((resolve) => setTimeout(resolve, time));
function randrange(min = 500, max = 1000) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
async function block(n){
document.querySelectorAll('button[data-testid="caret"]')[n].click();
await sleep(randrange());
document.querySelectorAll('div[data-testid="report"]')[0].click();
await sleep(randrange());
document.querySelectorAll('input[aria-posinset="6"]')[0].click();
await sleep(randrange());
document.querySelectorAll('button[data-testid="ChoiceSelectionNextButton"]')[0].click();
await sleep(randrange());
document.querySelectorAll('button[role="button"]')[1].click();
}
// block(0);
async function block_spams(){
var tweets = Array.from(document.querySelectorAll('article[data-testid="tweet"]')).map(i => i.innerText);
for(i in tweets) if (tweets[i].includes("BSS11") && tweets[i].includes("CX10")) await block(i);
}
block_spams();
なおこのスクリプトは途中でスパム報告が効かなくなって止まるので大した効力は無いかもしれません。完全に自動化するにはサブウインドウなりSeleniumなりでリロードを挟めば良いのですが、今回はここに留めておくことにします。
追記: 途中で止まるのはレートリミットだったようです。時間をmin=5000, max=6000にしたところ止まらずに動きました。なおツイートリストの更新をどうするかはまだ未定です。