2014-03-24 31 views
1

讓用戶我是一個,但疑惑的LastFM等API,更準確地對PaginatedResultLast.fm的Java API - 如何從PaginatedResult

我在PaginatedResult讀取所有用戶從一組:

PaginatedResult<de.umass.lastfm.User> users = Group.getMembers("Classic Rock", key); 

然後我嘗試了兩種方法來顯示所有的用戶。應該有25000左右,但我只能得到25左右。只有第一頁?我怎麼能得到所有的結果?

//  for (int i = 0; i < users.getTotalPages();i++){ 
      for (User thisuser: users.getPageResults()){ 
       //for each user 
       System.out.print(thisuser.getName() + " - age: " + thisuser.getAge() + " - country: " + thisuser.getCountry() + " - "+ thisuser.getGender() + " - is: " + thisuser.getId() + " - playcount: " + thisuser.getPlaycount() + " - num playlists: " + thisuser.getNumPlaylists() + "\n"); 
      } 
//  } 

     for (User thisuser: users){ 
      //for each user 
      System.out.print(thisuser.getName() + " - age: " + thisuser.getAge() + " - country: " + thisuser.getCountry() + " - "+ thisuser.getGender() + " - is: " + thisuser.getId() + " - playcount: " + thisuser.getPlaycount() + " - num playlists: " + thisuser.getNumPlaylists() + "\n"); 
     } 

回答

1

你只使用該getMembers(String group, String apiKey)方法獲取的分頁結果第一頁。您需要使用getMembers(String group, int page, String apiKey)過載,併爲您想要在第一頁之外檢索的每個頁面調用它。每個結果都包含有關可用頁數的信息。

不要忘記Last.FM API的使用規則,您可以多久進行一次API調用 - 獲得25000 Classic Rockers所需的1000次調用將需要1.5個小時才能完成(每次請求間隔5秒)。

documentation;

一個PaginatedResult是由結果集可能是這樣 大,它需要進行分頁方法返回。每個PaginatedResult包含 結果頁面的總數,當前頁面和當前頁面的Collection條目的 條目。

+0

非常感謝! – dorien