Lancers.jp

Twitter用自動フォロー返しスクリプト PHP

9月 2nd, 2010 by tsuyoshi Leave a reply »

Twitter用の自動フォロー返しスクリプトです。
Oauth版で、http://github.com/abraham/twitteroauth/downloads で公開されているtwitteroauth.php と Oauth.php が必要です。過去にフォローしたことのあるアカウントのリストをwasFriendというファイルで保持し、これらのアカウントからフォローされてもフォローし返さないようになっています。BOTやスパムへの自動フォローをしないようにするため、このようになっています。

{code type=php}
OauthRequest(“http://twitter.com/followers/ids.json?user_name=”.USER,”GET”,array());

$ret = array();

if (!$res) {
fputs(STDERR , “Failed to get response\n”);
return $ret;
}

$res = str_replace(“[“, “”, $res);
$res = str_replace(“]”, “”, $res);

$ret = explode(“,”,$res);

$followerCount=fopen(DIR.”/followerCount”, “a”);
flock($followerCount, LOCK_EX);
fputs($followerCount,date(“Y/m/d H:i:s”).” “.count($ret).”\n”);
flock($followerCount, LOCK_UN);
fclose($followerCount);

return $ret;

}

// follow user
function follow($id) {

$to = new TwitterOAuth(CONSUMER_KEY , CONSUMER_SECRET , ACCESS_TOKEN , ACCESS_TOKEN_SECRET);
$res = $to->OauthRequest(“http://twitter.com/friendships/create/”.$id.”.json”,”POST”,array());

if (!$res) {
fputs(STDERR , “Failed to get response\n”);
return false;
}

$json = json_decode($res);
if (!$json) {
fputs(STDERR , “Failed to get json\n”);
return false;
}
if (isset($json->following)) {
fputs(STDOUT , “Successed to follow ” . $id . “\n”);

$wasFriends=fopen(DIR.”/wasFriends”, “a”);
flock($wasFriends, LOCK_EX);
fputs($wasFriends,$id.”\n”);
flock($wasFriends, LOCK_UN);
fclose($wasFriends);

return true;
} else {
fputs(STDERR , “Failed to follow ” . $id . “\n” . var_export($json , true) . “\n”);
return false;
}
}

// get friends
$friends = getFriends();
fputs(STDERR , “Friends List Aquired ” );
fputs(STDERR , count($friends) .”friends are listed \n” );
// search
$result = getfollowers();
fputs(STDERR , “follower List Aquired” );
fputs(STDERR , count($result) .”followers are listed \n” );
// follow
foreach ($result as $r) {
if (!in_array($r , $friends)) {
fputs(STDERR , “Tring to follow ” . $r .”\n” );

follow($r);
sleep(5);
}
}
?>
{/code}

Advertisement

コメントを残す