From 434c2160ae376b0677304aae71436862c8d9a41a Mon Sep 17 00:00:00 2001 From: witti96 Date: Sat, 29 Nov 2014 17:01:29 +0100 Subject: [PATCH] Added --stream argument to change the stream on program start. --- rainbowstream/rainbow.py | 135 ++++++++++++++++++++++++++++++++++++--- 1 file changed, 127 insertions(+), 8 deletions(-) diff --git a/rainbowstream/rainbow.py b/rainbowstream/rainbow.py index a5824a6..ed7f734 100644 --- a/rainbowstream/rainbow.py +++ b/rainbowstream/rainbow.py @@ -1,4 +1,5 @@ import os + import os.path import sys import signal @@ -41,6 +42,12 @@ def parse_arguments(): Parse the arguments """ parser = argparse.ArgumentParser(description=__doc__ or "") + + parser.add_argument( + '-s', + '--stream', + default="mine", + help='Default stream after program start. (Default: mine)') parser.add_argument( '-to', '--timeout', @@ -955,6 +962,20 @@ def get_slug(): light_magenta('List name should follow "@owner/list_name" format.')) raise Exception('Wrong list name') +def check_slug(list_name): + """ + Check slug + """ + # Get list name and owner + try: + owner, slug = list_name.split('/') + if slug.startswith('@'): + slug = slug[1:] + return owner, slug + except: + printNicely( + light_magenta('List name should follow "@owner/list_name" format.')) + raise Exception('Wrong list name') def show_lists(t): """ @@ -2150,14 +2171,112 @@ def fly(): sys.exit() # Spawn stream thread - th = threading.Thread( - target=stream, - args=( - c['USER_DOMAIN'], - args, - g['original_name'])) - th.daemon = True - th.start() + target = args.stream.split()[0] + if target == 'public': + try: + keyword = args.stream.split()[1] + if keyword[0] == '#': + keyword = keyword[1:] + args.track_keywords = keyword + # Set the variable to tracked keyword + g['keyword'] = keyword + # Reset prefix + g['PREFIX'] = u2str(emojize(format_prefix(keyword=g['keyword']))) + # Start new thread + th = threading.Thread( + target=stream, + args=( + c['PUBLIC_DOMAIN'], + args)) + th.daemon = True + th.start() + except: + printNicely(red('Public requires a keyword! Loading your personal stream.')) + # Start new thread + th = threading.Thread( + target=stream, + args=( + c['USER_DOMAIN'], + args, + g['original_name'])) + th.daemon = True + th.start() + elif target == "list": + try: + owner, slug = check_slug(args.stream.split()[1]) + # Force python 2 not redraw readline buffer + listname = '/'.join([owner, slug]) + # Set the listname variable + # and reset tracked keyword + g['listname'] = listname + g['keyword'] = '' + g['PREFIX'] = g['cmd'] = u2str(emojize(format_prefix( + listname=g['listname'] + ))) + printNicely(light_yellow('getting list members ...')) + # Get members + t = Twitter(auth=authen()) + members = [] + next_cursor = -1 + while next_cursor != 0: + m = t.lists.members( + slug=slug, + owner_screen_name=owner, + cursor=next_cursor, + include_entities=False) + for u in m['users']: + members.append('@' + u['screen_name']) + next_cursor = m['next_cursor'] + printNicely(light_yellow('... done.')) + # Build thread filter array + args.filter = members + # Kill old thread + g['stream_stop'] = True + # Start new thread + th = threading.Thread( + target=stream, + args=( + c['USER_DOMAIN'], + args, + slug)) + th.daemon = True + th.start() + printNicely('') + if args.filter: + printNicely(cyan('Include: ' + str(len(args.filter)) + ' people.')) + except: + printNicely(red('List requieres a correct name of a list! Loading your personal stream.')) + # Start new thread + th = threading.Thread( + target=stream, + args=( + c['USER_DOMAIN'], + args, + g['original_name'])) + th.daemon = True + th.start() + elif target == "mine": + # Start new thread + th = threading.Thread( + target=stream, + args=( + c['USER_DOMAIN'], + args, + g['original_name'])) + th.daemon = True + th.start() + else: + printNicely(red('Wrong -s/--stream argument given. Loading your personal stream.')) + # Start new thread + th = threading.Thread( + target=stream, + args=( + c['USER_DOMAIN'], + args, + g['original_name'])) + th.daemon = True + th.start() + # Start listen process time.sleep(0.5) g['reset'] = True -- 2.25.1