【问题标题】:Be notified when a user tweets, using Tweepy当用户发推文时收到通知,使用 Tweepy
【发布时间】:2018-10-12 18:23:36
【问题描述】:

我正在使用 tweepy 玩一个 twitter 机器人。

我已经根据推文中包含的单词(例如我的触发短语)成功过滤了代码,执行以下操作:

myStreamListener = MyStreamListener()
myStream = tweepy.Stream(auth = api.auth, listener=MyStreamListener())
myStream.filter(track=['my trigger phrase'])

这很好用。

但我希望我的代码在某个用户发推文时过滤(例如“someuser”)。

我试过了:

myStreamListener = MyStreamListener()
myStream = tweepy.Stream(auth = api.auth, listener=MyStreamListener())
myStream.filter(follow=['someuser'])

但是当我运行代码时,一两秒后,它停止了,没有输出。

任何帮助都会很棒。

总之,我希望能够在某个用户发推文时做点什么。


整个代码:

import tweepy
import time
import sys
import inspect

consumer_key = 'xxxxxxxxxxxxxxxxxxx'
consumer_secret = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
access_token = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
access_token_secret = 'xxxxxxxxxxxxxxxx'

auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
auth.secure = True

api = tweepy.API(auth)

class MyStreamListener(tweepy.StreamListener):
    def on_status(self, status):
            if  status.user.screen_name.encode('UTF-8').lower() == 'someuser':
                print 'TWEET:', status.text.encode('UTF-8')
                print 'FOLLOWERS:', status.user.followers_count
                print time.ctime()
                print '\n'

myStreamListener = MyStreamListener()
myStream = tweepy.Stream(auth = api.auth, listener=MyStreamListener())
myStream.filter(follow=['someuser'])

【问题讨论】:

  • 你能把MyStreamListener的代码贴出来吗?
  • 抱歉。现在已经发布了上面的所有内容。
  • 尝试从您的 on_status 方法中删除 if 语句。 filter 方法应该只返回正确的推文。
  • 当我摆脱 if 语句时,同样的事情发生了 - 代码运行了几秒钟然后停止。没有错误消息,我只是回到我的终端提示符。
  • 实际上,问题似乎是最后一行。当我将“跟随”更改为“跟踪”时,它就起作用了。但我相信这只会帮助你跟踪推文中是否有作品。也许 follow 不是正确的使用方法。

标签: python tweepy


【解决方案1】:

我用它来检索 Id_user 以便在 Stream 中关注

auth = OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth.set_access_token(ACCESS_TOKEN, ACCESS_TOKEN_SECRET)
api = API(auth) 
user = api.get_user(screen_name = '@screenametofollow')
print ("User id:" + str(user.id))
....
stream.filter(follow=str(user.id))

【讨论】:

  • 对不起,我是新手,我只用答案编辑我的消息,没有问题。
【解决方案2】:

问题只是我试图输入:

follow=['someuser']

但我需要使用用户 ID 号,而不仅仅是屏幕名称。

您可以在各种网站上找到任何屏幕名称的用户 ID 号。

【讨论】:

    猜你喜欢
    • 2013-07-12
    • 1970-01-01
    • 2018-06-29
    • 1970-01-01
    • 2013-10-20
    • 2015-06-03
    • 2019-10-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多