def parse_tweet(self, xtweet): '''Decompose tweet in basic parts''' tweet, retweet_by = self.__get_real_tweet(xtweet) if tweet.has_key('user'): username = tweet['user']['screen_name'] avatar = tweet['user']['profile_image_url'] elif tweet.has_key('sender'): username = tweet['sender']['screen_name'] avatar = tweet['sender']['profile_image_url'] elif tweet.has_key('from_user'): username = tweet['from_user'] avatar = tweet['profile_image_url'] tweet['text'] = util.unescape_text(tweet['text']) client = util.detect_client(tweet) datetime = util.get_timestamp(tweet) in_reply_to_id = None in_reply_to_user = None if tweet.has_key('in_reply_to_status_id') and \ tweet['in_reply_to_status_id']: in_reply_to_id = tweet['in_reply_to_status_id'] in_reply_to_user = tweet['in_reply_to_screen_name'] fav = False if tweet.has_key('favorited'): fav = tweet['favorited'] return {'username': username, 'avatar': avatar, 'client': client, 'datetime':datetime, 'text': tweet['text'], 'id': tweet['id'], 'in_reply_to_id': in_reply_to_id, 'in_reply_to_user': in_reply_to_user, 'fav': fav, 'retweet_by': retweet_by}
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 parse_tweet(self, xtweet): '''Decompose tweet in basic parts''' tweet, retweet_by = self.__get_real_tweet(xtweet) if tweet.has_key('user'): username = tweet['user']['screen_name'] avatar = tweet['user']['profile_image_url'] elif tweet.has_key('sender'): username = tweet['sender']['screen_name'] avatar = tweet['sender']['profile_image_url'] elif tweet.has_key('from_user'): username = tweet['from_user'] avatar = tweet['profile_image_url'] tweet['text'] = util.unescape_text(tweet['text']) client = util.detect_client(tweet) datetime = util.get_timestamp(tweet) in_reply_to_id = None in_reply_to_user = None if tweet.has_key('in_reply_to_status_id') and \ tweet['in_reply_to_status_id']: in_reply_to_id = tweet['in_reply_to_status_id'] in_reply_to_user = tweet['in_reply_to_screen_name'] fav = False if tweet.has_key('favorited'): fav = tweet['favorited'] return { 'username': username, 'avatar': avatar, 'client': client, 'datetime': datetime, 'text': tweet['text'], 'id': tweet['id'], 'in_reply_to_id': in_reply_to_id, 'in_reply_to_user': in_reply_to_user, 'fav': fav, 'retweet_by': retweet_by }
def parse_tweet(self, xtweet): tweet, retweet_by = self.__get_real_tweet(xtweet) if tweet.has_key("user"): username = tweet["user"]["screen_name"] avatar = tweet["user"]["profile_image_url"] elif tweet.has_key("sender"): direct = True username = tweet["sender"]["screen_name"] avatar = tweet["sender"]["profile_image_url"] elif tweet.has_key("from_user"): username = tweet["from_user"] avatar = tweet["profile_image_url"] tweet["text"] = util.unescape_text(tweet["text"]) client = util.detect_client(tweet) datetime = util.get_timestamp(tweet) in_reply_to_id = None in_reply_to_user = None if tweet.has_key("in_reply_to_status_id") and tweet["in_reply_to_status_id"]: in_reply_to_id = tweet["in_reply_to_status_id"] in_reply_to_user = tweet["in_reply_to_screen_name"] fav = False if tweet.has_key("favorited"): fav = tweet["favorited"] return { "username": username, "avatar": avatar, "client": client, "datetime": datetime, "text": tweet["text"], "id": tweet["id"], "in_reply_to_id": in_reply_to_id, "in_reply_to_user": in_reply_to_user, "fav": fav, "retweet_by": retweet_by, }
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
def _notify_new_tweets(self, column, tweets, last, count): if count <= 0: return tweet = None for twt in tweets.items: if twt.username != self.me: if not util.has_tweet(last, twt): tweet = twt break if not tweet: return if count == 1: tobject = column.single_unit else: tobject = column.plural_unit p = self.parse_tweet(tweet) icon = self.current_avatar_path(p.avatar) twt = util.unescape_text(p.text) text = "<b>@%s</b> %s" % (p.username, twt) self.notify.new_tweets(column.title, count, tobject, text, icon) self.indicator.add_update(column.title, count) if self.read_config_value('Notifications', 'sound') == 'on': if column.id == 'replies': self.sound.replies() elif column.id == 'directs': self.sound.directs() else: self.sound.tweets() if not self.get_property('is-active'): self.tray.set_from_pixbuf(self.load_image('turpial-tray-update.png', True))
def parse_tweet(self, xtweet): '''Decompose tweet in basic parts''' xtweet.text = util.unescape_text(xtweet.text) xtweet.source = util.detect_client(xtweet) return xtweet