125
125
message = retweet.get('text', '') or tweet.get('text', '')
129
#TODO support more than one url and/or media file
130
for url in (entities.get('urls', []) + entities.get('media', [])):
131
begin, end = url.get('indices', (None, None))
133
expanded_url = url.get('expanded_url', '')
134
display_url = url.get('display_url', '')
135
other_url = url.get('url', '')
130
for url in (entities.get('urls', []) +
131
entities.get('media', []) +
132
entities.get('user_mentions', []) +
133
entities.get('hashtags', [])):
134
begin, end = url.get('indices', (None, None))
136
#Drop invalid entities (just to be safe)
137
if None not in (begin, end):
140
for key, url in sorted(urls.items(), reverse=True):
141
begin, end = url.get('indices', (None, None))
143
expanded_url = url.get('expanded_url')
144
display_url = url.get('display_url')
145
other_url = url.get('url')
147
mention_name = url.get('screen_name')
137
149
picture_url = url.get('media_url', picture_url)
151
hashtag = url.get('text')
139
155
# Friends has no notion of display URLs, so this is handled at the protocol level
140
if None not in (begin, end):
144
(expanded_url or other_url),
146
(display_url or other_url),
156
if (other_url or expanded_url):
157
content = self._linkify(expanded_url or other_url,
158
display_url or other_url)
160
# Linkify hashtags until supported by friends-app
162
content = self._linkify('https://twitter.com/search?q=%23' +
163
hashtag + '&src=hash', '#' + hashtag)
165
# Linkify a mention until they are supported natively by friends
167
content = self._linkify_mention(mention_name)
170
message = ''.join([message[:begin], content, message[end:]])
151
message = 'RT @{}: {}'.format(
152
retweet.get('user', {}).get('screen_name', ''),
173
message = 'RT {}: {}'.format(
174
self._linkify_mention(retweet.get('user', {}).get('screen_name', '')),
194
def _linkify_mention(self, name):
195
return self._linkify('https://twitter.com/' + name, '@' + name)
197
def _linkify(self, address, name):
198
return '<a href="{}">{}</a>'.format(address, name)
172
200
def _append_since(self, url, stream='messages'):
173
201
since = self._tweet_ids.get(stream)
174
202
if since is not None: