【问题标题】:Twitter get followers/ids curosr not workingTwitter 获取关注者/ID 光标不起作用
【发布时间】:2014-06-08 23:20:05
【问题描述】:

我正在尝试获取 Twitter 用户的完整关注者 ID 列表。该用户拥有 170,000 多名关注者。我正在使用代码鸟库。代码如下:

\Codebird\Codebird::setConsumerKey(TWITTER_CONSUMER_KEY, TWITTER_CONSUMER_SECRET);
$cb = \Codebird\Codebird::getInstance();
$cb->setToken(OAUTH_TOKEN, OAUTH_SECRET);
$cb->setReturnFormat(CODEBIRD_RETURNFORMAT_ARRAY);
$next_cursor = -1;

while ($next_cursor) {  
    $results = $cb->followers_ids("screen_name=some_tw_name","count=5000","cursor=$next_cursor");
    $next_cursor = $results['next_cursor_str'];
}

第一次调用返回 5000 个 ID,这是应该的。后续调用(通过 while 循环)返回 5000 个 ID,但它们几乎都与前一个调用相同(每个新调用我得到 1 到大约 10 个新闻 ID,其余与之前相同)。

还有其他人遇到过这个问题吗?分辨率?

【问题讨论】:

    标签: twitter


    【解决方案1】:

    我认为问题在于您并没有真正结合每个请求的结果。所以你可以这样做:

    function getFollowers(){
        $next_cursor = -1; 
        $output = array();
        while ($next_cursor) {  
            $results = $cb->followers_ids(array("screen_name"=>"some_tw_name","count"=>5000,"cursor"=>$next_cursor));
            if(!isset($results['errors'])){
                foreach($results['ids'] as $id){
                    $output[]=$id;
                    }
                }
            $next_cursor = $results['next_cursor_str'];
            }
        return $output;
        }
    

    注意:我还将参数表示法更改为数组而不是字符串。

    【讨论】:

    • 您知道 next_cursor 的值是由 Twitter 提供的,对吧?正如它在 API 调用中提供的一样,返回为 next_cursor_str。如果你“组合”结果,你得到的只是一个任意数字,它不能准确表示 Twitter 决定你的下一个光标应该在哪里。您应该阅读 Twitter API 文档。
    • 我不是要合并你的光标。我说你需要合并结果,你的代码没有这样做;它创建了几个不同的数组。使用该代码创建完整的关注者列表没有问题。
    • 是的,我的代码没有合并结果。这与为什么当我转储 $results 时,我应该得到一组不同的 ID,每个循环都有不同的光标没有任何关系。这两个问题是分开的。结合我的结果是一种糟糕的编码实践,因为它会占用内存。缺少的是我在每个循环中处理 $results 的功能,这对我的问题来说不是必需的。
    猜你喜欢
    • 2021-05-22
    • 2012-07-20
    • 1970-01-01
    • 2013-07-01
    • 2014-01-06
    • 1970-01-01
    • 2013-02-02
    • 2010-12-23
    • 2013-06-30
    相关资源
    最近更新 更多