# Format info
user = cycle_color(name) + grey(' ' + '@' + screen_name + ' ')
- meta = grey('[' + time + '] ['+ str(tid) +']')
+ meta = grey('[' + time + '] [id=' + str(tid) + ']')
tweet = text.split()
# Highlight RT
tweet = map(lambda x: grey(x) if x == 'RT' else x, tweet)
cw=len(meta) + 2,
)
line3 = ' ' + tweet
- line4 = ''
printNicely(line1)
printNicely(line2)
def authen():
"""
- authenticate with Twitter OAuth
+ Authenticate with Twitter OAuth
"""
# When using rainbow stream you must authorize.
twitter_credential = os.environ.get(
g['decorated_name'] = grey('[') + grey(name) + grey(']: ')
+def home():
+ """
+ Home
+ """
+ t = Twitter(auth=authen())
+ count = HOME_TWEET_NUM
+ if g['stuff'].isdigit():
+ count = g['stuff']
+ for tweet in reversed(t.statuses.home_timeline(count=count)):
+ draw(t=tweet)
+
+
+def view():
+ """
+ Friend view
+ """
+ t = Twitter(auth=authen())
+ user = g['stuff'].split()[0]
+ if user[0] == '@':
+ try:
+ count = int(g['stuff'].split()[1])
+ except:
+ count = HOME_TWEET_NUM
+ for tweet in reversed(t.statuses.user_timeline(count=count, screen_name=user[1:])):
+ draw(t=tweet)
+ else:
+ print(red('A name should begin with a \'@\''))
+ sys.stdout.write(g['decorated_name'])
+
+
def tweet():
"""
- Authen and tweet
+ Tweet
"""
t = Twitter(auth=authen())
t.statuses.update(status=g['stuff'])
-def timeline():
+def reply():
"""
- Authen and get timeline
+ Reply
"""
t = Twitter(auth=authen())
- count = HOME_TWEET_NUM
- if g['stuff'].isdigit():
- count = g['stuff']
- for tweet in reversed(t.statuses.home_timeline(count=count)):
- draw(t=tweet)
+ try:
+ id = int(g['stuff'].split()[0])
+ user = t.statuses.show(id=id)['user']['screen_name']
+ status = ' '.join(g['stuff'].split()[1:])
+ status = '@' + user + ' ' + status.decode('utf-8')
+ t.statuses.update(status=status, in_reply_to_status_id=id)
+ except:
+ print(red('Sorry I can\'t understand.'))
+ sys.stdout.write(g['decorated_name'])
+
+
+def delete():
+ """
+ Delete
+ """
+ t = Twitter(auth=authen())
+ try:
+ id = int(g['stuff'].split()[0])
+ t.statuses.destroy(id=id)
+ print(green('Okay it\'s gone.'))
+ except:
+ print(red('Sorry I can\'t delete this tweet for you.'))
+ sys.stdout.write(g['decorated_name'])
def search():
"""
- Authen and search
+ Search
"""
t = Twitter(auth=authen())
- rel = t.search.tweets(q='#' + g['stuff'])['statuses']
h, w = os.popen('stty size', 'r').read().split()
-
- printNicely(grey('*' * int(w) + '\n'))
- print('Newest', SEARCH_MAX_RECORD, 'tweet: \n')
- for i in xrange(5):
- draw(t=rel[i], keyword=g['stuff'].strip())
- printNicely(grey('*' * int(w) + '\n'))
+ if g['stuff'][0] == '#':
+ rel = t.search.tweets(q=g['stuff'])['statuses']
+ printNicely(grey('*' * int(w) + '\n'))
+ print('Newest', SEARCH_MAX_RECORD, 'tweet: \n')
+ for i in xrange(5):
+ draw(t=rel[i], keyword=g['stuff'].strip())
+ printNicely(grey('*' * int(w) + '\n'))
+ else:
+ print(red('A keyword should be a hashtag (like \'#AKB48\')'))
+ sys.stdout.write(g['decorated_name'])
def friend():
def help():
"""
- Print help
+ Help
"""
usage = '''
Hi boss! I'm ready to serve you right now!
----------------------------------------------------
- "t" at the beginning will tweet immediately
- "tl" at the beginning will tweet immediately
- "s" and follow by any word will search and return 5 newest tweet
- "fr" will list out your following people
- "fl" will list out your followers
- "h" or "help" will print this help once again
- "c" will clear the terminal
- "q" will exit
+ "home" will show your timeline. "home 7" will print 7 tweet.
+ "view @bob" will show your friend @bob's home.
+ "t oops" will tweet "oops" immediately.
+ "rep 12345 oops" will reply "oops" to tweet with id "12345".
+ "del 12345" will delete tweet with id "12345".
+ "s #AKB48" will search for "AKB48" and return 5 newest tweet.
+ "fr" will list out your following people.
+ "fl" will list out your followers.
+ "h" or "help" will print this help once again.
+ "c" will clear the terminal.
+ "q" will exit.
----------------------------------------------------
Have fun and hang tight!
'''
def clear():
"""
- Exit all
+ Clear screen
"""
os.system('clear')
def process(cmd):
"""
- Process switch by start of line
+ Process switch
"""
return {
- 't' : tweet,
- 'tl' : timeline,
- 's' : search,
- 'fr' : friend,
- 'fl' : follower,
- 'h' : help,
- 'help' : help,
- 'c' : clear,
- 'q' : quit,
+ 'home': home,
+ 'view': view,
+ 't': tweet,
+ 'rep': reply,
+ 'del': delete,
+ 's': search,
+ 'fr': friend,
+ 'fl': follower,
+ 'h': help,
+ 'help': help,
+ 'c': clear,
+ 'q': quit,
}.get(cmd, lambda: sys.stdout.write(g['decorated_name']))