API Twitter: получите подписчиков +99 - PullRequest
7 голосов
/ 06 декабря 2009

Используя Twitter API (и OAuth), если бы я вызывал подписчиков (статусы / подписчики), мне было бы возвращено только 99 результатов.

Есть ли способ, которым я могу вернуть 99, а затем снова позвонить, начиная с подписчика 100, затем перебирая этот стиль звонка, пока не будет возвращено общее количество подписчиков?

Или просто вернуть ВСЕХ последователей?

Ответы [ 7 ]

4 голосов
/ 06 декабря 2009

Необходимо указать параметр курсора, как описано в документации API . Например. задайте курсор = -1, чтобы запросить первую страницу, а затем используйте значение next_cursor, возвращенное в первом ответе:

  http://twitter.com/statuses/followers/barackobama.xml?cursor=-1
  http://twitter.com/statuses/followers/barackobama.xml?cursor=1300794057949944903
3 голосов
/ 04 октября 2011
<?php
$trends_url = "http://api.twitter.com/1/statuses/followers/fawadghafoor.json";
$ch       = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $trends_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$curlout  = curl_exec($ch);
curl_close($ch);
$response = json_decode($curlout, true);

foreach($response as $friends){
      $thumb = $friends['profile_image_url'];
      $url   = $friends['screen_name'];
      $name  = $friends['name'];
?>                         
<a title="<?php echo $name;?>" href="http://www.twitter.com/<?php echo $url;?>"><img class="photo-img" src="<?php echo $thumb?>" border="0" alt="" width="40" /></a>
    <?php  }  ?>
1 голос
/ 27 августа 2013

Twitter API ограничивает нас в создании API. Вызов методов / идентификаторов - 15 запросов в 15 минут. Если вы сделаете больше, чем этот API, вы получите сообщение об ошибке «Достигнут предел скорости».

Для получения более подробной информации о Twitter API Limit Limit Визит - https://dev.twitter.com/docs/rate-limiting/1.1 и https://dev.twitter.com/docs/rate-limiting/1.1/limits

1 голос
/ 06 декабря 2009

Убедитесь, что вы используете правильный вызов. followers/ids дает вам 5000 одновременно (но это просто список идентификаторов). Этот вызов также использует курсор, чтобы позволить вам просматривать страницы пользователей. Вы получаете ноль обратно, когда у вас есть все.

0 голосов
/ 04 января 2012
$cursor = -1;
$account_from = 'twitter_account';
do
{
    $json = file_get_contents('http://api.twitter.com/1/statuses/followers/' . $account_from .'json?cursor=' . $cursor);
    $accounts = json_decode($json);
    foreach ($accounts->users as $account)
    {

            array(
                ':twitter_id' => $account->id_str,
                ':account' => $account->screen_name,
                ':description' => $account->description,
            );
    }
    $cursor = $accounts->next_cursor;

}
while ($cursor > 0);
0 голосов
/ 15 октября 2011

Хотя я спрашивал об этом довольно давно, я недавно вернулся к созданию чего-то очень похожего (+ новые навыки программирования).

Я заметил, что в Twitter API есть метод для получения всех идентификаторов пользователей подписчиков (или подписчиков) в одном запросе. Я обнаружил, что лучшим способом было бы array_chunk преобразовать идентификаторы в пакеты по 100 (и взять только первые 30 массивов, поскольку я не хочу использовать все запросы API пользователей в тот час - они могут захотеть твитнуть!). Тогда есть метод, который позволяет вам получить до 100 пользователей userinfo (с точки зрения пользователя, прошедшего аутентификацию), поэтому я просто делаю цикл (немного поспал), и тогда у вас есть 30 000 подписчиков в твиттере!

Я бы порекомендовал делать это асинхронно в системе очередей, так как если вы делаете это на лету, когда пользователи запрашивают страницу на сайте, это может быть очень медленным, и вы можете быть подвержены тайм-ауту HTTP. Также кешируй их как ад!

Извините, я не выложил никакого кода, но, надеюсь, этот мыслительный процесс кому-нибудь поможет:)

0 голосов
/ 06 декабря 2009

Twitter разрешает только определенное количество запросов API в час, а я думаю минуту. Возможно, вам не удастся получить более 99 запросов одновременно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...