from .c_image import *
from .colors import *
from .config import *
-from .db import *
from .py3patch import *
-
-db = RainbowDB()
-g = {}
+# Draw global variables
+dg = {}
def init_cycle():
"""
Notify from rainbow
"""
- g['cyc'] = init_cycle()
- g['cache'] = {}
+ dg['cyc'] = init_cycle()
+ dg['cache'] = {}
def order_rainbow(s):
"""
@wraps(func)
def wrapper(*args):
- if args not in g['cache']:
- g['cache'][args] = func(*args)
- return g['cache'][args]
+ if args not in dg['cache']:
+ dg['cache'][args] = func(*args)
+ return dg['cache'][args]
return wrapper
"""
Cycle the colors_shuffle
"""
- return next(g['cyc'])(s)
+ return next(dg['cyc'])(s)
def ascii_art(text):
"""
fi = figlet_format(text, font='doom')
print('\n'.join(
- [next(g['cyc'])(i) for i in fi.split('\n')]
+ [next(dg['cyc'])(i) for i in fi.split('\n')]
))
-def show_calendar(month, date, rel):
- """
- Show the calendar in rainbow mode
- """
- month = random_rainbow(month)
- date = ' '.join([cycle_color(i) for i in date.split(' ')])
- today = str(int(os.popen('date +\'%d\'').read().strip()))
- # Display
- printNicely(month)
- printNicely(date)
- for line in rel:
- ary = line.split(' ')
- ary = lmap(lambda x: color_func(c['CAL']['today'])(x)
- if x == today
- else color_func(c['CAL']['days'])(x), ary)
- printNicely(' '.join(ary))
-
-
def check_config():
"""
Check if config is changed
return theme in themes
-def reload_theme(current_config):
+def reload_theme(value, prev):
"""
Check current theme and update if necessary
"""
- exists = db.theme_query()
- themes = [t.theme_name for t in exists]
- if current_config != themes[0]:
+ if value != prev:
config = os.path.dirname(
- __file__) + '/colorset/' + current_config + '.json'
+ __file__) + '/colorset/' + value + '.json'
# Load new config
data = load_config(config)
if data:
for d in data:
c[d] = data[d]
- # Restart color cycle and update db/config
+ # Restart color cycle and update config
start_cycle()
- db.theme_update(current_config)
- set_config('THEME', current_config)
+ set_config('THEME', value)
+ return value
+ return prev
def color_func(func_name):
Draw the rainbow
"""
+ # Check the semaphore pause and lock (stream process only)
+ if check_semaphore:
+ if c['pause']:
+ return
+ while c['lock']:
+ time.sleep(0.5)
+
+ # Check config
check_config()
- reload_theme(c['THEME'])
+
# Retrieve tweet
tid = t['id']
text = t['text']
return
# Get rainbow id
- res = db.tweet_to_rainbow_query(tid)
- if not res:
- db.tweet_store(tid)
- res = db.tweet_to_rainbow_query(tid)
- rid = res[0].rainbow_id
+ if tid not in c['tweet_dict']:
+ c['tweet_dict'].append(tid)
+ rid = len(c['tweet_dict']) - 1
+ else:
+ rid = c['tweet_dict'].index(tid)
# Format info
name = cycle_color(name)
if expanded_url:
for index in range(len(expanded_url)):
tweet = lmap(
- lambda x: expanded_url[index] if x == url[index] else x,
+ lambda x: expanded_url[index]
+ if x == url[index]
+ else x,
tweet)
# Highlight RT
tweet = lmap(
- lambda x: color_func(
- c['TWEET']['rt'])(x) if x == 'RT' else x,
+ lambda x: color_func(c['TWEET']['rt'])(x)
+ if x == 'RT'
+ else x,
tweet)
# Highlight screen_name
tweet = lmap(lambda x: cycle_color(x) if x[0] == '@' else x, tweet)
# Highlight link
tweet = lmap(
- lambda x: color_func(
- c['TWEET']['link'])(x) if x[
- 0:4] == 'http' else x,
+ lambda x: color_func(c['TWEET']['link'])(x)
+ if x[0:4] == 'http'
+ else x,
+ tweet)
+ # Highlight hashtag
+ tweet = lmap(
+ lambda x: color_func(c['TWEET']['hashtag'])(x)
+ if x.startswith('#')
+ else x,
tweet)
-
# Highlight keyword
tweet = ' '.join(tweet)
if keyword:
formater = tweet.join(formater.split("#tweet"))
# Change clock word
word = [w for w in formater.split() if '#clock' in w][0]
- delimiter = color_func(
- c['TWEET']['clock'])(
- clock.join(
- word.split('#clock')))
+ delimiter = color_func(c['TWEET']['clock'])(
+ clock.join(word.split('#clock')))
formater = delimiter.join(formater.split(word))
# Change id word
word = [w for w in formater.split() if '#id' in w][0]
printNicely(red('Wrong format in config.'))
return
- # Check the semaphore lock (stream process only)
- if check_semaphore:
- if db.semaphore_query_pause():
- return
- while db.semaphore_query_flag():
- time.sleep(0.5)
-
# Draw
printNicely(formater)
printNicely(red('Sorry, image link is broken'))
-def print_message(m):
+def print_message(m, check_semaphore=False):
"""
Print direct message
"""
+
+ # Check the semaphore pause and lock (stream process only)
+ if check_semaphore:
+ if c['pause']:
+ return
+ while c['lock']:
+ time.sleep(0.5)
+
+ # Retrieve message
sender_screen_name = '@' + m['sender_screen_name']
sender_name = m['sender']['name']
text = unescape(m['text'])
clock = date.strftime(clock_format)
# Get rainbow id
- res = db.message_to_rainbow_query(mid)
- if not res:
- db.message_store(mid)
- res = db.message_to_rainbow_query(mid)
- rid = res[0].rainbow_id
+ if mid not in c['message_dict']:
+ c['message_dict'].append(mid)
+ rid = len(c['message_dict']) - 1
+ else:
+ rid = c['message_dict'].index(mid)
# Draw
sender_name = cycle_color(sender_name)
formater = text.join(formater.split("#message"))
# Change clock word
word = [w for w in formater.split() if '#clock' in w][0]
- delimiter = color_func(
- c['MESSAGE']['clock'])(
- clock.join(
- word.split('#clock')))
+ delimiter = color_func(c['MESSAGE']['clock'])(
+ clock.join(word.split('#clock')))
formater = delimiter.join(formater.split(word))
# Change id word
word = [w for w in formater.split() if '#id' in w][0]
if c['IMAGE_ON_TERM']:
try:
response = requests.get(profile_image_url)
- image_to_display(BytesIO(response.content), 2, 20)
+ image_to_display(BytesIO(response.content))
except:
pass
else:
"""
Display a list
"""
- for g in group:
+ for grp in group:
# Format
- name = g['full_name']
+ name = grp['full_name']
name = color_func(c['GROUP']['name'])(name + ' : ')
- member = str(g['member_count'])
+ member = str(grp['member_count'])
member = color_func(c['GROUP']['member'])(member + ' member')
- subscriber = str(g['subscriber_count'])
+ subscriber = str(grp['subscriber_count'])
subscriber = color_func(
c['GROUP']['subscriber'])(
subscriber +
' subscriber')
- description = g['description'].strip()
+ description = grp['description'].strip()
description = color_func(c['GROUP']['description'])(description)
- mode = g['mode']
+ mode = grp['mode']
mode = color_func(c['GROUP']['mode'])('Type: ' + mode)
- created_at = g['created_at']
+ created_at = grp['created_at']
date = parser.parse(created_at)
date = date - datetime.timedelta(seconds=time.timezone)
clock = date.strftime('%Y/%m/%d %H:%M:%S')
printNicely('')
+def show_calendar(month, date, rel):
+ """
+ Show the calendar in rainbow mode
+ """
+ month = random_rainbow(month)
+ date = ' '.join([cycle_color(i) for i in date.split(' ')])
+ today = str(int(os.popen('date +\'%d\'').read().strip()))
+ # Display
+ printNicely(month)
+ printNicely(date)
+ for line in rel:
+ ary = line.split(' ')
+ ary = lmap(
+ lambda x: color_func(c['CAL']['today'])(x)
+ if x == today
+ else color_func(c['CAL']['days'])(x),
+ ary)
+ printNicely(' '.join(ary))
+
+
# Start the color cycle
start_cycle()