使用 Tweepy 在用户发推文时收到通知
Be notified when a user tweets, using Tweepy
我正在玩一个使用 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'])
问题是我试图输入:
关注=['someuser']
但我需要使用用户 ID 号而不仅仅是屏幕名称。
您可以在各种网站上找到任何屏幕名称的用户 ID 号。
我用它来检索 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))
我正在玩一个使用 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'])
问题是我试图输入:
关注=['someuser']
但我需要使用用户 ID 号而不仅仅是屏幕名称。
您可以在各种网站上找到任何屏幕名称的用户 ID 号。
我用它来检索 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))