+def print_message(m):
+ """
+ Print direct message
+ """
+ sender_screen_name = '@' + m['sender_screen_name']
+ sender_name = m['sender']['name']
+ text = m['text']
+ recipient_screen_name = '@' + m['recipient_screen_name']
+ recipient_name = m['recipient']['name']
+ 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')
+
+ # 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
+
+ sender = cycle_color(sender_name) + grey(' ' + sender_screen_name + ' ')
+ recipient = cycle_color(
+ recipient_name) + grey(' ' + recipient_screen_name + ' ')
+ user = sender + magenta(' >>> ') + recipient
+ meta = grey('[' + clock + '] [message_id=' + str(rid) + '] ')
+ text = ''.join(map(lambda x: x + ' ' if x == '\n' else x, text))
+
+ line1 = u"{u:>{uw}}:".format(
+ u=user,
+ uw=len(user) + 2,
+ )
+ line2 = u"{c:>{cw}}".format(
+ c=meta,
+ cw=len(meta) + 2,
+ )
+
+ line3 = ' ' + text
+
+ printNicely('')
+ printNicely(line1)
+ printNicely(line2)
+ printNicely(line3)
+
+
+def show_profile(u):
+ """
+ Show a profile
+ """
+ # Retrieve info
+ name = u['name']
+ screen_name = u['screen_name']
+ description = u['description']
+ profile_image_url = u['profile_image_url']
+ location = u['location']
+ url = u['url']
+ created_at = u['created_at']
+ statuses_count = u['statuses_count']
+ friends_count = u['friends_count']
+ followers_count = u['followers_count']
+ # Create content
+ statuses_count = green(str(statuses_count) + ' tweets')
+ friends_count = green(str(friends_count) + ' following')
+ followers_count = green(str(followers_count) + ' followers')
+ count = statuses_count + ' ' + friends_count + ' ' + followers_count
+ user = cycle_color(name) + grey(' @' + screen_name + ' : ') + count
+ profile_image_raw_url = 'Profile photo: ' + cyan(profile_image_url)
+ description = ''.join(
+ map(lambda x: x + ' ' * 4 if x == '\n' else x, description))
+ description = yellow(description)
+ location = 'Location : ' + magenta(location)
+ url = 'URL : ' + (cyan(url) if url else '')
+ date = parser.parse(created_at)
+ date = date - datetime.timedelta(seconds=time.timezone)
+ clock = date.strftime('%Y/%m/%d %H:%M:%S')
+ clock = 'Join at ' + white(clock)
+ # Format
+ line1 = u"{u:>{uw}}".format(
+ u=user,
+ uw=len(user) + 2,
+ )
+ line2 = u"{p:>{pw}}".format(
+ p=profile_image_raw_url,
+ pw=len(profile_image_raw_url) + 4,
+ )
+ line3 = u"{d:>{dw}}".format(
+ d=description,
+ dw=len(description) + 4,
+ )
+ line4 = u"{l:>{lw}}".format(
+ l=location,
+ lw=len(location) + 4,
+ )
+ line5 = u"{u:>{uw}}".format(
+ u=url,
+ uw=len(url) + 4,
+ )
+ line6 = u"{c:>{cw}}".format(
+ c=clock,
+ cw=len(clock) + 4,
+ )
+ # Display
+ printNicely('')
+ printNicely(line1)
+ if g['iot']:
+ response = requests.get(profile_image_url)
+ image_to_display(StringIO(response.content), 2, 20)
+ else:
+ printNicely(line2)
+ for line in [line3, line4, line5, line6]:
+ printNicely(line)
+ printNicely('')
+
+
+def print_trends(trends):
+ """
+ Display topics
+ """
+ for topic in trends[:TREND_MAX]:
+ name = topic['name']
+ url = topic['url']
+ line = cycle_color(name) + ': ' + cyan(url)
+ printNicely(line)
+ printNicely('')
+
+