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')]
))
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 lock (stream process only)
+ # Check the semaphore pause and lock (stream process only)
if check_semaphore:
- if db.semaphore_query_pause():
+ if c['pause']:
return
- while db.semaphore_query_lock():
+ while c['lock']:
time.sleep(0.5)
- # Check config and theme
+ # Check config
check_config()
- reload_theme(c['THEME'])
# Retrieve tweet
tid = t['id']
name = t['user']['name']
created_at = t['created_at']
favorited = t['favorited']
+ retweet_count = t['retweet_count']
+ favorite_count = t['favorite_count']
date = parser.parse(created_at)
date = date - datetime.timedelta(seconds=time.timezone)
clock_format = '%Y/%m/%d %H:%M:%S'
# Filter and ignore
screen_name = '@' + screen_name
+ fil = list(set((fil or []) + c['ONLY_LIST']))
+ ig = list(set((ig or []) + c['IGNORE_LIST']))
if fil and screen_name not in fil:
return
if ig and screen_name in ig:
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)
tweet = delimiter.join(ary)
# Load config formater
+ formater = ''
try:
formater = c['FORMAT']['TWEET']['DISPLAY']
formater = name.join(formater.split("#name"))
word = [w for w in formater.split() if '#id' in w][0]
delimiter = color_func(c['TWEET']['id'])(id.join(word.split('#id')))
formater = delimiter.join(formater.split(word))
+ # Change retweet count word
+ word = [w for w in formater.split() if '#rt_count' in w][0]
+ delimiter = color_func(c['TWEET']['retweet_count'])(
+ str(retweet_count).join(word.split('#rt_count')))
+ formater = delimiter.join(formater.split(word))
+ # Change favorites count word
+ word = [w for w in formater.split() if '#fa_count' in w][0]
+ delimiter = color_func(c['TWEET']['favorite_count'])(
+ str(favorite_count).join(word.split('#fa_count')))
+ formater = delimiter.join(formater.split(word))
except:
- printNicely(red('Wrong format in config.'))
- return
+ pass
# Draw
printNicely(formater)
Print direct message
"""
- # Check the semaphore lock (stream process only)
+ # Check the semaphore pause and lock (stream process only)
if check_semaphore:
- if db.semaphore_query_pause():
+ if c['pause']:
return
- while db.semaphore_query_lock():
+ while c['lock']:
time.sleep(0.5)
# Retrieve message
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)
"""
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')