X-Git-Url: https://vcs.fsf.org/?p=rainbowstream.git;a=blobdiff_plain;f=rainbowstream%2Frainbow.py;h=129ad29743e6183a30049958faba46661e4567ca;hp=cf25883ed5d14a5bf9de67f795b84479e753d541;hb=67eccba1a13ec517e653c42340ff4f645d98e8b9;hpb=69b6ab70a4425faf7ec12fd968fa35ccd8914c98 diff --git a/rainbowstream/rainbow.py b/rainbowstream/rainbow.py index cf25883..129ad29 100644 --- a/rainbowstream/rainbow.py +++ b/rainbowstream/rainbow.py @@ -44,7 +44,7 @@ def parse_arguments(): parser.add_argument( '-s', '--stream', - default="mine", + default="mine", help='Default stream after program start. (Default: mine)') parser.add_argument( '-to', @@ -181,7 +181,8 @@ def upgrade_center(): url = 'https://raw.githubusercontent.com/DTVD/rainbowstream/master/setup.py' readme = requests.get(url).text latest = readme.split('version = \'')[1].split('\'')[0] - if current != latest: + g['using_latest'] = current == latest + if not g['using_latest']: notice = light_magenta('RainbowStream latest version is ') notice += light_green(latest) notice += light_magenta(' while your current version is ') @@ -193,7 +194,7 @@ def upgrade_center(): notice = light_yellow('You are running latest version (') notice += light_green(current) notice += light_yellow(')') - printNicely(notice) + notice += '\n' except: pass @@ -238,8 +239,11 @@ def init(args): c['message_dict'] = [] # Image on term c['IMAGE_ON_TERM'] = args.image_on_term - c['24BIT'] = args.color_24bit set_config('IMAGE_ON_TERM', str(c['IMAGE_ON_TERM'])) + # Use 24 bit color + c['24BIT'] = args.color_24bit + # Resize images based on the current terminal size + set_config('IMAGE_RESIZE_TO_FIT', str(c.get('IMAGE_RESIZE_TO_FIT', False))) # Check type of ONLY_LIST and IGNORE_LIST if not isinstance(c['ONLY_LIST'], list): printNicely(red('ONLY_LIST is not a valid list value.')) @@ -371,6 +375,21 @@ def view(): printNicely(red('A name should begin with a \'@\'')) +def view_my_tweets(): + """ + Display user's recent tweets. + """ + t = Twitter(auth=authen()) + try: + num = int(g['stuff']) + except: + num = c['HOME_TWEET_NUM'] + for tweet in reversed( + t.statuses.user_timeline(count=num, screen_name=g['original_name'])): + draw(t=tweet) + printNicely('') + + def search(): """ Search @@ -649,14 +668,14 @@ def urlopen(): return tid = c['tweet_dict'][int(g['stuff'])] tweet = t.statuses.show(id=tid) - link_prefix = ('http://', 'https://') - link_ary = [u for u in tweet['text'].split() - if u.startswith(link_prefix)] - if not link_ary: + urls = tweet['entities']['urls'] + if not urls: printNicely(light_magenta('No url here @.@!')) return - for link in link_ary: - webbrowser.open(link) + else: + for url in urls: + expanded_url = url['expanded_url'] + webbrowser.open(expanded_url) except: debug_option() printNicely(red('Sorry I can\'t open url in this tweet.')) @@ -1436,6 +1455,8 @@ def help_discover(): light_green('trend JP Tokyo') + '.\n' usage += s * 2 + light_green('home') + ' will show your timeline. ' + \ light_green('home 7') + ' will show 7 tweets.\n' + usage += s * 2 + light_green('me') + ' will show your latest tweets. ' + \ + light_green('me 2') + ' will show your last 2 tweets.\n' usage += s * 2 + \ light_green('notification') + ' will show your recent notification.\n' usage += s * 2 + light_green('mentions') + ' will show mentions timeline. ' + \ @@ -1760,6 +1781,7 @@ cmdset = [ 't', 'rt', 'quote', + 'me', 'allrt', 'conversation', 'fav', @@ -1808,6 +1830,7 @@ funcset = [ tweet, retweet, quote, + view_my_tweets, allretweet, conversation, favorite, @@ -1869,6 +1892,7 @@ def listen(): [], # tweet [], # retweet [], # quote + [], # view_my_tweets [], # allretweet [], # conversation [], # favorite @@ -1947,6 +1971,7 @@ def listen(): c['lock'] = True # Save cmd to global variable and call process g['stuff'] = ' '.join(line.split()[1:]) + # Check tweet length # Process the command process(cmd)() # Not re-display @@ -1958,9 +1983,11 @@ def listen(): c['lock'] = False except EOFError: printNicely('') + except TwitterHTTPError as e: + detail_twitter_error(e) except Exception: debug_option() - printNicely(red('OMG something is wrong with Twitter right now.')) + printNicely(red('OMG something is wrong with Twitter API right now.')) def reconn_notice(): @@ -2215,7 +2242,7 @@ def fly(): # Spawn stream thread target = args.stream.split()[0] - if target == 'mine' : + if target == 'mine': spawn_personal_stream(args) else: try: