我在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
我在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
首先,传递一个参数“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
谢谢汤姆,我正在尝试。 – yagmurdursun
不要忘记标记我的答案,如果它的工作原理! :-) –
这是阴暗的。汤姆帮你解决了这个问题,但你没有给他信任。两天后,你创建自己的答案,并给你自己的答案信贷。 –
我解决了我的问题,使用“光标”。这个解决方案对我很有帮助 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是否存在。
谢谢。这工作。但是,请在我对此进行调整之前修正格式。 – lightyrs
你是什么意思“修正格式”? – yagmurdursun
这个答案是非常多余的,并且@TomvanderWoerdt已经以正确的DRY代码将答案交给了你。 2天后你简单地回答了他的问题,实际上使阅读和理解更加困难,并增加了新手错误的机会。你已经使用这个机会来滥用这里的系统来给自己点数。确实,非常阴暗。 –
你能告诉我们一点点的代码,以便我们看到你目前在做些什么吗? – ninesided