Twitter用の自動フォロー返しスクリプトです。
Oauth版で、http://github.com/abraham/twitteroauth/downloads で公開されているtwitteroauth.php と Oauth.php が必要です。過去にフォローしたことのあるアカウントのリストをwasFriendというファイルで保持し、これらのアカウントからフォローされてもフォローし返さないようになっています。BOTやスパムへの自動フォローをしないようにするため、このようになっています。
<?php define("USER" , "YOUR ACCOUNT"); define("DIR" , dirname(__FILE__) ); define("CONSUMER_KEY" , "KEY from Twitter"); define("CONSUMER_SECRET" , "KEY from Twitter"); define("ACCESS_TOKEN", "KEY from Twitter"); define("ACCESS_TOKEN_SECRET" , "KEY from Twitter"); require_once("twitteroauth.php"); // get friends function getFriends() { $ch = curl_init("http://api.twitter.com/1/friends/ids.json?screen_name=".USER); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $res = curl_exec($ch); curl_close($ch); $ret = array(); if (!$res) { fputs(STDERR , "Failed to get response\n"); return $ret; } $res = str_replace("[", "", $res); $res = str_replace("]", "", $res); $ret = explode(",",$res); $wasFriends=fopen(DIR."/wasFriends", "r"); while(!feof($wasFriends)){ $t = trim(fgetss($wasFriends)); if (!in_array($t , $ret)) { array_push($ret,$t); } } fclose($wasFriends); $wasFriends=fopen(DIR."/wasFriends", "w"); flock($wasFriends, LOCK_EX); foreach ($ret as $t) { fputs($wasFriends,$t."\n"); } flock($wasFriends, LOCK_UN); fclose($wasFriends); return $ret; } // get followers function getfollowers() { $to = new TwitterOAuth(CONSUMER_KEY , CONSUMER_SECRET , ACCESS_TOKEN , ACCESS_TOKEN_SECRET); $res = $to->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); } } ?>
Trackbacks /
Pingbacks