OSDN Git Service

support media entities
authorHirotaka Kawata <hirotaka@techno-st.net>
Wed, 19 Oct 2011 07:54:59 +0000 (16:54 +0900)
committerHirotaka Kawata <hirotaka@techno-st.net>
Wed, 19 Oct 2011 07:54:59 +0000 (16:54 +0900)
gwit/statusview.py
gwit/twittertools.py

index ee5685d..ae26512 100644 (file)
@@ -194,6 +194,7 @@ class StatusView(gtk.TreeView):
     def menu_setup(self, status):
         # Get Urls
         urls = TwitterTools.get_urls(status)
+        urls.extend(TwitterTools.get_media_urls(status))
         # Get mentioned users
         users = TwitterTools.get_user_mentions(status)
         # Get Hashtags
@@ -209,7 +210,7 @@ class StatusView(gtk.TreeView):
                 # Menuitem create
                 item = gtk.ImageMenuItem(label)
                 item.set_image(gtk.image_new_from_stock(
-                        "gtk-new", gtk.ICON_SIZE_MENU))
+                        "gtk-open", gtk.ICON_SIZE_MENU))
                 item.set_always_show_image(True)
                 # Connect click event (open browser)
                 item.connect("activate", self.on_menuitem_url_clicked, url)
index 514bd9e..59c2236 100644 (file)
@@ -71,7 +71,10 @@ class TwitterTools(object):
             text = cls.reurl.sub(
                 '<span foreground="#0000FF" underline="single">\g<url></span>', text)
         else:
-            for i in status.entities.urls:
+            urls = status.entities.urls
+            if status.entities.get("media", None):
+                urls.extend(status.entities.media)
+            for i in urls:
                 url = i.display_url if i.expanded_url else i.url
                 text = text.replace(
                     i.url,'<span foreground="#0000FF" underline="single">%s</span>' % url)
@@ -95,6 +98,17 @@ class TwitterTools(object):
         else:
             return cls.get_urls_from_text(status.text)
     
+    @classmethod
+    def get_media_urls(cls, status):
+        if cls.isretweet(status):
+            status = status.retweeted_status
+        
+        if status.entities and status.entities.get("media", None):
+            return [(i.url, i.display_url if i.expanded_url else i.url) 
+                    for i in status.entities.media]
+        else:
+            return []
+    
     # User
     @classmethod
     def get_user_mentions(cls, status):