2012-11-05 54 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