1

我正在尝试使用此 API 调用从我的数据库中获取 1000 多个 Twitter 用户。但是,Twitter 查找每次调用只允许 100 个用户,那么如何使用 10 个调用呢?

如果我的数据库中有 2232 个用户,并且我想查找所有用户并获取他们的详细信息,该怎么做?将计算所有正在搜索的用户,将其分解为 100 个元素的数组,调用 100,并将响应添加回数据库,然后移动到下一个 100。

我正在使用tmhOAuthTwitter 库。

编辑:我能够使用此代码完成它,但我的下一个问题是如何将这些值绑定回我的帐户?因为 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>";
    }

但是如何使用这个更新数据库中的值..我做了一个检查,但响应的顺序总是改变,所以不能使用当前的键..

4

3 回答 3

0

嗨,这里有一些简单的步骤来完成这项任务

1:从您的数据库中获取屏幕名称,限制为 100
2:用逗号加载(用逗号连接它们)
3:将这 100 个发送给用户/查找调用并获取数据
4:(重要)如果您收到“速率限制”错误超过” THEN USE PROXY
代理将给您另一个机会,让您下次调用 100 个用户
5:解码 json 并将数据发送到 db(重要)如果您使用用户的 id 而不是屏幕名称,那么更新 db 将很容易

还有问题在这里留言

于 2012-11-05T10:40:28.767 回答
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
    }   
  }
}
于 2012-11-05T08:21:56.033 回答
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);
于 2012-11-05T14:50:42.563 回答