update ss
[rainbowstream.git] / rainbowstream / rainbow.py
index 84b89ffcf6a8f3988bef4c0c72257dbf98641297..9461d22679a274e70a61a35e571d0f91ecd6ee11 100644 (file)
@@ -42,7 +42,8 @@ def draw(t,keyword=None):
     # Highlight link
     tweet = map(lambda x: cyan(x) if x[0:7] == 'http://' else x, tweet)
     # Highlight search keyword
-    tweet = map(lambda x: on_yellow(x) if ''.join(c for c in x if c.isalnum()).lower() == keyword.lower() else x, tweet)
+    if keyword:
+        tweet = map(lambda x: on_yellow(x) if ''.join(c for c in x if c.isalnum()).lower() == keyword.lower() else x, tweet)
     tweet = ' '.join(tweet)
 
     # Draw rainbow
@@ -67,9 +68,7 @@ def parse_arguments():
     """
     Parse the arguments
     """
-
     parser = argparse.ArgumentParser(description=__doc__ or "")
-
     parser.add_argument(
         '-to',
         '--timeout',
@@ -144,6 +143,32 @@ def search():
     printNicely(grey('**************************************************************************************\n'))
 
 
+def friend():
+    """
+    List of friend (following)
+    """
+    t = Twitter(auth=authen())
+    g['friends'] = t.friends.ids()['ids']
+    for i in g['friends']:
+        screen_name = t.users.lookup(user_id=i)[0]['screen_name']
+        user = cycle_color('@'+screen_name)
+        print(user, end=' ')
+    print('\n');
+
+
+def follower():
+    """
+    List of follower
+    """
+    t = Twitter(auth=authen())
+    g['followers'] = t.followers.ids()['ids']
+    for i in g['followers']:
+        screen_name = t.users.lookup(user_id=i)[0]['screen_name']
+        user = cycle_color('@'+screen_name)
+        print(user, end=' ')
+    print('\n');
+
+
 def help():
     """
     Print help
@@ -151,45 +176,48 @@ def help():
     usage = '''
     Hi boss! I'm ready to serve you right now!
     ----------------------------------------------------
-    "!" at the beginning will start to tweet immediately
-    "/" at the beginning will search for 5 newest tweet
-    "?" or "h" will print this help once again
+    "tweet" 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" will print this help once again
     "c" will clear the terminal
     "q" will exit
     ----------------------------------------------------
-    Hvae fun and hang tight!
+    Have fun and hang tight!
     '''
     printNicely(usage)
     sys.stdout.write(g['decorated_name'])
 
 
-def quit():
+def clear():
     """
     Exit all
     """
-    os.kill(g['stream_pid'], signal.SIGKILL)
-    sys.exit()
+    os.system('clear')
 
 
-def clear():
+def quit():
     """
     Exit all
     """
-    os.system('clear')
+    os.kill(g['stream_pid'], signal.SIGKILL)
+    sys.exit()
 
 
-def process(line):
+def process(cmd):
     """
     Process switch by start of line
     """
     return {
-        '!' : tweet,
-        '/' : search,
-        '?' : help,
-        'h' : help,
-        'c' : clear,
-        'q' : quit,
-    }.get(line[0],lambda: sys.stdout.write(g['decorated_name']))
+        'tweet' : tweet,
+        's'     : search,
+        'fr'    : friend,
+        'fl'    : follower,
+        'h'     : help,
+        'c'     : clear,
+        'q'     : quit,
+    }.get(cmd,lambda: sys.stdout.write(g['decorated_name']))
 
 
 def listen(stdin):
@@ -197,9 +225,13 @@ def listen(stdin):
     Listen to user's input
     """
     for line in iter(stdin.readline, ''):
+        try:
+            cmd = line.split()[0]
+        except:
+            cmd = ''
         # Save cmd to global variable and call process
-        g['stuff'] = line[1:]
-        process(line)()
+        g['stuff'] = ' '.join(line.split()[1:])
+        process(cmd)()
     stdin.close()