【问题标题】:Get last Twitter mention from API with Tweepy avoiding rate limit使用 Tweepy 从 API 获取最后一次 Twitter 提及,避免速率限制
【发布时间】:2019-04-01 13:21:19
【问题描述】:

我曾经有一些可以在 Tweepy 流监听器上自动回复的运行良好的 Python,但由于 8 月份 Twitter API 的变化,它不再工作了。

我正在重建它,每 10 秒获取一次我最近的提及(理想情况下,它会更少,因为我想做近乎即时的回复),并检查它是否在最后 10 秒内......如果然后脚本假定它是一条新推文并回复。

from tweepy import OAuthHandler
from tweepy import API
from datetime import datetime, time, timedelta

consumer_key = ''
consumer_secret = ''
access_token = ''
access_token_secret = ''
account_screen_name = ''
account_user_id = '897579556009332736'

auth = OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
twitterApi = API(auth)

mentions = twitterApi.mentions_timeline(count=1)
now = datetime.now()

for mention in mentions:
    if now < (mention.created_at + timedelta(hours=1) + timedelta(seconds=10)):
        print "there's a mention in the last 10 seconds"
        # do magic reply stuff here!
    else:
        print "do nothing, no recent tweets/the last mention was more than 10 seconds ago so it isn't new"

这可以每 12 秒循环一次;但是再少一点,它就会达到速率限制(即上面的这种方法在 10 秒时最终会达到速率限制)......所以,有没有更好的方法来检索最近的提及,以便根据提到?我觉得我可能以一种非常低效的方式执行此操作(例如,此方法实际上得到了最后 20 次提及!!)并且 API 可能有一个更好的方法,我可以更频繁地执行而不会达到速率限制?

【问题讨论】:

    标签: python python-2.7 twitter tweepy rate-limiting


    【解决方案1】:

    回答

    使用 tweepy:否

    使用其他方法:可以,但不是免费的

    说明

    首先要了解的是,twitter 确实允许通过其 API 实时流式传输推文。接下来是可以使用他们的 API 来跟踪包含一些 @TrackedUsername 的推文,以实时跟踪提及。然而,虽然第一个功能可以通过许多库和包装 API 免费使用,但第二个功能不是。这是他们锁定在每月订阅其高级或企业 api 之后的功能之一。

    我所知道的是,人们不会使用分布式的 tweepy 来利用这些服务。也许有人已经修改了它以供个人使用,与这些功能兼容,但如果是这样,我还没有找到它。人们使用的是Python Twitter API

    推测

    由于我自己从未使用过他们的高级服务,因此值得阅读我接下来要说的内容,但据我了解,他们的付费使用服务的身份验证协议略有不同,这就是导致问题的原因用 tweepy。

    回到事实

    基本上这意味着搜索@TrackedUsername 将不会返回任何内容,搜索TrackedUsername 将不会返回包含@TrackedUsername#TrackedUsername 的推文(除非它还只包含TrackedUsername 但你'正在跟踪文本而不是提及)。基本上是因为 twitter 想通过这项服务获得报酬。

    如果您确实选择为此服务付费,那么最常用的 python 实现是上面提到的Python Twitter API。这些功能将允许您以更高的速率限制实时跟踪包含提及的推文,并支持进一步搜索过去的推文。

    【讨论】:

    • 所以基本上 Twitter 正在收紧他们的免费 API 服务:(
    • @the_t_test_1 基本上是的。访问任何级别的 API 仍然会收取大量服务费用。我使用 roll20 与远方的朋友进行桌面书呆子游戏,但除非我订阅每月的“高级”会员资格,否则我无法使用他们的任何开发工具。最近一直在考虑。
    • 这是否意味着不再有任何方法可以为地理定位等流式传输推文?这真的很伤心......例如用于onemilliontweetmap.com/… ?
    • @the_t_test_1 据我了解,您仍然可以使用 twitter 流媒体服务。但它更适合个人使用。我不完全确定所有可用的功能,但文档在 twitter 的开发网站上,最后我检查肯定还有一些流媒体功能。我很确定您链接的应用程序受到了影响,因为它们试图以比任何一个(普通)人使用的方式更多的方式进行流式传输。他们正在为他们应用程序的所有用户流式传输。根据使用这些流提取的内容,这可能会给 Twitter 服务器带来很大压力
    • 他们关闭它的原因可能是非常错误的,但我知道很多个人使用的东西仍然是免费的,或者一个人可以负担得起。
    猜你喜欢
    • 2019-08-23
    • 2014-02-14
    • 2018-05-12
    • 1970-01-01
    • 1970-01-01
    • 2022-08-19
    • 1970-01-01
    • 2019-11-23
    • 2022-08-22
    相关资源
    最近更新 更多