只有一些功能适用于Twitter API

时间:2013-10-12 08:34:41

标签: python twitter twitter-oauth

我正在试验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()。

有人知道问题是什么吗?

1 个答案:

答案 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属性名称。