2012-09-07 1 views
1

У меня есть твиттер апи PHP скрипт успешно выкладывает последние 100 моих последовательКак использовать PHP, Twitter API, чтобы получить больше или всех моих последователей?

$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

Согласно Twitter API Documentation для GET followers/ids запрос должен вернуть до 5000 последователей.

Однако, если не все последователи возвращаются API, в ответе должен быть элемент next_cursor, который может быть использован для извлечения следующей партии последователей. Вам нужно только добавить значение next_cursor в качестве cursor к запросу (см. Также документацию по API).

Обратите внимание, что вы используете Версию 1 API Twitter, которая была устарела недавно. То есть, он прекратит работать, возможно, в начале следующего года. Вы должны как можно скорее перейти на Version 1.1. Существуют новые правила, одна из которых заключается в том, что все запросы должны быть аутентифицированы с помощью oAuth.

+0

Спасибо, что ответ Флориан. Кстати, я думаю, что нашел правильный способ делать то, что искал. Исправьте меня, если я ошибаюсь –

0

Спасибо, что ответ Флориан. Кстати, я думаю, что нашел правильный способ делать то, что искал. Поправьте меня если я ошибаюсь.

после использования:

$code=$tmhOAuth->request('GET', $tmhOAuth->url('1/followers/ids'), 
      array('screen_name' => $user, 'cursor' => $cursor)); 

техника, чтобы захватить все 5000 последователей (идентификаторы пользователей). Я использую следующий код, чтобы захватить партии 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», но я не совершенно уверен, сколько использовать.

+0

Прежде всего, вы обязательно должны использовать версию 1.1 API Twitter, так как 1.0 будет очень устаревшим. Сайт разработчика Twitter говорит, что каждые 180 минут вы получаете 180 вызовов API (в версии 1.0 это было 350 вызовов в час). Если я правильно понимаю, вы должны иметь возможность искать 180000 пользователей за 15 минут, которых должно быть достаточно. Поскольку вы можете сделать 180 запросов за 15 минут, я буду спать в течение 5 секунд между запросами. –

+0

Btw, с версией 1.1 API, вы должны выполнить запросы поиска также с помощью oAuth, то есть вы должны отправить их с помощью '$ tmhOauth'. –

Смежные вопросы