KeyError:使用Python Instagram API客户端的“数据”


问题内容

我正在将此客户端python-instagramPython 3.4.3on一起使用MacOS

这是我的步骤:

  • 在上注册了新客户instagram,收到client_idclient_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))