【问题标题】:Python 2.7 - Tweepy - How to get rate_limit_status()?Python 2.7 - Tweepy - 如何获取 rate_limit_status()?
【发布时间】:2015-07-30 13:02:20
【问题描述】:

我正在使用 Python 2.7 和最新版本的 tweepy 模块开发 twitter 应用程序。我不知道的一件事是如何使用函数 rate_limit_status()

这是我的代码:

import tweepy, time, sys, random, pickle
import pprint

# argfile = str(sys.argv[1])

#enter the corresponding information from your Twitter application:
CONSUMER_KEY = ''
CONSUMER_SECRET = ''
ACCESS_KEY = ''
ACCESS_SECRET = ''

auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth.set_access_token(ACCESS_KEY, ACCESS_SECRET)

api = tweepy.API(auth)
public_tweets = api.home_timeline()
user = api.get_user('@MyUserName')

print api.rate_limit_status()

当我打印函数的结果时,它给了我一个我无法破译的大字典。我查看了 tweepy 文档,但找不到任何关于使用 rate_limit_status() 的好例子。

下一步我应该怎么做才能解决此类问题?

是否有工具可以格式化这些大字典,以便我可以阅读它们并尝试破译如何访问字典中的值?

编辑:

原来我对什么是 Rest API 以及它的工作原理没有很好的理解!我期待着更复杂的事情发生在我的脑海中。

我实际上切换到了 twitter Python 模块 twitter 库而不是 Tweepy,然后对如何使用 Twitter API 进行了大量研究。

两个真正帮助我的 youtube 视频是:

https://www.youtube.com/watch?v=7YcW25PHnAA

https://www.youtube.com/watch?v=fhPb6ocUz_k

Postman Chrome 应用程序非常棒,让我可以轻松地测试和可视化我对 Twitter API 的调用是如何工作的,并且它可以轻松地将生成的 JSON 格式化为以便我可以阅读它。

为了进行快速计算,我还从 Postman 获取 JSON 并将其放入该网站 http://konklone.io/json/ 以获取一个 csv,然后我可以在 Excel 中打开它并确保一切都按预期运行并且我现在得到了正确的结果结果数。

毕竟,编写与 Twitter API 交互的 Python 代码很容易!

在此添加所有这些,希望将来对其他人有所帮助!如果确实如此,请告诉我! :)

【问题讨论】:

  • “twitter Python 模块 twitter 库”是指“TwitterAPI”(github.com/geduldig/TwitterAPI)吗?您决定不再使用 Tweepy 有什么特别的原因吗?我刚开始使用 Tweepy,还没有遇到任何问题,所以我想知道是什么让你切换了。
  • 这实际上是在我对 Python 包装器库实际上在幕后所做的事情有深入了解之前。所以我发现只使用发出原始请求并将它们提交到 Twitter API 对我自己更有用。这些包装库本质上没有任何问题。他们的 Twitter API 有一些问题会发生变化,并且会暂时中断,直到有人更新它们。

标签: python python-2.7 dictionary twitter tweepy


【解决方案1】:

根据 Tweepy documentation

返回可用的 API 请求的剩余数量 在当前小时达到 API 限制之前请求用户。 对 rate_limit_status 的调用不计入速率限制。如果 提供身份验证凭据,速率限制状态为 返回验证用户。否则,速率限制状态为 返回请求者的IP地址。

因此,您可以用更简单的话说,它返回一个 JSON 对象,其中告诉您已发出的请求数剩余的请求数,即乍一看很难阅读的原因在于,它包含您进行的每种类型的 API 调用的计数,而不仅仅是您刚刚执行的当前 API 调用。

例如,如果您运行上述脚本,那么您可以看到您已经调用了api.home_timeline() 现在根据 twitter 规则和规定,您只能在给定的窗口会话中调用此方法 15 次,所以如果你解压返回的JSON对象你可以看到有很多数据但是如果你分析数据你会发现api.home_timeline()只影响相关方法的限制,比如当你调用上面的方法时可以使用以下方式检查速率限制:

data = api.rate_limit_status()

print data['resources']['statuses']['/statuses/home_timeline']
print data['resources']['users']['/users/lookup']

但是你必须对返回的 JSON 做一些研究,然后你可以从 JSON 对象中提取相关数据,因为返回的 JSON 对象很难阅读,你总是可以使用 these 类型的链接使其更具用户可读性,然后对其进行分析。

【讨论】:

  • 另外你应该使用 AppAuthHandler(使用 OAuth 2)而不是 OAuthHandler(使用 OAuth1):
猜你喜欢
  • 2014-12-14
  • 1970-01-01
  • 1970-01-01
  • 2012-06-03
  • 1970-01-01
  • 1970-01-01
  • 2019-02-25
  • 2018-04-27
  • 1970-01-01
相关资源
最近更新 更多