2014-09-26 106 views
1

信息,如你在這個代碼中看到的,我希望得到所有關於Twitter的朋友,還有我按照信息。 但是這樣做:最多20個朋友在Twitter4J

PagableResponseList<User> users = twitter.getFriendsList(USER_ID, CURSOR); 

...只是給我的第一個20樓最近的朋友......我該怎麼辦?

它完整代碼:

PagableResponseList<User> users = twitter.getFriendsList(USER_ID, CURSOR); 
     User user = null; 
     max = users.size(); 

     System.out.println("Following: "+max); 
     for (int i = 0 ; i < users.size() ; i++){ 

      user = users.get(i); 

      System.out.print("\nID: "+user.getId()+"/User: "+user.getName()+" /"); 
      System.out.print("\nFollowers: "+user.getFollowersCount()+"\n"); 

      tid.add(Long.parseLong(String.valueOf(user.getId()))); 
      tusername.add(user.getName()); 
      tfollowers.add(Long.parseLong(String.valueOf(user.getFollowersCount()))); 
      tname.add(user.getScreenName()); 

     } 

謝謝..

+0

默認情況下,你只會得到20用戶列表,之後光標將打破。 – Mohit 2014-09-26 09:16:37

回答

-1

我解決我的帖子...感謝桑德,給我一些想法......

事情是改變forwhile ((CURSOR = ids.getNextCursor()) != 0);

而且... user = twitter.showUser(id);

與showUser玩使得有可能獲得,與緩慢的時候,所有關於我的所有朋友的信息...

這就是全部。請勿使用user.get(i);

2

你可以試試這個代碼,以獲得您所關注的人的名單。

long cursor = -1; 
PagableResponseList<User> users; 
while ((cursor = followers.getNextCursor()) != 0); 
{ 
    users = twitter.getFriendsList(userId, cursor); 
} 
+0

不要工作,起了變化爲PagableResponseList名單給我的20人,我遵循限制:/ – juannmcc 2014-09-26 09:16:25

+0

我已經更新了答案你可以試試這個方法現在我們已經改變光標值,現在也不會在20 – Mohit 2014-09-26 09:19:41

1

我對Twitter4J和Twitter本身的文檔進行了窺視,並且都是關於該遊標的。

爲了防止你要一次裝載了一大堆的朋友,微博只返回前20個結果。它不返回前20個結果,但它也返回一個遊標。該光標只是一個由Twitter管理的隨機數字。當您再次撥打電話並通過此光標時,將會返回接下來的20個條目(朋友),並再次使用不同的光標。您可以重複此操作,直到返回的遊標爲零。這意味着沒有更多的條目可用。

如果您想了解更多信息,請查看以下兩個鏈接:Twitter DEVTwitter4J documentation

關於你的Java,你只需要找到一種方式來獲得當前光標,再次傳遞光標到你的方法,使應用程序加載下一個20個條目。根據this piece of information,這應該做的伎倆。

List<User> allUsers = new ArrayList<User>(); 
PagableResponseList<User> users; 
long cursor = -1; 

while (cursor != 0) { 
    users = twitter.getFriendsList(USER_ID, cursor); 
    cursor = users.getNextCursor(); 
    allUsers.add(users); 
} 
+0

停止不要工作,謝謝。速率限制避免了光標。我在想與Paging合作,但我的朋友Sanser沒辦法,沒有辦法...... – juannmcc 2014-09-26 10:04:28

+0

這很奇怪..這看起來似乎是正確的做法。我進一步搜索了一下,發現這個:http://stackoverflow.com/questions/16618037/twitter-rate-limit-hit-while-requesting-friends-with-ruby-gem 在那篇文章中,速率限制也在一定數量的朋友/追隨者/其他人之後受到打擊。當您查看提及的「工作」解決方案時,它使用遞歸方式與我的解決方案一樣。 (https://gist.github.com/kent/451413) – Sander 2014-09-26 10:26:52

+0

其實朋友列表有多大? 如果我看這個頁面(https://dev.twitter.com/rest/public/rate-limits),似乎你可以提出15次請求,然後再限制。根據要求,您可以獲得20個朋友,因此最多可以檢索300個朋友。 實際上,如果你有超過300個朋友,實際上不得不等待該速率限制結束並查詢下一個x朋友,這很奇怪/愚蠢嗎? *編輯*看來這是愚蠢的。發現另一個人有它的問題:http://stackoverflow.com/questions/16174820/rate-limit-twitter-api – Sander 2014-09-26 10:32:18

1

你應該能夠再申請最多200 results at a time

final PagableResponseList<User> users = twitter.getFriendsList(USER_ID, cursor, 200); 
cursor = users.getNextCursor(); 

如果你需要從你程序的調用之間停止的地方開始,那麼你需要存儲的cursor價值的地方。

+0

你真棒 – rupinderjeet 2016-07-03 19:43:01