2 Colorful user's timeline stream
5 from __future__
import print_function
11 from twitter
.stream
import TwitterStream
, Timeout
, HeartbeatTimeout
, Hangup
12 from twitter
.oauth
import OAuth
, read_token_file
13 from twitter
.oauth_dance
import oauth_dance
14 from twitter
.util
import printNicely
15 from dateutil
import parser
27 screen_name
= t
['user']['screen_name']
28 name
= t
['user']['name']
29 created_at
= t
['created_at']
30 date
= parser
.parse(created_at
)
31 time
= date
.strftime('%Y/%m/%d %H:%M:%S')
34 user
= cycle_color(name
+ ' ' + '@' + screen_name
+ ' ')
35 clock
= grey('[' + time
+ ']')
37 tweet
= map(lambda x
: grey(x
) if x
== 'RT' else x
, tweet
)
38 tweet
= map(lambda x
: cycle_color(x
) if x
[0] == '@' else x
, tweet
)
39 tweet
= map(lambda x
: cyan(x
) if x
[0:7] == 'http://' else x
, tweet
)
40 tweet
= ' '.join(tweet
)
43 line1
= u
"{u:>{uw}}:".format(
47 line2
= u
"{c:>{cw}}".format(
54 return line1
, line2
, line3
, line4
57 def parse_arguments():
62 parser
= argparse
.ArgumentParser(description
=__doc__
or "")
67 help='Timeout for the stream (seconds).')
70 '--heartbeat-timeout',
71 help='Set heartbeat timeout.',
77 help='Set stream to non-blocking.')
81 help='Search the stream for specific text.')
82 return parser
.parse_args()
86 args
= parse_arguments()
91 # When using rainbow stream you must authorize.
92 twitter_credential
= os
.environ
.get(
96 '')) + os
.sep
+ '.rainbow_oauth'
97 if not os
.path
.exists(twitter_credential
):
98 oauth_dance("Rainbow Stream",
102 oauth_token
, oauth_token_secret
= read_token_file(twitter_credential
)
109 # These arguments are optional:
111 timeout
=args
.timeout
,
112 block
=not args
.no_block
,
113 heartbeat_timeout
=args
.heartbeat_timeout
)
117 if args
.track_keywords
:
118 query_args
['track'] = args
.track_keywords
121 stream
= TwitterStream(
123 domain
='userstream.twitter.com',
125 tweet_iter
= stream
.user(**query_args
)
127 # Iterate over the sample stream.
128 for tweet
in tweet_iter
:
130 printNicely("-- None --")
131 elif tweet
is Timeout
:
132 printNicely("-- Timeout --")
133 elif tweet
is HeartbeatTimeout
:
134 printNicely("-- Heartbeat Timeout --")
135 elif tweet
is Hangup
:
136 printNicely("-- Hangup --")
137 elif tweet
.get('text'):
138 line1
, line2
, line3
, line4
= draw(t
=tweet
)