代码之家  ›  专栏  ›  技术社区  ›  the_t_test_1

通过Tweepy避开速率限制,从API获得最后一次Twitter提及

  •  6
  • the_t_test_1  · 技术社区  · 8 年前

    我曾经有一些很好的python在Tweepy流监听器上自动回复,但是由于8月份twitterapi的变化,它不再工作了。

    我正在重新构建它,每10秒收到一次我最近提到的内容(理想情况下,它会比我想的要少,因为我想几乎是即时回复),并检查它是否在最后10秒内。。。如果是的话,脚本会假设这是一条新的tweet并回复。

    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"
    

    1 回复  |  直到 8 年前
        1
  •  3
  •   Thunderwood    7 年前

    回答

    使用tweepy:没有

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

    解释

    @TrackedUsername 以实时跟踪提到的内容。然而,虽然第一个特性可以通过许多库和包装器api自由使用,但第二个特性不是。这是他们每月订阅premium或enterprise api后锁定的功能之一。

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

    投机

    由于我本人从未使用过他们的高级服务,因此我接下来要说的内容值得一读,但据我所知,他们的付费使用服务的身份验证协议略有不同,这正是tweepy出现问题的原因。

    回到事实上来

    本质上这意味着 @TrackedUsername公司 会一无所获,寻找 TrackedUsername 不会返回包含 @TrackedUsername公司 或 #TrackedUsername TrackedUsername公司 但是你跟踪的是短信而不是提及)。基本上是因为twitter想为这项服务付费。

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