X-Git-Url: https://vcs.fsf.org/?p=rainbowstream.git;a=blobdiff_plain;f=rainbowstream%2Fdraw.py;h=62254e6cc8e4321c0aea4834f3558944d6e83cfd;hp=b9373d34cac41333f556ecaea2e7aa8d125a6f7f;hb=90b5f20ed8db5d425c5d0a36cb6c9cd959d35bd9;hpb=0e3c1ad2e242d9443da0d2270b4d207d1a3198e7 diff --git a/rainbowstream/draw.py b/rainbowstream/draw.py index b9373d3..62254e6 100644 --- a/rainbowstream/draw.py +++ b/rainbowstream/draw.py @@ -175,6 +175,23 @@ def fallback_humanize(date, fallback_format=None, use_fallback=False): 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 @@ -184,7 +201,8 @@ def draw(t, keyword=None, humanize=True, noti=False, fil=[], ig=[]): # 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'] @@ -201,8 +219,6 @@ def draw(t, keyword=None, humanize=True, noti=False, fil=[], ig=[]): # 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]): @@ -1066,8 +1082,10 @@ def format_quote(tweet): 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')) @@ -1075,13 +1093,16 @@ def format_quote(tweet): 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