def add_tweet(self, tweet, render=True): client = '' in_reply = '' retweeted = '' p = self.mainwin.parse_tweet(tweet) urls = util.detect_urls(p['text']) html_twt = p['text'] html_twt = self.__highlight_hashtags(html_twt) html_twt = self.__highlight_mentions(html_twt) html_twt = self.__highlight_urls(urls, html_twt) if p['client']: client = 'desde %s' % p['client'] if p['in_reply_to_user']: in_reply = ' en respuesta a %s' % p['in_reply_to_user'] if p['retweet_by']: retweeted += 'Retweeted by %s' % p['retweet_by'] twt = self.tweet_template twt = twt.replace('${avatar}', p['avatar']) twt = twt.replace('${username}', p['username']) twt = twt.replace('${text}', html_twt) twt = twt.replace('${date}', p['datetime']) twt = twt.replace('${client}', client) twt = twt.replace('${in_reply_to}', in_reply) twt = twt.replace('${retweeted_by}', retweeted) self.page += twt if render: gobject.idle_add(self.list.load_string, self.page, "text/html", "iso-8859-15", "timeline") #color = gtk.gdk.Color(255*257, 242*257, 212*257) if p['fav'] else None color = gtk.gdk.Color(250 * 257, 237 * 257, 187 * 257) if p['fav'] else None
def add_tweet(self, tweet): p = self.mainwin.parse_tweet(tweet) pix = self.mainwin.get_user_avatar(p['username'], p['avatar']) urls = [gobject.markup_escape_text(u) for u in util.detect_urls(p['text'])] pango_twt = gobject.markup_escape_text(p['text']) pango_twt = '<span size="9000"><b>@%s</b> %s</span>' % (p['username'], pango_twt) pango_twt = self.__highlight_hashtags(pango_twt) pango_twt = self.__highlight_mentions(pango_twt) pango_twt = self.__highlight_urls(urls, pango_twt) pango_twt += '<span size="2000">\n\n</span>' footer = '<span size="small" foreground="#999">%s' % p['datetime'] if p['client']: footer += ' desde %s' % p['client'] if p['in_reply_to_user']: footer += ' en respuesta a %s' % p['in_reply_to_user'] if p['retweet_by']: footer += '\nRetweeted by %s' % p['retweet_by'] footer += '</span>' pango_twt += footer #color = gtk.gdk.Color(255*257, 242*257, 212*257) if p['fav'] else None color = gtk.gdk.Color(250*257, 237*257, 187*257) if p['fav'] else None self.model.append([pix, p['username'], p['datetime'], p['client'], pango_twt, p['text'], p['id'], p['fav'], p['in_reply_to_id'], p['in_reply_to_user'], p['retweet_by'], color]) del pix
def add_tweet(self, tweet, render=True): client = '' in_reply = '' retweeted = '' p = self.mainwin.parse_tweet(tweet) urls = util.detect_urls(p.text) html_twt = p.text html_twt = self.__highlight_hashtags(html_twt) html_twt = self.__highlight_mentions(html_twt) html_twt = self.__highlight_urls(urls, html_twt) if p.source: client = ' %s %s' % (_('from'), p.source) if p.in_reply_to_user: in_reply = ' %s %s' % (_('in reply to'), p.in_reply_to_user) if p.retweet_by: retweeted += '%s %s' % (_('Retweeted by'), p.retweet_by) twt = self.tweet_template twt = twt.replace('${avatar}', p.avatar) twt = twt.replace('${username}', p.username) twt = twt.replace('${text}', html_twt) twt = twt.replace('${date}', p.timestamp) twt = twt.replace('${client}', client) twt = twt.replace('${in_reply_to}', in_reply) twt = twt.replace('${retweeted_by}', retweeted) self.page += twt if render: gobject.idle_add(self.list.load_string, self.page, "text/html", "iso-8859-15", "timeline") #color = gtk.gdk.Color(255*257, 242*257, 212*257) if p['fav'] else None color = gtk.gdk.Color(250*257, 237*257, 187*257) if p.is_favorite else None
def __build_open_item(self, menu, info): _open = gtk.MenuItem(_('Open')) open_menu = gtk.Menu() total_urls = util.detect_urls(info['msg']) total_users = util.detect_mentions(info['msg']) total_tags = util.detect_hashtags(info['msg']) total_groups = util.detect_groups(info['msg']) if not self.mainwin.request_groups_url(): total_groups = [] for u in total_urls: url = u if len(u) < 30 else u[:30] + '...' umenu = gtk.MenuItem(url) umenu.connect('button-release-event', self.__open_url_with_event, u) open_menu.append(umenu) if self.mainwin.read_config_value('General', 'expand-urls') == 'on': def __update_umenu(text): try: umenu.child.set_text( text ) except Exception, error: print error self.mainwin.request_expanded_url(u, __update_umenu)
def __build_open_item(self, menu, info): _open = gtk.MenuItem(_('Open')) open_menu = gtk.Menu() total_urls = util.detect_urls(info['msg']) total_users = util.detect_mentions(info['msg']) total_tags = util.detect_hashtags(info['msg']) total_groups = util.detect_groups(info['msg']) if not self.mainwin.request_groups_url(): total_groups = [] for u in total_urls: url = u if len(u) < 30 else u[:30] + '...' umenu = gtk.MenuItem(url) umenu.connect('button-release-event', self.__open_url_with_event, u) open_menu.append(umenu) if len(total_urls) > 0 and len(total_tags) > 0: open_menu.append(gtk.SeparatorMenuItem()) for h in total_tags: hashtag = self.mainwin.request_hashtags_url() + h[1:] hmenu = gtk.MenuItem(h) hmenu.connect('button-release-event', self.__open_url_with_event, hashtag) open_menu.append(hmenu) for h in total_groups: hashtag = '/'.join([self.mainwin.request_groups_url(), h[1:]]) hmenu = gtk.MenuItem(h) hmenu.connect('button-release-event', self.__open_url_with_event, hashtag) open_menu.append(hmenu) if (len(total_urls) > 0 or len(total_tags) > 0 or len(total_groups) > 0) and len(total_users) > 0: open_menu.append(gtk.SeparatorMenuItem()) exist = [] for m in total_users: if m == info['user'] or m in exist: continue exist.append(m) user_prof = '/'.join([self.mainwin.request_profiles_url(), m[1:]]) mentmenu = gtk.MenuItem(m) mentmenu.connect('button-release-event', self.__open_url_with_event, user_prof) open_menu.append(mentmenu) _open.set_submenu(open_menu) if ((len(total_urls) > 0) or (len(total_users) > 0) or (len(total_tags) > 0) or (len(total_groups) > 0)): menu.append(_open) return menu
def __build_open_menu(self, user, msg): open = gtk.MenuItem(_('Open')) open_menu = gtk.Menu() total_urls = util.detect_urls(msg) total_users = util.detect_mentions(msg) total_tags = util.detect_hashtags(msg) for u in total_urls: url = u if len(u) < 30 else u[:30] + '...' umenu = gtk.MenuItem(url) umenu.connect('button-release-event', self.__open_url_with_event, u) open_menu.append(umenu) if len(total_urls) > 0 and len(total_tags) > 0: open_menu.append(gtk.SeparatorMenuItem()) for h in total_tags: ht = "#search?q=%23" + h[1:] hashtag = '/'.join(['http://twitter.com', ht]) hmenu = gtk.MenuItem(h) hmenu.connect('button-release-event', self.__open_url_with_event, hashtag) open_menu.append(hmenu) if (len(total_urls) > 0 or len(total_tags) > 0) and \ len(total_users) > 0: open_menu.append(gtk.SeparatorMenuItem()) exist = [] for m in total_users: if m == user or m in exist: continue exist.append(m) user_prof = '/'.join(['http://www.twitter.com', m[1:]]) mentmenu = gtk.MenuItem(m) mentmenu.connect('button-release-event', self.__open_url_with_event, user_prof) open_menu.append(mentmenu) open.set_submenu(open_menu) if (len(total_urls) > 0) or (len(total_users) > 0) or \ (len(total_tags) > 0): return open else: return None
def __build_pango_text(self, status): ''' Transform the regular text into pango markup ''' urls = [ gobject.markup_escape_text(u) for u in util.detect_urls(status.text) ] pango_twt = util.unescape_text(status.text) pango_twt = gobject.markup_escape_text(pango_twt) user = '******' % ( self.mainwin.link_color, status.username ) pango_twt = '<span size="9000">%s</span>' % pango_twt pango_twt = self.__highlight_hashtags(pango_twt) pango_twt = self.__highlight_groups(pango_twt) pango_twt = self.__highlight_mentions(pango_twt) pango_twt = self.__highlight_urls(urls, pango_twt) pango_twt += '<span size="2000">\n\n</span>' try: pango_twt = user + pango_twt except UnicodeDecodeError: clear_txt = '' invalid_chars = [] for c in pango_twt: try: clear_txt += c.encode('ascii') except UnicodeDecodeError: invalid_chars.append(c) clear_txt += '?' log.debug('Problema con caracteres inválidos en un tweet: %s' % invalid_chars) pango_twt = clear_txt footer = '<span size="small" foreground="#999">%s' % status.datetime if status.source: footer += ' %s %s' % (_('from'), status.source) if status.in_reply_to_user: footer += ' %s %s' % (_('in reply to'), status.in_reply_to_user) if status.retweet_by: footer += '\n%s %s' % (_('Retweeted by'), status.retweet_by) footer += '</span>' pango_twt += footer return pango_twt
def __build_pango_text(self, status): ''' Transform the regular text into pango markup ''' urls = [ gobject.markup_escape_text(u) for u in util.detect_urls(status.text) ] pango_twt = util.unescape_text(status.text) pango_twt = gobject.markup_escape_text(pango_twt) user = '******' % ( self.mainwin.link_color, status.username) pango_twt = '<span size="9000">%s</span>' % pango_twt pango_twt = self.__highlight_hashtags(pango_twt) pango_twt = self.__highlight_groups(pango_twt) pango_twt = self.__highlight_mentions(pango_twt) pango_twt = self.__highlight_urls(urls, pango_twt) pango_twt += '<span size="2000">\n\n</span>' try: pango_twt = user + pango_twt except UnicodeDecodeError: clear_txt = '' invalid_chars = [] for c in pango_twt: try: clear_txt += c.encode('ascii') except UnicodeDecodeError: invalid_chars.append(c) clear_txt += '?' log.debug('Problema con caracteres inválidos en un tweet: %s' % invalid_chars) pango_twt = clear_txt footer = '<span size="small" foreground="#999">%s' % status.datetime if status.source: footer += ' %s %s' % (_('from'), status.source) if status.in_reply_to_user: footer += ' %s %s' % (_('in reply to'), status.in_reply_to_user) if status.retweet_by: footer += '\n%s %s' % (_('Retweeted by'), status.retweet_by) footer += '</span>' pango_twt += footer return pango_twt
def add_tweet(self, tweet): p = self.mainwin.parse_tweet(tweet) pix = self.mainwin.get_user_avatar(p['username'], p['avatar']) urls = [gobject.markup_escape_text(u) \ for u in util.detect_urls(p['text'])] pango_twt = util.unescape_text(p['text']) pango_twt = gobject.markup_escape_text(pango_twt) #pango_twt = '<span size="9000"><b>%s</b> %s</span>' % \ # (p['username'], pango_twt) user = '******' % \ (self.mainwin.link_color, p['username']) pango_twt = '<span size="9000">%s</span>' % pango_twt pango_twt = self.__highlight_hashtags(pango_twt) pango_twt = self.__highlight_mentions(pango_twt) pango_twt = self.__highlight_urls(urls, pango_twt) pango_twt += '<span size="2000">\n\n</span>' pango_twt = user + pango_twt footer = '<span size="small" foreground="#999">%s' % p['datetime'] if p['client']: footer += ' %s %s' % (_('from'), p['client']) if p['in_reply_to_user']: footer += ' %s %s' % (_('in reply to'), p['in_reply_to_user']) if p['retweet_by']: footer += '\n%s %s' % (_('Retweeted by'), p['retweet_by']) footer += '</span>' pango_twt += footer #color = gtk.gdk.Color(255*257, 242*257, 212*257) if p['fav'] else None if p['fav']: color = gtk.gdk.Color(250 * 257, 237 * 257, 187 * 257) else: color = None self.model.append([pix, p['username'], p['datetime'], p['client'], pango_twt, p['text'], p['id'], p['fav'], p['in_reply_to_id'], p['in_reply_to_user'], p['retweet_by'], color]) del pix