def main(): args = parse_arguments() if not all((args.token, args.token_secret, args.consumer_key, args.consumer_secret)): print(__doc__) return 2 # When using twitter stream you must authorize. auth = OAuth(args.token, args.token_secret, args.consumer_key, args.consumer_secret) if args.user_stream: stream = TwitterStream(auth=auth, domain='userstream.twitter.com') tweet_iter = stream.user() elif args.site_stream: stream = TwitterStream(auth=auth, domain='sitestream.twitter.com') tweet_iter = stream.site() else: stream = TwitterStream(auth=auth, timeout=60.0) tweet_iter = stream.statuses.sample() # Iterate over the sample stream. for tweet in tweet_iter: # You must test that your tweet has text. It might be a delete # or data message. if tweet.get('text'): printNicely(tweet['text'])
def stream(domain, args, name='Rainbow Stream'): """ Track the stream """ # The Logo art_dict = { c['USER_DOMAIN']: name, c['PUBLIC_DOMAIN']: args.track_keywords, c['SITE_DOMAIN']: name, } if c['ASCII_ART']: ascii_art(art_dict[domain]) # These arguments are optional: stream_args = dict( timeout=args.timeout, block=not args.no_block, heartbeat_timeout=args.heartbeat_timeout) # Track keyword query_args = dict() if args.track_keywords: query_args['track'] = args.track_keywords # Get stream stream = TwitterStream( auth=authen(), domain=domain, **stream_args) try: if domain == c['USER_DOMAIN']: tweet_iter = stream.user(**query_args) elif domain == c['SITE_DOMAIN']: tweet_iter = stream.site(**query_args) else: if args.track_keywords: tweet_iter = stream.statuses.filter(**query_args) else: tweet_iter = stream.statuses.sample() for tweet in tweet_iter: if tweet is None: printNicely("-- None --") elif tweet is Timeout: printNicely("-- Timeout --") elif tweet is HeartbeatTimeout: printNicely("-- Heartbeat Timeout --") elif tweet is Hangup: printNicely("-- Hangup --") elif tweet.get('text'): draw( t=tweet, keyword=args.track_keywords, check_semaphore=True, fil=args.filter, ig=args.ignore, ) elif tweet.get('direct_message'): print_message(tweet['direct_message'],check_semaphore=True) except TwitterHTTPError: printNicely('') printNicely( magenta("We have maximum connection problem with twitter'stream API right now :("))
def main(): args = parse_arguments() # When using twitter stream you must authorize. auth = OAuth(args.token, args.token_secret, args.consumer_key, args.consumer_secret) # These arguments are optional: stream_args = dict(timeout=args.timeout, block=not args.no_block, heartbeat_timeout=args.heartbeat_timeout) query_args = dict() if args.track_keywords: query_args['track'] = args.track_keywords if args.user_stream: stream = TwitterStream(auth=auth, domain='userstream.twitter.com', **stream_args) tweet_iter = stream.user(**query_args) elif args.site_stream: stream = TwitterStream(auth=auth, domain='sitestream.twitter.com', **stream_args) tweet_iter = stream.site(**query_args) else: stream = TwitterStream(auth=auth, **stream_args) if args.track_keywords: tweet_iter = stream.statuses.filter(**query_args) else: tweet_iter = stream.statuses.sample() # Connect to RethinkDB try: db.connect() except RqlDriverError: log.error('Couldn\'t connect to database.') # Iterate over the sample stream. for tweet in tweet_iter: # You must test that your tweet has text. It might be a delete or data message. if tweet is None: log.error('None') elif tweet is Timeout: log.error('Timeout') elif tweet is HeartbeatTimeout: log.error('Heartbeat Timeout') elif tweet is Hangup: log.error('Hangup') elif tweet.get('text'): tweet[ 'stream_id'] = '1234567890' # TODO: add that stream_id gets passed to open_stream.py db.insert(DATABASE, TWEETS_TABLE, tweet) printNicely(tweet['text']) else: log.error('Some data ' + str(tweet))
def main(): args = parse_arguments() # When using twitter stream you must authorize. auth = OAuth(args.token, args.token_secret, args.consumer_key, args.consumer_secret) # These arguments are optional: stream_args = dict( timeout=args.timeout, block=not args.no_block, heartbeat_timeout=args.heartbeat_timeout) query_args = dict() if args.track_keywords: query_args['track'] = args.track_keywords if args.user_stream: stream = TwitterStream(auth=auth, domain='userstream.twitter.com', **stream_args) tweet_iter = stream.user(**query_args) elif args.site_stream: stream = TwitterStream(auth=auth, domain='sitestream.twitter.com', **stream_args) tweet_iter = stream.site(**query_args) else: stream = TwitterStream(auth=auth, **stream_args) if args.track_keywords: tweet_iter = stream.statuses.filter(**query_args) else: tweet_iter = stream.statuses.sample() # Connect to RethinkDB try: db.connect() except RqlDriverError: log.error('Couldn\'t connect to database.') # Iterate over the sample stream. for tweet in tweet_iter: # You must test that your tweet has text. It might be a delete or data message. if tweet is None: log.error('None') elif tweet is Timeout: log.error('Timeout') elif tweet is HeartbeatTimeout: log.error('Heartbeat Timeout') elif tweet is Hangup: log.error('Hangup') elif tweet.get('text'): tweet['stream_id'] = '1234567890' # TODO: add that stream_id gets passed to open_stream.py db.insert(DATABASE, TWEETS_TABLE, tweet) printNicely(tweet['text']) else: log.error('Some data ' + str(tweet))
def main(): args = parse_arguments() # When using twitter stream you must authorize. auth = OAuth(args.token, args.token_secret, args.consumer_key, args.consumer_secret) # These arguments are optional: stream_args = dict(timeout=args.timeout, block=not args.no_block, heartbeat_timeout=args.heartbeat_timeout) query_args = dict() if args.track_keywords: query_args['track'] = args.track_keywords if args.user_stream: stream = TwitterStream(auth=auth, domain='userstream.twitter.com', **stream_args) tweet_iter = stream.user(**query_args) elif args.site_stream: stream = TwitterStream(auth=auth, domain='sitestream.twitter.com', **stream_args) tweet_iter = stream.site(**query_args) else: stream = TwitterStream(auth=auth, **stream_args) if args.track_keywords: tweet_iter = stream.statuses.filter(**query_args) else: tweet_iter = stream.statuses.sample() # Iterate over the sample stream. for tweet in tweet_iter: # You must test that your tweet has text. It might be a delete # or data message. if tweet is None: printNicely("-- None --") elif tweet is Timeout: printNicely("-- Timeout --") elif tweet is HeartbeatTimeout: printNicely("-- Heartbeat Timeout --") elif tweet is Hangup: printNicely("-- Hangup --") elif tweet.get('text'): printNicely(tweet['text']) else: printNicely("-- Some data: " + str(tweet))
def main(): args = parse_arguments() # When using twitter stream you must authorize. auth = OAuth(args.token, args.token_secret, args.consumer_key, args.consumer_secret) # These arguments are optional: stream_args = dict( timeout=args.timeout, block=not args.no_block, heartbeat_timeout=args.heartbeat_timeout) query_args = dict() if args.track_keywords: query_args['track'] = args.track_keywords if args.user_stream: stream = TwitterStream(auth=auth, domain='userstream.twitter.com', **stream_args) tweet_iter = stream.user(**query_args) elif args.site_stream: stream = TwitterStream(auth=auth, domain='sitestream.twitter.com', **stream_args) tweet_iter = stream.site(**query_args) else: stream = TwitterStream(auth=auth, **stream_args) if args.track_keywords: tweet_iter = stream.statuses.filter(**query_args) else: tweet_iter = stream.statuses.sample() # Iterate over the sample stream. for tweet in tweet_iter: # You must test that your tweet has text. It might be a delete # or data message. if tweet is None: printNicely("-- None --") elif tweet is Timeout: printNicely("-- Timeout --") elif tweet is HeartbeatTimeout: printNicely("-- Heartbeat Timeout --") elif tweet is Hangup: printNicely("-- Hangup --") elif tweet.get('text'): printNicely(tweet['text']) else: printNicely("-- Some data: " + str(tweet))
def main(): args = parse_arguments() # When using twitter stream you must authorize. auth = OAuth(args.token, args.token_secret, args.consumer_key, args.consumer_secret) # These arguments are optional: stream_args = dict(timeout=args.timeout, block=not args.no_block, heartbeat_timeout=args.heartbeat_timeout) query_args = dict() if args.track_keywords: query_args['track'] = args.track_keywords if args.user_stream: stream = TwitterStream(auth=auth, domain='userstream.twitter.com', **stream_args) tweet_iter = stream.user(**query_args) elif args.site_stream: stream = TwitterStream(auth=auth, domain='sitestream.twitter.com', **stream_args) tweet_iter = stream.site(**query_args) else: stream = TwitterStream(auth=auth, **stream_args) if args.track_keywords: tweet_iter = stream.statuses.filter(**query_args) else: tweet_iter = stream.statuses.sample() i = 0 # Iterate over the sample stream. for tweet in tweet_iter: # You must test that your tweet has text. It might be a delete # or data message. if i > 10: exit(0) if tweet.get('text') and tweet.get('lang') == 'en': #printNicely("@" + tweet['user']['screen_name'] + ' [' + str(tweet['retweet_count']) + ']') printNicely(tweet['text']) i += 1
def main(): args = parse_arguments() # When using twitter stream you must authorize. auth = OAuth(args.token, args.token_secret, args.consumer_key, args.consumer_secret) # These arguments are optional: stream_args = dict(timeout=args.timeout, block=not args.no_block, heartbeat_timeout=args.heartbeat_timeout) query_args = dict() if args.track_keywords: query_args["track"] = args.track_keywords if args.user_stream: stream = TwitterStream(auth=auth, domain="userstream.twitter.com", **stream_args) tweet_iter = stream.user(**query_args) elif args.site_stream: stream = TwitterStream(auth=auth, domain="sitestream.twitter.com", **stream_args) tweet_iter = stream.site(**query_args) else: stream = TwitterStream(auth=auth, **stream_args) if args.track_keywords: tweet_iter = stream.statuses.filter(**query_args) else: tweet_iter = stream.statuses.sample() i = 0 # Iterate over the sample stream. for tweet in tweet_iter: # You must test that your tweet has text. It might be a delete # or data message. if i > 10: exit(0) if tweet.get("text") and tweet.get("lang") == "en": # printNicely("@" + tweet['user']['screen_name'] + ' [' + str(tweet['retweet_count']) + ']') printNicely(tweet["text"]) i += 1
def main(): args = parse_arguments() args.track_keywords = 'temer' time = strftime("%Y%m%d_%H%M%S", gmtime()) # When using twitter stream you must authorize. # auth = OAuth(args.token, args.token_secret, # args.consumer_key, args.consumer_secret) auth = OAuth( "", # OAUTH_TOKEN "", # OAUTH_SECRET, "", # CONSUMER_KEY, "" # CONSUMER_SECRET ) # These arguments are optional: stream_args = dict(timeout=args.timeout, block=not args.no_block, heartbeat_timeout=args.heartbeat_timeout) query_args = dict() if args.track_keywords: query_args['track'] = args.track_keywords if args.user_stream: stream = TwitterStream(auth=auth, domain='userstream.twitter.com', **stream_args) tweet_iter = stream.user(**query_args) elif args.site_stream: stream = TwitterStream(auth=auth, domain='sitestream.twitter.com', **stream_args) tweet_iter = stream.site(**query_args) else: stream = TwitterStream(auth=auth, **stream_args) if args.track_keywords: tweet_iter = stream.statuses.filter(**query_args) else: tweet_iter = stream.statuses.sample() # Iterate over the sample stream. for tweet in tweet_iter: # You must test that your tweet has text. It might be a delete # or data message. if tweet is None: printNicely("-- None --") elif tweet is Timeout: printNicely("-- Timeout --") elif tweet is HeartbeatTimeout: printNicely("-- Heartbeat Timeout --") elif tweet is Hangup: printNicely("-- Hangup --") elif tweet.get('text'): t_data = 'id: ' + str(tweet['id']) t_data += '\ndate: ' + tweet['created_at'] t_data += '\ntext: ' + tweet['text'] + '\n' save(time, t_data) print(tweet['id']) printNicely(tweet['created_at']) printNicely(tweet['text']) print('\n') else: printNicely("-- Some data: " + str(tweet))
def stream(domain, args, name='Rainbow Stream'): """ Track the stream """ # The Logo art_dict = { c['USER_DOMAIN']: name, c['PUBLIC_DOMAIN']: args.track_keywords, c['SITE_DOMAIN']: name, } if c['ASCII_ART']: ascii_art(art_dict[domain]) # These arguments are optional: stream_args = dict( timeout=0.5, # To check g['stream_stop'] after each 0.5 s block=True, heartbeat_timeout=c['HEARTBEAT_TIMEOUT'] * 60) # Track keyword query_args = dict() if args.track_keywords: query_args['track'] = args.track_keywords # Get stream stream = TwitterStream(auth=authen(), domain=domain, **stream_args) try: if domain == c['USER_DOMAIN']: tweet_iter = stream.user(**query_args) elif domain == c['SITE_DOMAIN']: tweet_iter = stream.site(**query_args) else: if args.track_keywords: tweet_iter = stream.statuses.filter(**query_args) else: tweet_iter = stream.statuses.sample() # Block new stream until other one exits StreamLock.acquire() g['stream_stop'] = False for tweet in tweet_iter: if tweet is None: printNicely("-- None --") elif tweet is Timeout: if (g['stream_stop']): StreamLock.release() break elif tweet is HeartbeatTimeout: printNicely("-- Heartbeat Timeout --") guide = light_magenta("You can use ") + \ light_green("switch") + \ light_magenta(" command to return to your stream.\n") guide += light_magenta("Type ") + \ light_green("h stream") + \ light_magenta(" for more details.") printNicely(guide) sys.stdout.write(g['decorated_name'](c['PREFIX'])) sys.stdout.flush() elif tweet is Hangup: printNicely("-- Hangup --") elif tweet.get('text'): draw( t=tweet, keyword=args.track_keywords, check_semaphore=True, fil=args.filter, ig=args.ignore, ) # Current readline buffer current_buffer = readline.get_line_buffer().strip() # There is an unexpected behaviour in MacOSX readline + Python 2: # after completely delete a word after typing it, # somehow readline buffer still contains # the 1st character of that word if current_buffer and g['cmd'] != current_buffer: sys.stdout.write(g['decorated_name'](c['PREFIX']) + unc(current_buffer)) sys.stdout.flush() elif not c['HIDE_PROMPT']: sys.stdout.write(g['decorated_name'](c['PREFIX'])) sys.stdout.flush() elif tweet.get('direct_message'): print_message(tweet['direct_message'], check_semaphore=True) except TwitterHTTPError: printNicely('') printNicely( magenta( "We have maximum connection problem with twitter'stream API right now :(" ))
def stream(domain, args, name='Rainbow Stream'): """ Track the stream """ # The Logo art_dict = { c['USER_DOMAIN']: name, c['PUBLIC_DOMAIN']: args.track_keywords, c['SITE_DOMAIN']: name, } if c['ASCII_ART']: ascii_art(art_dict[domain]) # These arguments are optional: stream_args = dict( timeout=0.5, # To check g['stream_stop'] after each 0.5 s block=True, heartbeat_timeout=c['HEARTBEAT_TIMEOUT'] * 60) # Track keyword query_args = dict() if args.track_keywords: query_args['track'] = args.track_keywords # Get stream stream = TwitterStream( auth=authen(), domain=domain, **stream_args) try: if domain == c['USER_DOMAIN']: tweet_iter = stream.user(**query_args) elif domain == c['SITE_DOMAIN']: tweet_iter = stream.site(**query_args) else: if args.track_keywords: tweet_iter = stream.statuses.filter(**query_args) else: tweet_iter = stream.statuses.sample() # Block new stream until other one exits StreamLock.acquire() g['stream_stop'] = False for tweet in tweet_iter: if tweet is None: printNicely("-- None --") elif tweet is Timeout: if(g['stream_stop']): StreamLock.release() break elif tweet is HeartbeatTimeout: printNicely("-- Heartbeat Timeout --") guide = light_magenta("You can use ") + \ light_green("switch") + \ light_magenta(" command to return to your stream.\n") guide += light_magenta("Type ") + \ light_green("h stream") + \ light_magenta(" for more details.") printNicely(guide) sys.stdout.write(g['decorated_name'](c['PREFIX'])) sys.stdout.flush() StreamLock.release() break elif tweet is Hangup: printNicely("-- Hangup --") elif tweet.get('text'): draw( t=tweet, keyword=args.track_keywords, humanize=False, check_semaphore=True, fil=args.filter, ig=args.ignore, ) # Current readline buffer current_buffer = readline.get_line_buffer().strip() # There is an unexpected behaviour in MacOSX readline + Python 2: # after completely delete a word after typing it, # somehow readline buffer still contains # the 1st character of that word if current_buffer and g['cmd'] != current_buffer: sys.stdout.write( g['decorated_name'](c['PREFIX']) + str2u(current_buffer)) sys.stdout.flush() elif not c['HIDE_PROMPT']: sys.stdout.write(g['decorated_name'](c['PREFIX'])) sys.stdout.flush() elif tweet.get('direct_message'): print_message(tweet['direct_message'], check_semaphore=True) except TwitterHTTPError: printNicely('') printNicely( magenta("We have maximum connection problem with twitter'stream API right now :("))
def stream(domain, args, name='Rainbow Stream'): """ Track the stream """ # The Logo art_dict = { c['USER_DOMAIN']: name, c['PUBLIC_DOMAIN']: args.track_keywords, c['SITE_DOMAIN']: 'Site Stream', } if g['ascii_art']: ascii_art(art_dict[domain]) # These arguments are optional: stream_args = dict( timeout=args.timeout, block=not args.no_block, heartbeat_timeout=args.heartbeat_timeout) # Track keyword query_args = dict() if args.track_keywords: query_args['track'] = args.track_keywords # Get stream stream = TwitterStream( auth=authen(), domain=domain, **stream_args) if domain == c['USER_DOMAIN']: tweet_iter = stream.user(**query_args) elif domain == c['SITE_DOMAIN']: tweet_iter = stream.site(**query_args) else: if args.track_keywords: tweet_iter = stream.statuses.filter(**query_args) else: tweet_iter = stream.statuses.sample() # Iterate over the stream. try: for tweet in tweet_iter: if tweet is None: printNicely("-- None --") elif tweet is Timeout: printNicely("-- Timeout --") elif tweet is HeartbeatTimeout: printNicely("-- Heartbeat Timeout --") elif tweet is Hangup: printNicely("-- Hangup --") elif tweet.get('text'): draw( t=tweet, iot=args.image_on_term, keyword=args.track_keywords, fil=args.filter, ig=args.ignore, ) except: printNicely( magenta("I'm afraid we have problem with twitter'S maximum connection.")) printNicely(magenta("Let's try again later."))
def stream(domain, args, name='Rainbow Stream'): """ Track the stream """ # The Logo art_dict = { c['USER_DOMAIN']: name, c['PUBLIC_DOMAIN']: args.track_keywords, c['SITE_DOMAIN']: name, } if c['ASCII_ART']: ascii_art(art_dict[domain]) # These arguments are optional: stream_args = dict( timeout=args.timeout, block=False, heartbeat_timeout=args.heartbeat_timeout) # Track keyword query_args = dict() if args.track_keywords: query_args['track'] = args.track_keywords # Get stream stream = TwitterStream( auth=authen(), domain=domain, **stream_args) try: if domain == c['USER_DOMAIN']: tweet_iter = stream.user(**query_args) elif domain == c['SITE_DOMAIN']: tweet_iter = stream.site(**query_args) else: if args.track_keywords: tweet_iter = stream.statuses.filter(**query_args) else: tweet_iter = stream.statuses.sample() # Block new stream until other one exits StreamLock.acquire() g['stream_stop'] = False for tweet in tweet_iter: if(g['stream_stop']): StreamLock.release() break if tweet is None: pass elif tweet is Timeout: printNicely("-- Timeout --") elif tweet is HeartbeatTimeout: printNicely("-- Heartbeat Timeout --") elif tweet is Hangup: printNicely("-- Hangup --") elif tweet.get('text'): draw( t=tweet, keyword=args.track_keywords, check_semaphore=True, fil=args.filter, ig=args.ignore, ) # Current readline buffer current_buffer = readline.get_line_buffer().strip() # There is an unexpected behaviour in MacOSX readline: # after completely delete a word after typing it, # somehow readline buffer still contains # the 1st character of that word if g['previous_cmd'] != current_buffer: if len(current_buffer) == 1: current_buffer = '' g['OSX_readline_bug'] = True sys.stdout.write( g['decorated_name'](c['PREFIX']) + current_buffer) sys.stdout.flush() elif tweet.get('direct_message'): print_message(tweet['direct_message'], check_semaphore=True) except TwitterHTTPError: printNicely('') printNicely( magenta("We have maximum connection problem with twitter'stream API right now :("))