X-Git-Url: https://vcs.fsf.org/?p=rainbowstream.git;a=blobdiff_plain;f=rainbowstream%2Frainbow.py;h=b1c66674a81dfbc0fb9f3752c94a3ea169d1fc80;hp=4b1ae255c9bb1ec33e7b24f6d1c3d5b8fec50ba2;hb=5caaaccb2d980189b0e1362fc66d44b9cc2932a1;hpb=fc46012423806779f53872ce82288a5827050fbb diff --git a/rainbowstream/rainbow.py b/rainbowstream/rainbow.py index 4b1ae25..b1c6667 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', @@ -67,6 +67,11 @@ def parse_arguments(): '--image-on-term', action='store_true', help='Display all image on terminal.') + parser.add_argument( + '-24', + '--color-24bit', + action='store_true', + help='Display images using 24bit color codes.') parser.add_argument( '-ph', '--proxy-host', @@ -176,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 ') @@ -188,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 @@ -234,6 +240,10 @@ def init(args): # Image on term c['IMAGE_ON_TERM'] = args.image_on_term 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.')) @@ -643,14 +653,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.')) @@ -860,7 +870,7 @@ def mute(): rel = t.mutes.users.create(screen_name=screen_name[1:]) if isinstance(rel, dict): printNicely(green(screen_name + ' is muted.')) - c['IGNORE_LIST'] += [unc(screen_name)] + c['IGNORE_LIST'] += [screen_name] c['IGNORE_LIST'] = list(set(c['IGNORE_LIST'])) else: printNicely(red(rel)) @@ -1291,7 +1301,7 @@ def switch(): return # Kill old thread g['stream_stop'] = True - try: + try: stuff = g['stuff'].split()[1] except: stuff = None @@ -1942,33 +1952,22 @@ def listen(): # Save cmd to global variable and call process g['stuff'] = ' '.join(line.split()[1:]) # Check tweet length - if check_tweet_length(): - # Process the command - process(cmd)() - # Not re-display - if cmd in ['switch', 't', 'rt', 'rep']: - g['prefix'] = False - else: - g['prefix'] = True + # Process the command + process(cmd)() + # Not re-display + if cmd in ['switch', 't', 'rt', 'rep']: + g['prefix'] = False + else: + g['prefix'] = True # Release the semaphore lock 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.')) - - -def check_tweet_length(): - """ - Check tweet length (should be <= 140 chars) - """ - length = len(g['stuff']) - if length <= 140: - return True - - printNicely(red("Message is too long: %s chars" % length)) - return False + printNicely(red('OMG something is wrong with Twitter API right now.')) def reconn_notice(): @@ -2223,7 +2222,7 @@ def fly(): # Spawn stream thread target = args.stream.split()[0] - if target == 'mine' : + if target == 'mine': spawn_personal_stream(args) else: try: