てるてるブログ

てるてるぼうずの日常やらお勉強やら

BOT作成メモ – ランダムなフォロワー取得

Posted on | 11月 9, 2012 | No Comments

bot

EassyBotter 2.1で使えなくなった{following_id}{following_name}{follower_id}{follower_name}を使ってのランダムなフォロワーとフォローイングユーザーの名前取得機能。
個人的に結構使ってたのでとりあえずこの機能を再現する改造を真っ先にしてみた。

もとの機能がTwitter APIの仕様上最新の100名分までのフォロワーさんしか取得出来なかったで、そこを全員分取得したいと思って改造していたのでそれを流用。

流れとしては、friends/idsfollowers/idsを使ってフォロワーをフォローイングユーザのid一覧を取得。
一度のリクエストで5000名分取得出来るので、その一覧からランダムに一つのidを取得、そのidをユーザーの詳細情報を取得するAPIusers/lookupに放り込んで名前を引っ張ってくる。

5000名以上フォロワーさんがいる場合は…まあそうなったら考えようと言うことで(^^;)

改造する箇所が一カ所じゃないのでちょっと面倒…かな?

とりあえず動いてる…ってな感じなので改造は自己責任でお願いしますね。


まずはTwitterのフォロワー取得のAPI。

//基本的なAPIを叩くための関数
の辺りの

function _getData($url){
    return json_decode($this->consumer->sendRequest($url, array(), "GET")->getBody(), true);
} 

function _getData($url, $value = array()){
    return json_decode($this->consumer->sendRequest($url, $value, "GET")->getBody(), true);
} 

に変更。
その直後でもAPI関数群の最後辺りにでもいいんで

//■■ネーム取得用
function getFollowerlookup($id){
    $url = "https://api.twitter.com/1.1/users/lookup.json";
    $value = array("user_id"=>$id);
    return $this->_getData($url,$value);
}

を追加。

次に
//文章を変換する
を探して関数「convertText」内の
return $text;
の直前にでも以下を追加。

//■■ランダムな一人のfollowingデータを取る■■
if(strpos($text, "{following_id}") !== FALSE){
	$response = $this->getFriends();
	$id = $response["ids"][rand(0,count($response["ids"]))];
	$name_xml = $this -> getFollowerlookup($id);
	$pikup_name = $name_xml[0]["screen_name"];
	$text = str_replace("{following_id}",$pikup_name,$text);
}

if(strpos($text, "{following_name}") !== FALSE){
	$response = $this->getFriends();
	$id = $response["ids"][rand(0,count($response["ids"]))];
	$name_xml = $this -> getFollowerlookup($id);
	$pikup_name = $name_xml[0]["name"];
	$text = str_replace("{following_name}",$pikup_name,$text);
}

//■■ランダムな一人のfollowerデータを取る■■
if(strpos($text,"{follower_id}") !== FALSE){
	$response = $this->getFollowers();
	$id = $response["ids"][rand(0,count($response["ids"]))];
	$name_xml = $this -> getFollowerlookup($id);
	$pikup_name = $name_xml[0]["screen_name"];
	$text = str_replace("{follower_id}",$pikup_name,$text);       
}
if(strpos($text, "{follower_name}") !== FALSE){
	$response = $this->getFollowers();
	$id = $response["ids"][rand(0,count($response["ids"]))];
	$name_xml = $this -> getFollowerlookup($id);
	$pikup_name = $name_xml[0]["name"];
	$text = str_replace("{follower_name}",$pikup_name,$text);        
}

こんな感じでリプファイルや投稿ファイルに{following_id}{following_name}{follower_id}{follower_name}が使えるようになるはずです。

APIの詳しい説明や一覧は下記のサイトさんを主に参考にさせて頂きました。

« »
トラックバックURL:

Comments

Leave a Reply





*

About

てるぼうず

てるてるぼうずな日常やらお勉強やら

旧ブログ倉庫 »
旧ブログの記事をお探しの方はこちらから

Admin