簡體   English   中英

速率限制。 Twitter API

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM