2011-11-28 155 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天后你簡單地回答了他的問題,實際上使閱讀和理解更加困難,並增加了新手錯誤的機會。你已經使用這個機會來濫用這裏的系統來給自己點數。確實,非常陰暗。 –

相關問題