2012-11-05 50 views
1

我正在嘗試使用this API call從我的數據庫中提取超過1000個Twitter用戶。然而,Twitter查詢只允許每次通話100個用戶,那麼如何通過10個電話來完成?Twitter API用戶查找1000位用戶

如果我在我的數據庫中有2232個用戶,我想對所有用戶進行查詢並獲取他們的詳細信息,請執行此操作?有些東西會統計所有正在搜索的用戶,將其分解爲100個元素的數組,然後將其呼叫爲100,然後將響應添加回數據庫,然後移動到下一個數據庫。

我正在使用tmhOAuth庫推特。

編輯: 我能夠使用此代碼完成它,但我的下一個問題是我如何將這些值綁定回我的帳戶?因爲screen_name是一個入口而不是數組的KEY,所以我該如何做?

$accounts = $this->accounts->getAll(); 
    $accounts_chunk = array_chunk($accounts,100); 
    foreach($accounts_chunk as $accounts){ 
     $screen_names = ""; 
     $last_key = end(array_keys($accounts)); 
     foreach($accounts as $k => $account){ 
      $screen_names .= $account->screen_name; 
      if($last_key == $k){ 
       $screen_names .= ""; 
      } else { 
       $screen_names .= ","; 
      }   
     } 
      $code = $this->twitter->request('GET', $this->twitter->url("1/users/lookup"),array('screen_name' => $screen_names)); 
      echo "<pre>";print_r(json_decode($this->twitter->response));echo "</pre>"; 
    } 

但如何使用DB更新值這個..我做了檢查,但反應總是變化所以不能用當前的按鍵順序..

+0

響應你已經有一個Twitter處理或這些2000的整數的Twitter用戶ID +用戶? – halfer

+0

您似乎選擇了正確的[API調用](https://dev.twitter.com/docs/api/1.1/get/users/lookup)。我認爲你使用的是版本1,而不是1.1?我們可以看到您已經獲得的PHP代碼發出這個請求嗎? – halfer

回答

0

,你可以通過的最大數量環用戶和第一百次循環通過百名用戶,並在那裏做你的Twitter魔術。

$iNumUsers = 2232; // or a mysql_num_rows-like result; 

for($i = 0; $i < $iNumUsers; $i++) { 

    if($i % 100 == 0) { 

    for($j = $i; $j < 100; $j++) { 

     // your twitter-code here 
    } 
    } 
} 
0

嗨這裏有一些簡單的步驟來執行此任務

1:從數據庫獲取屏幕名稱與100
2極限:impload用逗號(用逗號加入他們的行列)
3:將這100個發送給用戶/查詢電話並獲取數據
4 :(重要)如果您接收到「超出限制速率」的錯誤,則使用代理
代理將給您另一個機會,讓您再次撥打100個用戶
5:解碼JSON和發送數據到數據庫 (重要)如果你使用用戶的ID,而不是網名那麼這將是容易更新數據庫

仍然有問題,喊評論這裏

0

Twitter API

我們強烈建議您使用POST來獲取更大的請求。

因此,請嘗試發佈您的2,000個ID給他們。

至於你的問題

響應的順序總是變化所以不能使用當前的密鑰的第二部分..

與您的用戶陣列

開始IDD - $ids

從Twitter獲取爲$tl

// Place the users into an array 
$sortedUsers = array(); 
foreach ($tl as $user) { 
    $user_id = $user->id; 
    // $tl is *unsorted* - but $ids is *sorted*. So we place the users from $tl into a new array based on how they're sorted in $ids 
    $key = array_search($user_id, $ids); 
    $sortedUsers[$key] = $user; 
} 

    // Sort the array by key so the most recent is at the top 
ksort($sortedUsers); 
+0

我想我不能用ID做..如何使用screen_name ..我已經保存screen_name在DB作爲$ account-> screen_name ..並且twitter也返回.. user-> screen_name,我該如何綁定它與我的數據? – user1799524