Yapmak oldukça kolay, ama ne yapıyorum yanlış anlayamıyorum. Erişim için İbrahim'in OAuth'unu kullanıyorum. Ekranın adı, kullanıcı adı ve twitter ID: benim takipçisi bilgileri ile bir veritabanı inşa ediyorum. Çok özel bir şey yok.Nasıl API Limit atmadan Tüm Twitter Takipçileri elde etmek için nasıl
Twitter'ın "cursoring" sayfasını, özellikle de sözde kodumu, kodumu yapmak için atıfta bulunuyorum. her isteği ile
cursor = -1
api_path = "https://api.twitter.com/1.1/endpoint.json?screen_name=targetUser"
do {
url_with_cursor = api_path + "&cursor=" + cursor
response_dictionary = perform_http_get_request_for_url(url_with_cursor)
cursor = response_dictionary[ 'next_cursor' ]
}
while (cursor != 0)
, son kullanıcı "sayfalarında gezinirken sağlayan bir "imleç" alır: Aşağıdaki gibi söz konusu pesudo kodunu görmek için bağlantıyı tıklayın istemeyen olanlar için, görünüşe "sonuçların Her sayfa 20'yi tutuyor ve 200 takipçiniz varsa 10 sayfadan geçmeniz gerekiyor. 900'den fazla takipçim var.
include('config.php'); //db connection
include('twitter_oauth.php'); //oauth connection
$followers = "";
$cursor = -1;
echo '<pre>';
do {
$consumerKey = 'xxx';
$consumerSecret = 'xxx';
$OAuthToken = 'xxx';
$OAuthSecret = 'xxx';
$tweet = new TwitterOAuth($consumerKey, $consumerSecret, $OAuthToken, $OAuthSecret);
$followers = $tweet->get('followers/list', array('screen_name' => 'my_screen_name', 'cursor' => $cursor));
print_r($followers);
if (isset($followers->error)) {
echo $followers->next_cursor_str;
break;
}
foreach($followers->users as $users) {
$followersQ = mysql_query("SELECT * FROM followers WHERE tw_id = '".$users->id."'") or die(mysql_error());
$num_rows = mysql_num_rows($followersQ);
if ($num_rows == 0) {
$followersQ2 = "INSERT INTO followers
(screen_name, name, tw_id)
VALUES
('".$users->screen_name."', '".$users->name."', '".$users->id."')";
$followersR = mysql_query($followersQ2) or die(mysql_error());
echo 'done one set<br>';
}
}
$cursor = $followers->next_cursor_str;
}
while ($cursor != 0);
echo '</pre>';
?>
Yukarıdaki kod twitter takipçileri/listesini çağırır ve ilk 20 kullanıcı alır: Ben şu benzemeye güncellenmiştir. Sonra bir imleci alır ve bir sonraki gider ve tekrarlar. bu bana verir yaklaşık 80 kullanıcılarının sonra sadece, öyle görünüyor güzel: hız limiti, inmek imleç ile tekrar işlevini çağırmak için
[errors] => Array
(
[0] => stdClass Object
(
[message] => Rate limit exceeded
[code] => 88
)
)
elle sonraki imleci alabilir, 15 dakika bekleyin olsun Bir sonraki 80 ürün, o anahtarı al ve tekrarla, ama tekrar tekrar arayabilecek bir betik kurmak istiyorum.
Yanlış bir şey yapıyorum, ya da oAuth adını verdiğim işleve veya bunun dışında bir yere yapıyorum. Biri bana doğru yönde işaret edebilir mi?
Teşekkür ederiz.
Oranınızı sınırlamanız gerekir, 'sleep()' ile 15 dakikada 15 istekte bulunmanız gerekir. Her isteğin ardından bir dakikalığına uyuyun ya da isteğinizle patlatın ve 15 dakika kadar uyuyun. Aynı zamanda tekrar gidip gelemeyeceğinizi belirlemek için başlık bilgisi var gibi görünüyor https://dev.twitter.com/docs/rate-limiting/1.1 – cmorrissey
Bu kötü bir fikir değil. Ancak birkaç saat sürer. Başka bir şey yoksa, bunu yapacağım. Teşekkürler! –