user1551817
user1551817

Reputation: 7471

Be notified when a user tweets, using Tweepy

I am playing around with a twitter bot using tweepy.

I have got the code to successfully filter, based on words contained in the tweets (e.g. my trigger phrase), doing something like:

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

This works perfectly.

But I want my code to filter when a certain user tweets (e.g. 'someuser').

I had tried:

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

But when I run the code, after a second or two, it stops with no output.

Any help would be great.

In summary, I want to be able to do something whenever a certain user tweets.


The entire code:

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'])

Upvotes: 7

Views: 2610

Answers (2)

jacklondon
jacklondon

Reputation: 155

I use this for retrive the Id_user for follow in 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))

Upvotes: 4

user1551817
user1551817

Reputation: 7471

The problem was just that I was trying to enter:

follow=['someuser']

But I needed to be using the user id number and not just the screen name.

You can find the user id number for any screen name on various web sites.

Upvotes: 2

Related Questions