2012年6月30日土曜日

PHPでTwitter botつくるよー|3.フォローバック、特定ユーザーのツイート取得

PHPでTwitterのbotをつくろう3回目。
目的と下準備、Oauth認証までの1回目
特定のキーワドで検索、結果をRT、発言者をフォローした2回目
の続きです。
今回は、特定のユーザーの最新のツイートを取得してRTする部分。
1回目の方法でOauth認証が終わっている前提です。
相変わらずoverflowが折り返されて見難い事この上ないですが。
まずフォローバック機能


/******************************************************
follow back
*******************************************************/

//followしてくれたひとにはfollow返す。
//まずfollower取得(5000まで)
$followers=json_decode(file_get_contents('https://api.twitter.com/1/followers/ids.json?cursor=-1&screen_name=MyScreenName'),true);>
//followしているひと取得(5000まで) $followings=json_decode(file_get_contents('https://api.twitter.com/1/friends/ids.json?cursor=-1&screen_name=MyScreenName'),ture);

//followerだけどfollowしていないひと(5000ずつの中で)
$diff=array_diff($followers['ids'],$followings['ids']);
//フォローバックする
$res = $objOauth->OAuthRequest('http://api.twitter.com/1/friendships/create.json','POST',array('user_id' => $id, 'follow' => 'true'));



自分(@MyScreenName)がfollowしているひとと自分のfollowerは一度に5000までしか引っ張てこれないのですが、そんな大規模なもの作る気はないのでそのなかでマッチングしてしまっています。
ちゃんとやるなら全部取得してマッチングしたほうが良いかも。
つぎは特定のユーザーの最新のツイートの取得とRTする部分

/******************************************************
TargetUserNameのツイートをひとつリツイート
*******************************************************/
//まず、TargetUserNameの最新のツイート1つを取得。countの値で取得数設定できます。
$last_tweet=json_decode(file_get_contents('https://api.twitter.com/1/statuses/user_timeline.json?&screen_name=TargetUserName&count=1'),true);

//取得したツイートをRT
$res = $objOauth->OAuthRequest('https://api.twitter.com/1/statuses/retweet/'.$last_tweet[0]['id_str'].'.json','POST',array());


こんなところです。らくちんらくちん。
あとは平打のユーザ名などを変数にして関数化して、
cronの設定すればbotちゃん完成です。
cronの環境がない!というかたには、
風柳さんのGAE-Cronこちらに設置していますのでよかったらどうぞ。
いつのまにかcssとんで醜いですが動きますので。

追記
リストからランダムでツイートする機能について書くのを失念していました。
また、グーグルブログ検索の結果のタイトルとURLをツイートする機能も追加したので、また別の機会にかけたら併せて書こうとおもいます。

0 件のコメント:

コメントを投稿