return clock
+def get_full_text(t):
+ """Handle RTs and extended tweets to always display all the available text"""
+
+ if t.get('retweeted_status'):
+ rt_status = t['retweeted_status']
+ if rt_status.get('extended_tweet'):
+ elem = rt_status['extended_tweet']
+ else:
+ elem = rt_status
+ rt_text = elem.get('full_text', elem.get('text'))
+ t['full_text'] = 'RT @' + rt_status['user']['screen_name'] + ': ' + rt_text
+ elif t.get('extended_tweet'):
+ t['full_text'] = t['extended_tweet']['full_text']
+
+ return t.get('full_text', t.get('text'))
+
+
def draw(t, keyword=None, humanize=True, noti=False, fil=[], ig=[]):
"""
Draw the rainbow
# Retrieve tweet
tid = t['id']
- text = t['text']
+
+ text = get_full_text(t)
screen_name = t['user']['screen_name']
name = t['user']['name']
created_at = t['created_at']
# Pull extended retweet text
try:
- text = 'RT @' + t['retweeted_status']['user']['screen_name'] + ': ' +\
- t['retweeted_status']['text']
# Display as a notification
target = t['retweeted_status']['user']['screen_name']
if all([target == c['original_name'], not noti]):
if favorited:
fav = color_func(c['TWEET']['favorited'])(u'\u2605')
- tweet = text.split()
+ tweet = text.split(' ')
+ tweet = [x for x in tweet if x != '']
# Replace url
if expanded_url:
for index in xrange(len(expanded_url)):
else x,
tweet)
# Highlight screen_name
- tweet = lmap(lambda x: cycle_color(x) if x[0] == '@' else x, tweet)
+ tweet = lmap(
+ lambda x: cycle_color(x) if x.lstrip().startswith('@') else x, tweet)
# Highlight link
tweet = lmap(
lambda x: color_func(c['TWEET']['link'])(x)
- if x.startswith('http')
+ if x.lstrip().startswith('http')
else x,
tweet)
# Highlight hashtag
tweet = lmap(
lambda x: color_func(c['TWEET']['hashtag'])(x)
- if x.startswith('#')
+ if x.lstrip().startswith('#')
else x,
tweet)
# Highlight my tweet
for x in tweet
if not any([
x == 'RT',
- x.startswith('http'),
- x.startswith('#')])
+ x.lstrip().startswith('http'),
+ x.lstrip().startswith('#')])
]
# Highlight keyword
tweet = ' '.join(tweet)
+ tweet = '\n '.join(tweet.split('\n'))
if keyword:
roj = re.search(keyword, tweet, re.IGNORECASE)
if roj:
Quoting format
"""
# Retrieve info
- screen_name = '@' + tweet['user']['screen_name']
- text = tweet['text']
+ screen_name = tweet['user']['screen_name']
+ text = get_full_text(tweet)
+ tid = str( tweet['id'] )
+
# Validate quote format
if '#owner' not in c['QUOTE_FORMAT']:
printNicely(light_magenta('Quote should contains #owner'))
if '#comment' not in c['QUOTE_FORMAT']:
printNicely(light_magenta('Quote format should have #comment'))
return False
+
# Build formater
formater = ''
try:
formater = c['QUOTE_FORMAT']
- formater = screen_name.join(formater.split('#owner'))
- formater = text.join(formater.split('#tweet'))
- formater = u2str(formater)
+
+ formater = formater.replace('#owner', screen_name)
+ formater = formater.replace('#tweet', text)
+ formater = formater.replace('#tid', tid)
+
formater = emojize(formater)
except:
pass