我有一个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而不是我自己的帐户) 如何扩展此功能以包含更多或所有关注者?
谢谢
答案 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个批次”之间加入“睡眠”,但我不太确定要使用多少。