2011-11-28 147 views
3

我在Twitter中使用Twitter宝石(1.7.1)。我想在Twitter上获得我的名单中的成员,但我只获得了最后二十名成员。我怎么能得到超过二十名成员?用ruby获取超过20名成员的列表,twitter gem

listmembers = client.list_members(username, listname) 
listmembers.users.each do |lmname| 
       p lmname.screen_name 
      end 
+1

你能告诉我们一点点的代码,以便我们看到你目前在做些什么吗? – ninesided

回答

7

首先,传递一个参数“cursor = -1”。那么你得到的第20位Twitter的API将返回一个名为“next_cursor”领域 - 通过这个光标,你会得到下一个20

例(伪):

cursor = -1 
do { 
    # get data, using the cursor 
    data = {} 

    cursor = data.next_cursor 
} while (len(data) > 0) # Loop while we're still getting data back 

更多信息上https://dev.twitter.com/docs/api/1/get/lists/members

+0

谢谢汤姆,我正在尝试。 – yagmurdursun

+0

不要忘记标记我的答案,如果它的工作原理! :-) –

+7

这是阴暗的。汤姆帮你解决了这个问题,但你没有给他信任。两天后,你创建自己的答案,并给你自己的答案信贷。 –

1

我解决了我的问题,使用“光标”。这个解决方案对我很有帮助 How to use Twitter Api To Get more than 20 list Members in a single request?

我编辑了ruby的代码。我的代码是那个;我保持一个整数值,

pagevalue = 0 
if (listmembers.next_cursor == 0) # it means we have only one page 
    listmembers.users.each do |lmname| 
    p lmname.screen_name 
    end 
end 
else # it means we have pages more than one 
    while (listmembers.next_cursor != 0) 
    listmembers.users.each do |lmname| 
     p lmname.screen_name # check screen_name is nil or not 
     end 
    end 
    pagevalue = listmembers.next_cursor 
    listmembers = client.list_members(username, listname, :cursor => pagevalue) 
    if (listmembers.next_cursor == 0) # for last page 
    listmembers.users.each do |lmname| 
    p lmname.screen_name 
    end 
    end 
end 

如果你得到screen_name无,而它将无法正常工作。所以,检查你的screen_name是否存在。

+0

谢谢。这工作。但是,请在我对此进行调整之前修正格式。 – lightyrs

+0

你是什么意思“修正格式”? – yagmurdursun

+1

这个答案是非常多余的,并且@TomvanderWoerdt已经以正确的DRY代码将答案交给了你。 2天后你简单地回答了他的问题,实际上使阅读和理解更加困难,并增加了新手错误的机会。你已经使用这个机会来滥用这里的系统来给自己点数。确实,非常阴暗。 –

相关问题