我正在试验Twitter API,我发现我的代码只与API documentacion https://dev.twitter.com/docs/api/1.1
中列出的一些函数一起使用时有点令人困惑例如:
我可以使用以下代码成功获取可用地点列表:
from twitter import *
from datetime import datetime
OAUTH_TOKEN = 'my token'
OAUTH_SECRET = 'my secret token'
CONSUMER_KEY = 'my key'
CONSUMER_SECRET ='my secret key'
t = Twitter( auth=OAuth(OAUTH_TOKEN, OAUTH_SECRET,
CONSUMER_KEY, CONSUMER_SECRET) )
trends1 = t.trends.available()
print trends1
但是,如果我使用place()函数,而不是available()则不起作用:
from twitter import *
from datetime import datetime
OAUTH_TOKEN = 'my token'
OAUTH_SECRET = 'my secret token'
CONSUMER_KEY = 'my key'
CONSUMER_SECRET ='my secret key'
t = Twitter( auth=OAuth(OAUTH_TOKEN, OAUTH_SECRET,
CONSUMER_KEY, CONSUMER_SECRET) )
trends1 = t.trends.place(1)
print trends1
代码是相同的,除了我使用place()而不是available()。
有人知道问题是什么吗?
答案 0 :(得分:1)
调用时需要使用关键字参数:
trends1 = t.trends.place(_id=1)
代理API请求的twitter.TwitterCall()
对象不知道如何将位置参数转换为URL参数;它没有从查询中的位置0 的参数到参数id
的映射。
id
关键字是特殊的; twitter
库假定它是URL的一部分;当API调用需要_id
查询参数时,应使用id=..
。
PyPI页面不能很好地呈现自述文件;你可能想要引用GitHub project page,因为那里的例子更具可读性。该页面提供了以下示例:
# to pass in the GET/POST parameter `id` you need to use `_id` t.statuses.oembed(_id=1234567890)
为了完整起见,反例是何时使用id
; API网址geo/id/:place_id
变为:
t.geo.id(id='df51dec6f4ee2b2c') # pass in `id` to extend the URL
t.geo.id.df51dec6f4ee2b2c() # build the URL as an attribute instead
是的,这两种形式都有效,但并非所有有效的id值都是有效的Python属性名称。