Exemple #1
0
 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}
Exemple #2
0
 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
Exemple #3
0
    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
Exemple #4
0
    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
        }
Exemple #5
0
    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,
        }
Exemple #6
0
 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
Exemple #7
0
 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))
Exemple #8
0
 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
Exemple #9
0
 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