In [ ]:
from tweepy import StreamListener
import json, time, sys


class SListener(StreamListener):

    def __init__(self, api=None, fprefix='streamer'):
        self.api = api or API()
        self.counter = 0
        self.fprefix = fprefix
        self.output = open('./data/' + fprefix + '.'
                           + time.strftime('%Y%m%d-%H%M%S') + '.json', 'w')
        self.delout = open('./data/delete.txt', 'a')


    def on_data(self, data):
        if 'in_reply_to_status' in data:
            self.on_status(data)
        elif 'delete' in data:
            delete = json.loads(data)['delete']['status']
            if self.on_delete(delete['id'], delete['user_id']) is False:
                return False
        elif 'limit' in data:
            if self.on_limit(json.loads(data)['limit']['track']) is False:
                return False
        elif 'warning' in data:
            warning = json.loads(data)['warning']
            print warning['message']
            return False


    def on_status(self, status):
        self.output.write(status + "\n")

        self.counter += 1

        if self.counter >= 20000:
            self.output.close()
            self.output = open('./data/' + self.fprefix + '.'
                               + time.strftime('%Y%m%d-%H%M%S') + '.json', 'w')
            self.counter = 0

        return


    def on_delete(self, status_id, user_id):
        self.delout.write(str(status_id) + "\n")
        return


    def on_limit(self, track):
        sys.stderr.write(track + "\n")
        return


    def on_error(self, status_code):
        sys.stderr.write('Error: ' + str(status_code) + "\n")
        return False


    def on_timeout(self):
        sys.stderr.write("Timeout, sleeping for 60 seconds...\n")
        time.sleep(60)
        return

In [ ]:
from slistener import SListener
import time, tweepy, sys

consumer_key        = "xxxxxx"
consumer_secret     = "xxxxxx"
access_token        = "xxxxxx"
access_token_secret = "xxxxxx"

# OAuth process, using the keys and tokens
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth)

track = ['NowListening']
follow = []

listen = SListener(api, 'test')
stream = tweepy.Stream(auth, listen)

stream.filter(track=track, follow=follow)