))
-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
Draw the rainbow
"""
+ # Check the semaphore lock (stream process only)
+ if check_semaphore:
+ if db.semaphore_query_pause():
+ return
+ while db.semaphore_query_lock():
+ time.sleep(0.5)
+
+ # Check config and theme
check_config()
reload_theme(c['THEME'])
+
# Retrieve tweet
tid = t['id']
text = t['text']
favorited = t['favorited']
date = parser.parse(created_at)
date = date - datetime.timedelta(seconds=time.timezone)
- clock = date.strftime('%Y/%m/%d %H:%M:%S')
+ clock_format = '%Y/%m/%d %H:%M:%S'
+ try:
+ clock_format = c['FORMAT']['TWEET']['CLOCK_FORMAT']
+ except:
+ pass
+ clock = date.strftime(clock_format)
# Pull extended retweet text
try:
rid = res[0].rainbow_id
# Format info
- user = cycle_color(
- name) + color_func(c['TWEET']['nick'])(' ' + screen_name + ' ')
- meta = color_func(c['TWEET']['clock'])(
- '[' + clock + '] ') + color_func(c['TWEET']['id'])('[id=' + str(rid) + '] ')
+ name = cycle_color(name)
+ nick = color_func(c['TWEET']['nick'])(screen_name)
+ clock = clock
+ id = str(rid)
+ fav = ''
if favorited:
- meta = meta + color_func(c['TWEET']['favorited'])(u'\u2605')
+ fav = color_func(c['TWEET']['favorited'])(u'\u2605')
+
tweet = text.split()
# Replace url
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:
delimiter = color_func(c['TWEET']['keyword'])(occur)
tweet = delimiter.join(ary)
- # Draw rainbow
- line1 = u"{u:>{uw}}:".format(
- u=user,
- uw=len(user) + 2,
- )
- line2 = u"{c:>{cw}}".format(
- c=meta,
- cw=len(meta) + 2,
- )
- line3 = ' ' + tweet
-
- # Check the semaphore lock
- if check_semaphore:
- while db.semaphore_query():
- time.sleep(0.5)
+ # Load config formater
+ try:
+ formater = c['FORMAT']['TWEET']['DISPLAY']
+ formater = name.join(formater.split("#name"))
+ formater = nick.join(formater.split("#nick"))
+ formater = fav.join(formater.split("#fav"))
+ 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')))
+ formater = delimiter.join(formater.split(word))
+ # Change id word
+ 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))
+ except:
+ printNicely(red('Wrong format in config.'))
+ return
- # Output
- printNicely('')
- printNicely(line1)
- printNicely(line2)
- printNicely(line3)
+ # Draw
+ printNicely(formater)
# Display Image
if c['IMAGE_ON_TERM'] and media_url:
printNicely(red('Sorry, image link is broken'))
-def print_message(m):
+def print_message(m, check_semaphore=False):
"""
Print direct message
"""
+
+ # Check the semaphore lock (stream process only)
+ if check_semaphore:
+ if db.semaphore_query_pause():
+ return
+ while db.semaphore_query_lock():
+ time.sleep(0.5)
+
+ # Retrieve message
sender_screen_name = '@' + m['sender_screen_name']
sender_name = m['sender']['name']
text = unescape(m['text'])
mid = m['id']
date = parser.parse(m['created_at'])
date = date - datetime.timedelta(seconds=time.timezone)
- clock = date.strftime('%Y/%m/%d %H:%M:%S')
+ clock_format = '%Y/%m/%d %H:%M:%S'
+ try:
+ clock_format = c['FORMAT']['MESSAGE']['CLOCK_FORMAT']
+ except:
+ pass
+ clock = date.strftime(clock_format)
# Get rainbow id
res = db.message_to_rainbow_query(mid)
rid = res[0].rainbow_id
# Draw
- sender = cycle_color(
- sender_name) + color_func(c['MESSAGE']['sender'])(' ' + sender_screen_name + ' ')
- recipient = cycle_color(recipient_name) + color_func(
- c['MESSAGE']['recipient'])(
- ' ' + recipient_screen_name + ' ')
- user = sender + color_func(c['MESSAGE']['to'])(' >>> ') + recipient
- meta = color_func(
- c['MESSAGE']['clock'])(
- '[' + clock + ']') + color_func(
- c['MESSAGE']['id'])(
- ' [message_id=' + str(rid) + '] ')
- text = ''.join(lmap(lambda x: x + ' ' if x == '\n' else x, text))
+ sender_name = cycle_color(sender_name)
+ sender_nick = color_func(c['MESSAGE']['sender'])(sender_screen_name)
+ recipient_name = cycle_color(recipient_name)
+ recipient_nick = color_func(
+ c['MESSAGE']['recipient'])(recipient_screen_name)
+ to = color_func(c['MESSAGE']['to'])('>>>')
+ clock = clock
+ id = str(rid)
- line1 = u"{u:>{uw}}:".format(
- u=user,
- uw=len(user) + 2,
- )
- line2 = u"{c:>{cw}}".format(
- c=meta,
- cw=len(meta) + 2,
- )
+ text = ''.join(lmap(lambda x: x + ' ' if x == '\n' else x, text))
- line3 = ' ' + text
+ # Load config formater
+ try:
+ formater = c['FORMAT']['MESSAGE']['DISPLAY']
+ formater = sender_name.join(formater.split("#sender_name"))
+ formater = sender_nick.join(formater.split("#sender_nick"))
+ formater = to.join(formater.split("#to"))
+ formater = recipient_name.join(formater.split("#recipient_name"))
+ formater = recipient_nick.join(formater.split("#recipient_nick"))
+ 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')))
+ formater = delimiter.join(formater.split(word))
+ # Change id word
+ word = [w for w in formater.split() if '#id' in w][0]
+ delimiter = color_func(c['MESSAGE']['id'])(id.join(word.split('#id')))
+ formater = delimiter.join(formater.split(word))
+ except:
+ printNicely(red('Wrong format in config.'))
+ return
- printNicely('')
- printNicely(line1)
- printNicely(line2)
- printNicely(line3)
+ # Draw
+ printNicely(formater)
def show_profile(u):
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:
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()