私はそれがかなり簡単だと思いますが、私が間違っていることを理解できません。私はアクセスを得るためにアブラハムのOAuthを使用しています。私はフォロワーの情報を持つデータベースを構築しています:スクリーン名、ユーザー名、およびTwitterのID。あまりにも特別なものはありません。API制限なしですべてのTwitterフォロワーを取得する方法
Twitterの ""ページ、特に疑似コードを参照してコードを作成しました。言っpesudoコードを参照するためのリンクをクリックしたくない人のために、それは次のようになります。
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)
すべてのリクエストでは、エンドユーザーは、彼らがページ」をナビゲートすることを可能にする「カーソル」を取得します"結果の。各ページには20ページがあり、200ページのフォロワーがある場合は10ページを通過する必要があります。私には900人以上の信者がいる。
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>';
?>
上記のコードは、twitter followers/listを呼び出し、最初の20人のユーザーを取得します。次に、カーソルを取得して次のものに進み、繰り返します。取得、
[errors] => Array
(
[0] => stdClass Object
(
[message] => Rate limit exceeded
[code] => 88
)
)
私は手動で、次のカーソルを取得する可能性がダウンするレート制限のために15分を待って、カーソルで再び関数を呼び出す:のみ、私に素敵なを与える約80ユーザーが後に思えます次の80項目は、そのキーを取得し、繰り返すが、私は何度もそれを呼び出すことができるスクリプトを設定したい。
私は誤ったやり方をしていると感じています。私がoAuthと呼ぶ場所で、あるいはどこか別の場所でその機能を使用しています。誰かが私を正しい方向に向けることができますか?
ありがとうございます。
レートを制限する必要があります。スリープ()では15分ごとに15個のリクエストが必要ですリクエストごとに1分間寝るか、リクエストを爆発させてから15分間寝ます。また、あなたがいつ再び行くことができるかを判断するためのヘッダー情報があるように見えます。 – cmorrissey
これは悪い考えではありません。しかし、それは数時間かかるだろう。他に何もなければ、私はそれをします。ありがとう! –