我在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