[英]Rate limit. Twitter API
我正在研究一個小的簡單代碼,基本上可以進行一些推文過濾。 問題是我正在達到Twitter API的請求限制,我想知道是否有解決方法,或者我想做的事情無法完成。
首先,我輸入一個Twitter用戶名來檢索該用戶關注的人的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百,那就是對Twitter API的600百個請求(用戶名,描述和個人資料圖片)超過了限制。
有什么方法可以解決這個問題嗎?
謝謝!
您可以並且應該一次請求具有100個userId的users/lookup
API端點,而不是對每個Twitter ID進行一次請求。 cf. https://dev.twitter.com/docs/api/1.1/get/users/lookup
您必須用遞歸函數替換forEach循環( foreach ($following as $url)
)。
在該函數的末尾,請在再次調用之前檢查剩余的匹配數(請參閱此鏈接,以了解如何知道直到限制速率之前的時間)。
如果沒有命中率,請在重新調用該函數之前睡眠15分鍾,否則請再次進行調用。
有關如何執行此操作,使用Google以及搜索現有的stackOverflow問題的信息很多。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.