예제 #1
0
 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
예제 #2
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 = 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
예제 #3
0
 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
예제 #4
0
파일: menu.py 프로젝트: Android9001/Turpial
 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)
예제 #5
0
파일: menu.py 프로젝트: ElberMendax/Turpial
 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
예제 #6
0
 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
예제 #7
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
예제 #8
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
예제 #9
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
예제 #10
0
    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