コード
追記
アプデしてblacklistとwhitelistを追加しました。
追記ココまで
var page = require('webpage').create();
page.open('https://mobile.twitter.com/login', function(status) {
if(status !== "success") {
console.log("Unable to load url.");
phantom.exit();
}
console.log('login...');
page.evaluate(function() {
document.getElementById("session[username_or_email]").value = "";
document.getElementById("session[password]").value = "";
document.forms[0].submit();
});
page.onLoadFinished = loggedIn
});
function loggedIn() {
console.log('logged in.');
page.onLoadFinished = null;
page.open('https://mobile.twitter.com/follower_requests', function(status) {
if(status !== "success") {
console.log("Unable to load url.");
phantom.exit();
}
console.log('fetch follower requests');
var forms = page.evaluate(function() {
return document.forms;
});
if(forms[0]) {
console.log('requests found');
approve();
} else {
console.log('no follower requests found');
phantom.exit();
}
});
}
function approve() {
var flag = page.evaluate(function() {
if(!document.forms[0] || document.forms[0].action.indexOf("search") !== -1) {
return false;
} else {
var ref = document.getElementsByClassName("fullname")[0].parentNode.href;
document.forms[0].submit();
return ref.replace(/.*\/(.*?)\?.*/, "$1");
}
});
if(flag) {
console.log('approve: ' + flag);
page.onLoadFinished = approve;
} else {
page.onLoadFinished = null;
console.log('approved requests');
phantom.exit();
}
}
ライセンスは適当にGPLv3
命名は適当になんかそれっぽく
使い方
document.getElementById("session[username_or_email]").value = "";
document.getElementById("session[password]").value = "";
ここんとこにユーザーネーム/メールアドレスとパスワードを入れて
$ phantomjs ./main.js
とりあえず承認してくれる。
難点
ログインする度にTwitterから「New login to Twitter from ~~」とメールが来る
アカウントの設定でメール通知を全て無効にしてもメールが来る(当たり前だけど)
このあたりどうにかならないものか……
一応既存のものがないか調べたつもりですが、別にもっと良いものがあれば教えて戴けるとこれ幸い。。