試行錯誤の末、ついにTwitterの新しいAPI(バージョン1.1)でツイートを取得することができました。PHPTwitterOauthライブラリを使用しています。ツイートは取得できますが、わからないことが2つあります。
statuss/user_timelineの制限は200ツイートです。結果をループして最大3,200件のツイートを取得するにはどうすればよいですか?複数のGETリクエストを行うことについて何か読んだのですが、その方法がわかりません。
フェッチされるツイートの数はランダムに変化するようで、実際にはパラメータ「count」で指定された数に達することはめったにありません。何故ですか?
私のアプリケーションでは、訪問者がユーザー名を入力し、そのユーザーのツイートを取得するだけです。これが私のコードです。
if (isset($_GET['user'])) {
$user = $_GET['user'];
$content = $connection->get("statuses/user_timeline", array('count' => 200, 'exclude_replies' => true, 'screen_name' => $user));?>
$j = 0;
foreach ($content as $tweet) {
echo $j.' '.$tweet->text. '<br />';
$j++;
}
}
更新:以下のqueremysの提案を試した後、いくつかの大きな欠点がある本当に醜い見た目の「解決策」を思いつきました。少なくとも、最大3,200件のツイート(および一部の重複)が表示されます。問題のTwitterアカウントのツイート数が3,200未満の場合、結果は奇妙に見えます。とにかく、それがインスピレーションになることができれば、私はそれを共有したいと思っただけです。
if (isset($_GET['user'])) {
$user = $_GET['user'];
$content = $connection->get('statuses/user_timeline', array(
'count' => 200, 'exclude_replies' => true, 'screen_name' => $user, 'include_rts' => 1
));
$x = 0;
while ($x < 15) {
$text = array();
foreach ($content as $tweet) {
$text[] = $tweet->id_str;
echo $tweet->text.'<br />';
}
$last_tweet = end($text);
$content = $connection->get('statuses/user_timeline', array(
'count' => 200, 'exclude_replies' => true, 'screen_name' => $user, 'include_rts' => 1, 'max_id' => $last_tweet
));
foreach ($content as $tweet) {
echo $tweet->text.'<br />';
}
$x++;
}
}