X-Git-Url: https://vcs.fsf.org/?p=rainbowstream.git;a=blobdiff_plain;f=rainbowstream%2Frainbow.py;h=c1fb60e1e3ad318ac5bb011efdf4e82cc8977ae8;hp=9ff0e3971e9f04a9d1ecca0823f35d884fbba681;hb=7b674cef2b248ef13226bfa7cde78cd44a169447;hpb=22be990e6789a051d6f42eb8894aeaf848facfd2 diff --git a/rainbowstream/rainbow.py b/rainbowstream/rainbow.py index 9ff0e39..c1fb60e 100644 --- a/rainbowstream/rainbow.py +++ b/rainbowstream/rainbow.py @@ -30,6 +30,7 @@ def draw(t, keyword=None): Draw the rainbow """ # Retrieve tweet + tid = t['id'] text = t['text'] screen_name = t['user']['screen_name'] name = t['user']['name'] @@ -39,7 +40,7 @@ def draw(t, keyword=None): # Format info user = cycle_color(name) + grey(' ' + '@' + screen_name + ' ') - clock = grey('[' + time + ']') + meta = grey('[' + time + '] [id=' + str(tid) + ']') tweet = text.split() # Highlight RT tweet = map(lambda x: grey(x) if x == 'RT' else x, tweet) @@ -63,16 +64,15 @@ def draw(t, keyword=None): uw=len(user) + 2, ) line2 = u"{c:>{cw}}".format( - c=clock, - cw=len(clock) + 2, + c=meta, + cw=len(meta) + 2, ) line3 = ' ' + tweet - line4 = '\n' printNicely(line1) printNicely(line2) printNicely(line3) - printNicely(line4) + printNicely('') def parse_arguments(): @@ -103,7 +103,7 @@ def parse_arguments(): def authen(): """ - authenticate with Twitter OAuth + Authenticate with Twitter OAuth """ # When using rainbow stream you must authorize. twitter_credential = os.environ.get( @@ -133,17 +133,71 @@ def get_decorated_name(): 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] + 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)): + draw(t=tweet) + + def tweet(): """ - Authen and tweet + Tweet """ t = Twitter(auth=authen()) t.statuses.update(status=g['stuff']) +def reply(): + """ + Reply + """ + t = Twitter(auth=authen()) + 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.')) + + +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.')) + + def search(): """ - Authen and search + Search """ t = Twitter(auth=authen()) rel = t.search.tweets(q='#' + g['stuff'])['statuses'] @@ -184,16 +238,20 @@ def follower(): def help(): """ - Print help + Help """ usage = ''' Hi boss! I'm ready to serve you right now! ---------------------------------------------------- - "tweet" at the beginning will tweet immediately - "s" and follow by any word will search and return 5 newest tweet + "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" will print this help once again + "h" or "help" will print this help once again "c" will clear the terminal "q" will exit ---------------------------------------------------- @@ -205,7 +263,7 @@ def help(): def clear(): """ - Exit all + Clear screen """ os.system('clear') @@ -220,16 +278,21 @@ def quit(): def process(cmd): """ - Process switch by start of line + Process switch """ return { - 'tweet' : tweet, - 's' : search, - 'fr' : friend, - 'fl' : follower, - 'h' : 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']))