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

问题描述 投票:0回答:1

根据Imgur Docs,“ GET Account收藏夹” API调用采用可选参数进行分页,这意味着所有对象都将不带它返回。

但是,当我使用以下代码片段(该应用程序已注册并且OAuth已针对我的帐户执行测试)时,我仅获得前30个JSON对象。在下面的代码段中,我已经有一个授权用户的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)

请求响应返回一个包含三个键的字典:状态(HTTP状态码),成功(是或否)和数据,其值是字典列表(每个喜欢的项一个)。

我正在尝试检索此分页,以便将特定的元数据值提取到Pandas数据框中(id,发布日期等)。

我本来以为这是Jupyter笔记本中的Pandas显示问题,但尽管文档另有说明,但将其追溯到API仅返回最新的30个列表项。如果我在末尾放置任意页码(例如,“ / favorites / 1”),它将返回适合该页的30个项目,但似乎没有选择获取所有项目或检索计数的选项总项目数或提前页数。

我想念什么?

后记:看起来,没有URI都不能在没有分页的情况下工作,例如获取帐户图像,获取画廊提交等。如果有可选的“ / {{page}}”参数,则如果没有,则默认为首页没有指定。因此,我想更大的问题是:“ Imgur API甚至支持非分页数据,如何访问它?”

python imgur
1个回答
0
投票

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

正如您所发现的,page属性可能是可选的,如果不提供该属性,则会得到第一页作为响应。

如果要获得比第一页更多的内容,则需要遍历页码:

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

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

© www.soinside.com 2019 - 2024. All rights reserved.