print adapt to screen size
[rainbowstream.git] / rainbowstream / rainbow.py
index 9570fee261d8f43dcaece15dfb9e4371d35da010..00621d0fba9b4ac78202ba27ce52fd0aaa7feeca 100644 (file)
@@ -68,9 +68,7 @@ def parse_arguments():
     """
     Parse the arguments
     """
-
     parser = argparse.ArgumentParser(description=__doc__ or "")
-
     parser.add_argument(
         '-to',
         '--timeout',
@@ -138,11 +136,39 @@ def search():
     """
     t = Twitter(auth=authen())
     rel = t.search.tweets(q='#' + g['stuff'])['statuses']
-    printNicely(grey('**************************************************************************************\n'))
+    h, w = os.popen('stty size', 'r').read().split()
+
+    printNicely(grey('*'*int(w)+'\n'))
     print('Newest',SEARCH_MAX_RECORD, 'tweet: \n')
     for i in xrange(5):
         draw(t=rel[i],keyword=g['stuff'].strip())
-    printNicely(grey('**************************************************************************************\n'))
+    printNicely(grey('*'*int(w)+'\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():
@@ -152,45 +178,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):
@@ -198,9 +227,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()