Imgur API - 如何在不分页的情况下检索所有收藏夹?

Imgur API - How do I retrieve all favorites without pagination?

根据 Imgur Docs,"GET Account Favorites" API 调用采用可选参数进行分页,这意味着返回所有 objects 时没有它。

然而,当我使用下面的代码片段时(应用程序已经注册并且 OAuth 已经针对我的帐户执行测试),我只得到前 30 JSON objects。在下面的代码片段中,我已经有一个授权用户的 access_token,并且可以检索该用户名的数据。但返回列表的长度始终是前 30 项。

username = token['username']
bearer_headers = {
    'Authorization': 'Bearer ' + token['access_token']
}
fav_url = 'https://api.imgur.com/3/account/' + username + '/' + 'favorites'
r = requests.get(fav_url, headers=bearer_headers)
r_json = r.json()
favorites=r_json['data']
len(favorites)
print(favorites)

请求响应 returns 一个包含三个键的字典:status(HTTP 状态代码)、success(true 或 false)和 data,其值是字典列表(每个收藏夹一个)物品)。

我正在尝试检索这个 没有 分页,这样我就可以将特定的元数据值提取到 Pandas 数据框(id、post 日期等).

我最初认为这是 Jupyter notebook 中的 Pandas 显示问题,但追踪到 API 只返回最新的 30 个列表项,尽管文档另有说明。如果我在末尾放置一个任意页码(例如,“/favorites/1”),它 returns 适合该页面的 30 个项目,但似乎没有获取所有项目的选项或预先检索总项目数或页数。

我错过了什么?

后记:似乎 none 的 URI 无需分页即可工作,例如,获取帐户图片、获取图库提交等。任何有可选“/{{page}}”参数的地方,如果指定 none,它将默认为第一页。所以我想更大的问题是,"does Imgur API even support non-paginated data, and how is that accessed?".

当响应的可能大小可以任意大时,通常使用分页数据。如果像 Imgur 这样的主要服务有一个 API 而 没有 以这种方式工作,我会感到惊讶。

如您所见,page 属性可能是可选的,如果您不提供它,您将获得第一页作为响应。

如果你想得到的不仅仅是第一页,你需要循环遍历页码:

data = []
page = 0
while block := connection.get(page=page):
  data.append(block)
  page += 1

由于 := 赋值表达式,这里假定 Python3.8+。如果您使用的是旧版本,则需要在循环体中设置 block,但同样的想法也适用。