我对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
  当前页面的条目。

09-25 22:54