1

我有一个 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 而不是我自己的帐户)如何扩展它以包括更多或所有我的关注者?

谢谢

4

2 回答 2

0

感谢弗洛里安的回答。顺便说一句,我想我找到了正确的方法来做我正在寻找的事情。如我错了请纠正我。

使用后:

 $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 批”之间放置“睡眠”,但我不太确定要使用多少。

于 2012-09-08T14:02:36.537 回答
0

根据Twitter API 文档GET followers/ids该请求应返回多达 5000 个关注者。

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

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

于 2012-09-07T11:34:28.200 回答