【问题标题】:get more than 20 members of a list with ruby, twitter gem使用 ruby​​、twitter gem 获得 20 多个列表成员
【发布时间】:2012-02-07 18:13:26
【问题描述】:

我在 ruby​​ 中使用 Twitter gem (1.7.1)。我想在 Twitter 上获得我列表中的成员,但我只获得了最后 20 个成员。如何获得超过 20 个成员?

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

【问题讨论】:

  • 你能给我们看一点代码,让我们看看你目前是怎么做的吗?

标签: ruby twitter


【解决方案1】:

首先,传递一个参数“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

【讨论】:

  • 如果可行,别忘了将我的答案标记为答案! :-)
  • 那是阴暗的。汤姆帮助你解决了这个问题,但你没有给他功劳。两天后,您创建了自己的答案,并将自己的答案归功于自己。
【解决方案2】:

我使用“光标”解决了我的问题。这个解决方案对我很有帮助。 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 nil 而它不起作用。因此,请检查您的 screen_name 是否存在。

【讨论】:

  • 谢谢。这行得通。但是,请在我对此表示赞同之前修复格式。
  • 这个答案是非常多余和自私的,因为@TomvanderWoerdt 已经用正确的 DRY 代码向您提供了答案。您只是在 2 天后接受了他的答案,实际上使阅读和理解变得更加困难,并增加了新手错误的机会。你以此为契机,在这里滥用系统来给自己加分。确实很阴暗。
  • @FlakDiNenno 我没有忽略 TomvanderWoerdt 的回答。他的回答对我很有帮助。但是我询问了rails,我想分享我的代码,更多的是关于rails。感谢您的关注! ;)
  • 他的答案 IS 在 rails 中!您应该授予@TomvanderWoerdt 答案,而不是您自己。你仍然可以提供另一个答案像你一样,但 TomvanderWoerdt 应该被授予 ACCEPTED SOLUTION
  • 被盗答案,你应该把他标记为答案
猜你喜欢
  • 1970-01-01
  • 2014-06-23
  • 2011-05-26
  • 2013-01-06
  • 1970-01-01
  • 2014-12-05
  • 1970-01-01
  • 2014-12-27
  • 2013-07-18
相关资源
最近更新 更多