import datetime
import time
+from twitter.util import printNicely
from StringIO import StringIO
from dateutil import parser
+from .c_image import *
from .colors import *
from .config import *
from .db import *
db = RainbowDB()
+
+def color_func(func_name):
+ """
+ Call color function base on name
+ """
+ pure = func_name.encode('utf8')
+ if pure.startswith('RGB_') and pure[4:].isdigit():
+ return RGB(int(pure[4:])
+ return globals()[pure]
+
+
def draw(t, iot=False, keyword=None, fil=[], ig=[]):
"""
Draw the rainbow
rid = res[0].rainbow_id
# Format info
- user = cycle_color(name) + grey(' ' + screen_name + ' ')
- meta = grey('[' + clock + '] [id=' + str(rid) + '] ')
+ user = cycle_color(name) + color_func(TWEET['nick'])(' ' + screen_name + ' ')
+ meta = color_func(TWEET['clock'])('[' + clock + '] ') + color_func(TWEET['id'])('[id=' + str(rid) + '] ')
if favorited:
- meta = meta + green(u'\u2605')
+ meta = meta + color_func(TWEET['favorite'])(u'\u2605')
tweet = text.split()
# Replace url
if expanded_url:
lambda x: expanded_url[index] if x == url[index] else x,
tweet)
# Highlight RT
- tweet = map(lambda x: grey(x) if x == 'RT' else x, tweet)
+ tweet = map(lambda x: color_func(TWEET['rt'])(x) if x == 'RT' else x, tweet)
# Highlight screen_name
tweet = map(lambda x: cycle_color(x) if x[0] == '@' else x, tweet)
# Highlight link
- tweet = map(lambda x: cyan(x) if x[0:4] == 'http' else x, tweet)
+ tweet = map(lambda x: color_func(TWEET['link'])(x) if x[0:4] == 'http' else x, tweet)
# Highlight search keyword
if keyword:
tweet = map(
- lambda x: on_yellow(x) if
+ lambda x: color_func(TWEET['keyword'])(x) if
''.join(c for c in x if c.isalnum()).lower() == keyword.lower()
else x,
tweet
res = db.message_to_rainbow_query(mid)
rid = res[0].rainbow_id
- sender = cycle_color(sender_name) + grey(' ' + sender_screen_name + ' ')
- recipient = cycle_color(
- recipient_name) + grey(' ' + recipient_screen_name + ' ')
- user = sender + magenta(' >>> ') + recipient
- meta = grey('[' + clock + '] [message_id=' + str(rid) + '] ')
+ # Draw
+ sender = cycle_color(sender_name) + color_func(MESSAGE['sender'])(' ' + sender_screen_name + ' ')
+ recipient = cycle_color(recipient_name) + color_func(MESSAGE['recipient'])(' ' + recipient_screen_name + ' ')
+ user = sender + color_func(MESSAGE['to'])(' >>> ') + recipient
+ meta = color_func(MESSAGE['clock'])('[' + clock + ']') + color_func(MESSAGE['id'])(' [message_id=' + str(rid) + '] ')
text = ''.join(map(lambda x: x + ' ' if x == '\n' else x, text))
line1 = u"{u:>{uw}}:".format(
statuses_count = u['statuses_count']
friends_count = u['friends_count']
followers_count = u['followers_count']
+
# Create content
- statuses_count = green(str(statuses_count) + ' tweets')
- friends_count = green(str(friends_count) + ' following')
- followers_count = green(str(followers_count) + ' followers')
+ statuses_count = color_func(PROFILE['statuses_count'])(str(statuses_count) + ' tweets')
+ friends_count = color_func(PROFILE['friends_count'])(str(friends_count) + ' following')
+ followers_count = color_func(PROFILE['followers_count'])(str(followers_count) + ' followers')
count = statuses_count + ' ' + friends_count + ' ' + followers_count
- user = cycle_color(name) + grey(' @' + screen_name + ' : ') + count
- profile_image_raw_url = 'Profile photo: ' + cyan(profile_image_url)
+ user = cycle_color(name) + color_func(PROFILE['nick'])(' @' + screen_name + ' : ') + count
+ profile_image_raw_url = 'Profile photo: ' + color_func(PROFILE['profile_image_url'])(profile_image_url)
description = ''.join(
map(lambda x: x + ' ' * 4 if x == '\n' else x, description))
- description = yellow(description)
- location = 'Location : ' + magenta(location)
- url = 'URL : ' + (cyan(url) if url else '')
+ description = color_func(PROFILE['description'])(description)
+ location = 'Location : ' + color_func(PROFILE['location'])(location)
+ url = 'URL : ' + (color_func(PROFILE['url'])(url) if url else '')
date = parser.parse(created_at)
date = date - datetime.timedelta(seconds=time.timezone)
clock = date.strftime('%Y/%m/%d %H:%M:%S')
- clock = 'Join at ' + white(clock)
+ clock = 'Join at ' + color_func(PROFILE['clock'])(clock)
+
# Format
line1 = u"{u:>{uw}}".format(
u=user,
c=clock,
cw=len(clock) + 4,
)
+
# Display
printNicely('')
printNicely(line1)
for topic in trends[:TREND_MAX]:
name = topic['name']
url = topic['url']
- line = cycle_color(name) + ': ' + cyan(url)
+ line = cycle_color(name) + ': ' + TREND['url'](url)
printNicely(line)
printNicely('')