PHPで最近リツイートしてくれたユーザー一覧を表示

(1/1)
今回は、Twitter API を利用し、自分の投稿に対して最近リツイートしてくれたユーザーの一覧を表示する PHP プログラムを作ってみることにする。

サンプル・プログラムの実行例

最近リツイートしたユーザー一覧

サンプル・プログラム

解説:準備

Twitter API を利用する関数群はクラス pahooTwitterAPI として別ファイル "pahooTwitterAPI.php" に定義してある。このファイルを  require_once  できるパスに配置すること。

OAuth認証を利用するため、プログラムを Twitter に登録する必要がある。その手順については「PHP で Twitter に投稿(ツイート)する」を参照のこと。取得したパラメータは、クラス pahooTwitterAPI 冒頭にあるクラス定数に記載すること。

https通信を使うため、PHP から OpenSSL を利用できるようにしておく必要がある。その手順は「PHP の https 対応」を参照のこと。
プログラムがうまく動かなかったら、「Twitter への再登録が必要な場合も」を参照のこと。

Twitter API:GET statuses/retweets_of_me

リツイート一覧を取得するには、「Twitter API:GET statuses/retweets_of_me」を用いる。
Twitter API (GET)
URL
https://api.twitter.com/1.1/statuses/retweets_of_me.json

入力パラメータ
項目名 フィールド名 内  容
件数 count integer 【オプション】取得件数。省略時は20、最大100。

Twitter API:GET statuses/retweets

リツイート一覧を取得するには、「Twitter API GET statuses/retweets」を用いる。
Twitter API (GET)
URL
https://api.twitter.com/1.1/statuses/retweets/:id

入力パラメータ
項目名 フィールド名 内  容
ツイートID id string 【必須】情報を取得するツイートID。URLの ":id" の部分で指定する。
件数 count integer 【オプション】取得件数。省略時は5、最大100。
応答データ(一部)(json) id_str 投稿ID created_at 投稿日時 text 投稿文 user screen_name ユーザー名 retweet_count リツイート回数

サンプル・プログラムの解説:ユーザーを取得

0134: /**
0135:  * ユーザーを取得
0136:  * @param array $retweet リツイート格納配列
0137:  * @param array $users   ユーザー配列
0138:  * @param string $webapi  WebAPIのURL
0139:  * @return int 取得数/FALSE 取得失敗
0140: */
0141: function getRTusers($retweets, &$users, &$webapi) {
0142:     $ptw = new pahooTwitterAPI();
0143: 
0144:     $url    = 'https://api.twitter.com/1.1/statuses/retweets/';
0145:     $param  = array('count' => 20);
0146:     $method = 'GET';
0147: 
0148:     $cnt = 0;
0149:     foreach ($retweets as $id=>$retweet) {
0150:         $ret = $ptw->request_user($url . $id . '.json', $method$param);
0151:         if ($ret == FALSE)  return FALSE;
0152:         $webapi = $ptw->webapi;
0153: 
0154:         //情報を配列へ格納
0155:         foreach ($ptw->responses as $item) {
0156:             if (! isset($item->user->id_str))  continue;
0157:             $id = $item->user->id_str;
0158:             if (isset($users[$id]['count'])) {
0159:                 $users[$id]['count']++;
0160:             } else {
0161:                 $users[$id]['name'] = $item->user->name;
0162:                 $users[$id]['screen_name'] = $item->user->screen_name;
0163:                 $users[$id]['count'] = 1;
0164:             }
0165:             $cnt++;
0166:         }
0167:     }
0168: 
0169:     //リツイート回数の降順ソート
0170:     uasort($usersfunction($a$b) {
0171:         return $b['count'] - $a['count'];
0172:     });
0173: 
0174:     $ptw = NULL;
0175: 
0176:     return $cnt;
0177: }

リツイートを取り出すには、「PHP でリツイート回数の上位を表示」で作成したユーザー関数 getReTweets を用いる。
取り出したリツイートのの一つ一つに対して「Twitter API GET statuses/retweets」を実行し、リツイートしたユーザーを取り出す。

参考サイト

(この項おわり)
header