\r
**Explore Commands**\r
\r
-- ``trend`` will show global trending topics. ``trend US`` will show\r
- trends in United States while ``trend JP Tokyo`` will show trends in\r
- Tokyo/Japan.\r
+- ``trend`` will show global trending topics. ``trend US`` will show trends in United States while ``trend JP Tokyo`` will show trends in Tokyo/Japan.\r
\r
-- ``home`` will show your timeline. ``home 10`` will print exactly 10\r
- tweets.\r
+- ``home`` will show your timeline. ``home 10`` will print exactly 10 tweets.\r
\r
-- ``mentions`` will show mentions timeline. ``mentions 7`` will show 7\r
- mention tweets.\r
+- ``notification`` will show your notification from the time you started RainbowStream.\r
+\r
+- ``mentions`` will show mentions timeline. ``mentions 7`` will show 7 mention tweets.\r
\r
- ``whois @dtvd88`` will show profile of @dtvd88.\r
\r
-- ``view @mdo`` will show @mdo ’s timeline. ``view @dmo 9`` will print\r
- exactly 9 tweets.\r
+- ``view @mdo`` will show @mdo ’s timeline. ``view @dmo 9`` will print exactly 9 tweets.\r
\r
-- ``s noah`` will search the word *‘noah’*. Result will come back with\r
- highlight. Search can be performed with or without hashtag.\r
+- ``s noah`` will search the word *‘noah’*. Result will come back with highlight. Search can be performed with or without hashtag.\r
\r
**Tweet Commands**\r
\r
-- ``t the rainbow is god's promise to noah`` will tweet exactly *‘the\r
- rainbow is god’s promise to noah’*.\r
+- ``t the rainbow is god's promise to noah`` will tweet exactly *‘the rainbow is god’s promise to noah’*.\r
\r
-- ``rt 12`` will retweet the tweet with *[id=12]*. You can see id of\r
- each tweet beside the time.\r
+- ``rt 12`` will retweet the tweet with *[id=12]*. You can see id of each tweet beside the time.\r
\r
-- ``quote 12`` will quote the tweet with *[id=12]*. If no extra text is added,\r
- the quote will be cancelled.\r
+- ``quote 12`` will quote the tweet with *[id=12]*. If no extra text is added, the quote will be cancelled.\r
\r
- ``allrt 12 20`` will list 20 newest retweets of the tweet with *[id=12]*. If the number of retweets is not specified, 5 newest retweets will be listed instead.\r
\r
\r
- ``del 12`` will delete tweet with *[id=12]*.\r
\r
-- ``show image 12`` will show the image in tweet with *[id=12]* in your\r
- OS’s image viewer.\r
+- ``show image 12`` will show the image in tweet with *[id=12]* in your OS’s image viewer.\r
\r
-- ``open 12`` will open url in tweet with *[id=12]* in your\r
- OS’s default browser.\r
+- ``open 12`` will open url in tweet with *[id=12]* in your OS’s default browser.\r
\r
**Direct Messages Commands**\r
\r
\r
**Friends and followers Commands**\r
\r
-- ``ls fl`` will list all your followers (people who are following\r
- you).\r
+- ``ls fl`` will list all your followers (people who are following you).\r
\r
- ``ls fr`` will list all your friends (people who you are following).\r
\r
\r
**Switching Stream Commands**\r
\r
-- ``switch public #AKB48`` will switch current stream to public stream\r
- and track keyword ``AKB48``\r
+- ``switch public #AKB48`` will switch current stream to public stream and track keyword ``AKB48``\r
\r
-- ``switch public #AKB48 -f`` will do exactly as above but will ask you\r
- to provide 2 list:\r
+- ``switch public #AKB48 -f`` will do exactly as above but will ask you to provide 2 list:\r
\r
``Only nicks`` decide what nicks will be include only.\r
\r
``Ignore nicks``\ decide what nicks will be exclude.\r
\r
-- ``switch public #AKB48 -d`` will apply filter to *ONLY\_LIST* and\r
- *IGNORE\_LIST*. You can setup 2 list above at ``config.py``\r
+- ``switch public #AKB48 -d`` will apply filter to *ONLY\_LIST* and *IGNORE\_LIST*. You can setup 2 list above at ``config.py``\r
\r
-- ``switch mine`` will switch current stream to personal stream. ``-f``\r
- and ``-d`` will work as well.\r
+- ``switch mine`` will switch current stream to personal stream. ``-f`` and ``-d`` will work as well.\r
\r
**Smart shell**\r
\r
return globals()[func_name]
-def draw(t, keyword=None, humanize=True, fil=[], ig=[]):
+def draw(t, keyword=None, humanize=True, noti=False, fil=[], ig=[]):
"""
Draw the rainbow
"""
except:
pass
+ # Add spaces in begining of line if this is inside a notification
+ if noti:
+ formater = '\n '.join(formater.split('\n'))
+
# Draw
printNicely(formater)
printNicely(formater)
+def notify_favorite(e):
+ """
+ Notify a favorite event
+ """
+ # Retrieve info
+ target = e['target']
+ if target['screen_name'] != c['original_name']:
+ return
+ source = e['source']
+ target_object = e['target_object']
+ created_at = e['created_at']
+ # Format
+ source_user = cycle_color(source['name']) + \
+ color_func(c['NOTIFICATION']['source_nick'])(
+ ' @' + source['screen_name'])
+ notify = color_func(c['NOTIFICATION']['notify'])(' favorited your tweet ')
+ date = parser.parse(created_at)
+ date = arrow.get(date).to('local')
+ lang, encode = locale.getdefaultlocale()
+ clock = arrow.get(date).to('local').humanize(locale=lang)
+ clock = color_func(c['NOTIFICATION']['clock'])(clock)
+ meta = ' ' * 2 + source_user + notify + clock
+ # Output
+ printNicely('')
+ printNicely(meta)
+ draw(t=target_object, noti=True)
+
+
+def notify_unfavorite(e):
+ """
+ Notify a unfavorite event
+ """
+ # Retrieve info
+ target = e['target']
+ if target['screen_name'] != c['original_name']:
+ return
+ source = e['source']
+ target_object = e['target_object']
+ created_at = e['created_at']
+ # Format
+ source_user = cycle_color(source['name']) + \
+ color_func(c['NOTIFICATION']['source_nick'])(
+ ' @' + source['screen_name'])
+ notify = color_func(c['NOTIFICATION']['notify'])(
+ ' unfavorited your tweet ')
+ date = parser.parse(created_at)
+ date = arrow.get(date).to('local')
+ lang, encode = locale.getdefaultlocale()
+ clock = arrow.get(date).to('local').humanize(locale=lang)
+ clock = color_func(c['NOTIFICATION']['clock'])(clock)
+ meta = ' ' * 2 + source_user + notify + clock
+ # Output
+ printNicely('')
+ printNicely(meta)
+ draw(t=target_object, noti=True)
+
+
+def notify_follow(e):
+ """
+ Notify a follow event
+ """
+ # Retrieve info
+ target = e['target']
+ if target['screen_name'] != c['original_name']:
+ return
+ source = e['source']
+ created_at = e['created_at']
+ # Format
+ source_user = cycle_color(source['name']) + \
+ color_func(c['NOTIFICATION']['source_nick'])(
+ ' @' + source['screen_name'])
+ notify = color_func(c['NOTIFICATION']['notify'])(' followed you ')
+ date = parser.parse(created_at)
+ date = arrow.get(date).to('local')
+ lang, encode = locale.getdefaultlocale()
+ clock = arrow.get(date).to('local').humanize(locale=lang)
+ clock = color_func(c['NOTIFICATION']['clock'])(clock)
+ meta = ' ' * 2 + source_user + notify + clock
+ # Output
+ printNicely('')
+ printNicely(meta)
+
+
+def notify_list_member_added(e):
+ """
+ Notify a list_member_added event
+ """
+ # Retrieve info
+ target = e['target']
+ if target['screen_name'] != c['original_name']:
+ return
+ source = e['source']
+ target_object = [e['target_object']] # list of Twitter list
+ created_at = e['created_at']
+ # Format
+ source_user = cycle_color(source['name']) + \
+ color_func(c['NOTIFICATION']['source_nick'])(
+ ' @' + source['screen_name'])
+ notify = color_func(c['NOTIFICATION']['notify'])(' added you to a list ')
+ date = parser.parse(created_at)
+ date = arrow.get(date).to('local')
+ lang, encode = locale.getdefaultlocale()
+ clock = arrow.get(date).to('local').humanize(locale=lang)
+ clock = color_func(c['NOTIFICATION']['clock'])(clock)
+ meta = ' ' * 2 + source_user + notify + clock
+ # Output
+ printNicely('')
+ printNicely(meta)
+ print_list(target_object, noti=True)
+
+
+def notify_list_member_removed(e):
+ """
+ Notify a list_member_removed event
+ """
+ # Retrieve info
+ target = e['target']
+ if target['screen_name'] != c['original_name']:
+ return
+ source = e['source']
+ target_object = [e['target_object']] # list of Twitter list
+ created_at = e['created_at']
+ # Format
+ source_user = cycle_color(source['name']) + \
+ color_func(c['NOTIFICATION']['source_nick'])(
+ ' @' + source['screen_name'])
+ notify = color_func(c['NOTIFICATION']['notify'])(
+ ' removed you from a list ')
+ date = parser.parse(created_at)
+ date = arrow.get(date).to('local')
+ lang, encode = locale.getdefaultlocale()
+ clock = arrow.get(date).to('local').humanize(locale=lang)
+ clock = color_func(c['NOTIFICATION']['clock'])(clock)
+ meta = ' ' * 2 + source_user + notify + clock
+ # Output
+ printNicely('')
+ printNicely(meta)
+ print_list(target_object, noti=True)
+
+
+def notify_list_user_subscribed(e):
+ """
+ Notify a list_user_subscribed event
+ """
+ # Retrieve info
+ target = e['target']
+ if target['screen_name'] != c['original_name']:
+ return
+ source = e['source']
+ target_object = [e['target_object']] # list of Twitter list
+ created_at = e['created_at']
+ # Format
+ source_user = cycle_color(source['name']) + \
+ color_func(c['NOTIFICATION']['source_nick'])(
+ ' @' + source['screen_name'])
+ notify = color_func(c['NOTIFICATION']['notify'])(
+ ' subscribed to your list ')
+ date = parser.parse(created_at)
+ date = arrow.get(date).to('local')
+ lang, encode = locale.getdefaultlocale()
+ clock = arrow.get(date).to('local').humanize(locale=lang)
+ clock = color_func(c['NOTIFICATION']['clock'])(clock)
+ meta = ' ' * 2 + source_user + notify + clock
+ # Output
+ printNicely('')
+ printNicely(meta)
+ print_list(target_object, noti=True)
+
+
+def notify_list_user_unsubscribed(e):
+ """
+ Notify a list_user_unsubscribed event
+ """
+ # Retrieve info
+ target = e['target']
+ if target['screen_name'] != c['original_name']:
+ return
+ source = e['source']
+ target_object = [e['target_object']] # list of Twitter list
+ created_at = e['created_at']
+ # Format
+ source_user = cycle_color(source['name']) + \
+ color_func(c['NOTIFICATION']['source_nick'])(
+ ' @' + source['screen_name'])
+ notify = color_func(c['NOTIFICATION']['notify'])(
+ ' unsubscribed from your list ')
+ date = parser.parse(created_at)
+ date = arrow.get(date).to('local')
+ lang, encode = locale.getdefaultlocale()
+ clock = arrow.get(date).to('local').humanize(locale=lang)
+ clock = color_func(c['NOTIFICATION']['clock'])(clock)
+ meta = ' ' * 2 + source_user + notify + clock
+ # Output
+ printNicely('')
+ printNicely(meta)
+ print_list(target_object, noti=True)
+
+
+def print_event(e):
+ """
+ Notify an event
+ """
+ event_dict = {
+ 'favorite': notify_favorite,
+ 'unfavorite': notify_unfavorite,
+ 'follow': notify_follow,
+ 'list_member_added': notify_list_member_added,
+ 'list_member_removed': notify_list_member_removed,
+ 'list_user_subscribed': notify_list_user_subscribed,
+ 'list_user_unsubscribed': notify_list_user_unsubscribed,
+ }
+ event_dict[e['event']](e)
+
+
def show_profile(u):
"""
Show a profile
printNicely('')
-def print_list(group):
+def print_list(group, noti=False):
"""
Display a list
"""
clock = arrow.get(date).to('local').humanize(locale=lang)
clock = 'Created at ' + color_func(c['GROUP']['clock'])(clock)
+ prefix = ' ' * 2
+ # Add spaces in begining of line if this is inside a notification
+ if noti:
+ prefix = ' ' * 2 + prefix
# Create lines
- line1 = ' ' * 2 + name + member + ' ' + subscriber
- line2 = ' ' * 4 + description
- line3 = ' ' * 4 + mode
- line4 = ' ' * 4 + clock
+ line1 = prefix + name + member + ' ' + subscriber
+ line2 = prefix + ' ' * 2 + description
+ line3 = prefix + ' ' * 2 + mode
+ line4 = prefix + ' ' * 2 + clock
# Display
printNicely('')