速率限制。 Twitter API

时间:2013-04-23 16:45:33

标签: php api twitter foreach

我正在研究一个简单的小代码,它基本上会对一些推文进行过滤。问题是我正在达到Twitter API的请求限制,我想知道是否有解决方法,或者我想做什么不能完成。

首先,我输入一个推特用户名来检索该用户关注的人的ID。

$user_id = $_GET["username"]; 
$url_post = "http://api.twitter.com/1/friends/ids.json?cursor=-1&screen_name=" . urlencode($user_id);
$following = file_get_contents($url_post, true);
$json = json_decode($following);

$ids = $json->ids;

Twitter API使用ID列表进行响应。

这就是问题所在。下一步是请求查找每个ID的用户名,个人资料图片和说明。

$following = array();
foreach ($ids as $value)
{
$build_url = 'http://api.twitter.com/1/users/lookup.json?user_id=' . $value . '';
$following[] = $build_url;
}


foreach ($following as $url) 
{
$data_names = file_get_contents($url, true); //getting the file content
$json_names = json_decode($data_names);

foreach ($json_names as $tweet) {

$name = $tweet->name;
$description = $tweet->description;

echo '<p>'; 
echo $name . '<br>';
echo $description;
echo '</p>';
}
}

如果用户关注50人则可以使用。但是,如果他跟随,那么说600个,那将是600个请求(对于用户名,描述和个人资料图片)超过限制的Twitter API。

有没有办法解决这个问题,这是无法做到的?

谢谢!

1 个答案:

答案 0 :(得分:0)

您可以而且应该一次向100个userIds请求users/lookup API endPoint,而不是每个Twitter ID请求一个请求。比照https://dev.twitter.com/docs/api/1.1/get/users/lookup

您必须通过递归函数替换forEach循环(foreach ($following as $url))。

在功能结束时,检查再次呼叫之前剩余的点击次数(参见this link,了解如何知道时间提醒,直到您获得速率限制)。

如果没有击中,请在再次呼叫该功能前15分钟睡觉,否则再次拨打电话。

有很多关于如何执行此操作的信息,请使用Google并搜索现有的stackOverflow问题。