如何使用PHP,Twitter API来获取更多或所有关注者?

时间:2012-09-07 11:24:52

标签: php api twitter

我有一个twitter api php脚本成功吐出了我的追随者的最后100个

$flwrs_url = "http://api.twitter.com/1/statuses/followers/exampleuser.json";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $flwrs_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$curlout = curl_exec($ch);
curl_close($ch);
$response = json_decode($curlout, true);

foreach($response as $friends){
    $id = $friends['id'];   
$screen_name = $friends['screen_name'];
....

(我使用的是exampleuser而不是我自己的帐户) 如何扩展此功能以包含更多或所有关注者?

谢谢

2 个答案:

答案 0 :(得分:0)

根据GET followers/ids next_cursor,请求最多可返回5000个粉丝。

但是,如果并非API返回所有关注者,则响应中应该有一个next_cursor元素,可用于检索下一批关注者。您只需将cursor的值{{1}}附加到请求中(另请参阅API文档)。

请注意,您使用的是最近弃用的Twitter API版本1。也就是说,它可能会在明年初停止工作。您应该尽快升级到Twitter API Documentation。有新的准则,其中之一是所有请求都必须使用oAuth进行身份验证。

答案 1 :(得分:0)

感谢Florian的回答。顺便说一下,我认为我找到了正确的方法来做我想要的事情。如果我错了,请纠正我。

使用后:

 $code=$tmhOAuth->request('GET', $tmhOAuth->url('1/followers/ids'),
            array('screen_name' => $user, 'cursor' => $cursor));

抓住所有5000个粉丝(用户ID)的技术。我使用以下代码一次抓取100个批次(用户详细信息):

$status_url = "http://api.twitter.com/1/users/lookup.json?user_id=";
$lastNum=$last; // $lastNum=100;
$i=$first;     // $i=0;
while($i<$lastNum){
    if ($i==($lastNum-1)){
        $status_url = $status_url . "$followers[$i]";
    }else{  
        $status_url = $status_url . "$followers[$i],";
    }

    $i++;
}

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $status_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$curlout = curl_exec($ch);
curl_close($ch);
$response = json_decode($curlout, true);

$i = 0;
foreach($response as $friends){
    $id = $friends['id'];
    $screen_name = $friends['screen_name'];
    $name = $friends['name'];
    $thumb = $friends['profile_image_url'];
    $url = $friends['screen_name'];
    $location = $friends['location'];
    $description = $friends['description'];
    echo "$i) $id $screen_name $name $location $description<br />";
    $i++;
}

我意识到我需要在这些“100个批次”之间加入“睡眠”,但我不太确定要使用多少。