0

我正在尝试使用 Twitter API,但我发现我的代码仅适用于 API 文档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() 之外,代码是相同的。

有谁知道问题是什么?

4

1 回答 1

1

调用时需要使用关键字参数:

trends1 = t.trends.place(_id=1)

代理 API 请求的twitter.TwitterCall()对象不知道如何将位置参数转换为 URL 参数;它没有从位置 0参数id到查询中的参数的映射。

然而id,关键字是特殊的;库twitter假定它是 URL 的一部分;当 API 调用需要查询参数_id时应使用。id=..

PyPI 页面不能很好地呈现自述文件;您可能想参考GitHub 项目页面,因为那里的示例更具可读性。除其他外,该页面提供了以下示例:

# to pass in the GET/POST parameter `id` you need to use `_id`
t.statuses.oembed(_id=1234567890)

为了完整起见,反例是何时使用id; API URLgeo/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 属性名称。

于 2013-10-12T09:01:59.700 回答