KeyError:使用Python Instagram API客户端的“数据”
问题内容:
我正在将此客户端python-instagram
与Python 3.4.3
on一起使用MacOS
。
这是我的步骤:
- 在上注册了新客户
instagram
,收到client_id
并client_secret
- 点安装
python-instagram
- 复制
sample_app.py
到我的Mac
我按照上的说明进行操作Sample app
,我通过instagram成功授权了我的应用,并尝试了此示例列表,但没有一个起作用。单击后<h2>
,API请求的标头和计数器发生变化,然后看到Remaining API Calls = 486/500
。
如果我尝试在终端中显示User Recent Media
异常KeyError: 'data'
。如果删除try - except
构造,则在中保留块try
,此时将看到“错误:500 Internal Server Error”。
这是回溯:
Traceback (most recent call last):
File "/Users/user/.envs/insta/lib/python3.4/site-packages/bottle.py", line 862, in _handle
return route.call(**args)
File "/Users/user/.envs/insta/lib/python3.4/site-packages/bottle.py", line 1732, in wrapper
rv = callback(*a, **ka)
File "sample_app.py", line 79, in on_recent
recent_media, next = api.user_recent_media()
File "/Users/user/.envs/insta/lib/python3.4/site-packages/instagram/bind.py", line 197, in _call
return method.execute()
File "/Users/user/.envs/insta/lib/python3.4/site-packages/instagram/bind.py", line 189, in execute
content, next = self._do_api_request(url, method, body, headers)
File "/Users/user/.envs/insta/lib/python3.4/site-packages/instagram/bind.py", line 151, in _do_api_request
obj = self.root_class.object_from_dictionary(entry)
File "/Users/user/.envs/insta/lib/python3.4/site-packages/instagram/models.py", line 99, in object_from_dictionary
for comment in entry['comments']['data']:
KeyError: 'data'
我使用的所有代码均来自Instagram的官方python API客户端示例。
问题答案:
Github issue
该错误有一个解决方法,fix
已发送一个,但尚未合并。
将单行修补程序添加到models.py
已安装的软件包上。
用sudo打开:
sudo vi /Library/Python/2.7/site-packages/instagram/models.py # Use relevant python version
在第99行上,添加以下代码:
if "data" in entry["comments"]:
正确缩进两行:
for comment in entry['comments']['data']:
new_media.comments.append(Comment.object_from_dictionary(comment))