我对lastfm 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");
}
最佳答案
您使用的getMembers(String group, String apiKey)
方法仅获得分页结果的第一页。您需要使用getMembers(String group, int page, String apiKey)
重载,并在第一页以外的每个要检索的页面上调用它。每个结果都包含有关可用页面数的信息。
另外,请不要忘记Last.FM API使用规则中有关您可以多久进行一次API调用的要求-要获得25000个Classic Rocker,需要进行1000次调用,而检索则需要1.5小时(两次请求之间需要5秒)。
从documentation;
方法返回的PaginatedResult
结果集可能是这样
大到需要分页。每个PaginatedResult
包含
结果页总数,当前页和Collection
个
当前页面的条目。