B_s
B_s

Reputation: 3036

Twython getting tweets from user

I am using Twython to get a stream of tweets. I used this tutorial, expect that I am not using GPIO.

My code is the following:

import time
from twython import TwythonStreamer

TERMS='#stackoverflow'

APP_KEY='MY APP KEY'
APP_SECRET='MY APP SECRET'
OAUTH_TOKEN='MY OATH TOKEN'
OAUTH_TOKEN_SECRET='MY OATH TOKEN SECRET'

class BlinkyStreamer(TwythonStreamer):
    def on_success(self, data):
        if 'text' in data:
            print data['text'].encode('utf-8')
try:
        stream = BlinkyStreamer(APP_KEY, APP_SECRET, OAUTH_TOKEN, OAUTH_TOKEN_SECRET)
        stream.statuses.filter(track=TERMS)
except KeyboardInterrupt

That outputs a stream of all tweets containing #stackoverflow. But I want to output the tweet if it is from a certain user, e.g. @StackStatus.

I am running this on a Raspberry Pi.

How would I do that? Any help is appreciated!

Edit: if there is another, other or easier, way to execute some script when a new tweet is placed by some user, please let me know, this would solve my question as well!

Upvotes: 1

Views: 1724

Answers (2)

Ian Carbarns
Ian Carbarns

Reputation: 11

The 'follow' parameter does not work as stated above by teknoboy. Correct usage is with the user's ID, not their screen name. You can get user IDs using http://gettwitterid.com/.

The third parameter available is Location - you can use 1, 2 or 3 of then as desired. They become linked with "OR", not 'AND'.

Example Usage:

SearchTerm = 'abracadabra' # If spaces are included, they are 'OR', ie finds tweets with any one of the words, not the whole string.
Tweeter = '25073877' # This is Donald Trump, finds tweets from him or mentioning him
Place = '"47.405,-177.296,1mi"' # Sent from within 1 mile of Lat, Long

stream.statuses.filter(track=SearchTerm, follow=Tweeter, location=Place)

Upvotes: 1

teknoboy
teknoboy

Reputation: 175

you should supply the filter with the follow parameter to stream specific users' tweets. if you wish to only follow one user, you can define FOLLOW='StackStatus' and change the appropriate line to
stream.statuses.filter(track=TERMS, follow=FOLLOW)
if you wish to see all the user's tweets, regardless of keyword, you can omit the track parameter:
stream.statuses.filter(follow=FOLLOW)

Upvotes: 0

Related Questions