]> git.phdru.name Git - bookmarks_db.git/commitdiff
Get favicon even if it's of a wrong type.
authorOleg Broytman <phd@phdru.name>
Mon, 3 Jan 2011 00:07:46 +0000 (00:07 +0000)
committerOleg Broytman <phd@phdru.name>
Mon, 3 Jan 2011 00:07:46 +0000 (00:07 +0000)
git-svn-id: file:///home/phd/archive/SVN/bookmarks_db/trunk@304 fdd5c36f-1aea-0310-aeeb-c58d7e2b6c23

Robots/bkmk_rsimple.py
doc/ANNOUNCE

index 41fa2b33a607fe1db2e1a322520d47abd2cb6d46..c2733a184ce5f6352e3b201e751b65404bf32b49 100644 (file)
@@ -206,19 +206,23 @@ class robot_simple(Robot):
                      except:
                         etype, emsg, tb = sys.exc_info()
                         self.log("   no icon        : %s %s" % (etype, emsg))
-                        etype = None
-                        emsg = None
-                        tb = None
+                        etype = emsg = tb = None
                         icons[icon] = None
                      else:
                         content_type = headers["Content-Type"]
-                        if content_type.startswith("image/"):
+                        if content_type.startswith("application/") \
+                              or content_type.startswith("image/") \
+                              or content_type.startswith("text/plain"):
                            icon_file = open(icon_fname, "rb")
                            icon_data = icon_file.read()
                            icon_file.close()
                            bookmark.icon_href = icon
-                           bookmark.icon = "data:%s;base64,%s" % (content_type, b64encode(icon_data))
                            self.log("   got icon       : %s" % content_type)
+                           if content_type.startswith("application/") \
+                                 or content_type.startswith("text/plain"):
+                              self.log("   got non-image icon, assume x-icon")
+                              content_type = 'image/x-icon'
+                           bookmark.icon = "data:%s;base64,%s" % (content_type, b64encode(icon_data))
                            icons[icon] = (content_type, bookmark.icon)
                         else:
                            self.log("   no icon        : bad content type '%s'" % content_type)
index 15efd76fbe2a40a7a81b995b3333d0af36654c3f..968d81e78c1a87038f4c038f809b92d463a9a074 100644 (file)
@@ -9,6 +9,10 @@ WHAT'S NEW in version 4.3.1 (2011-??-??).
 
 Get favicon before HTML redirect (refresh).
 
+Get favicon even if it's of a wrong type; many sites return favicon as
+text/plain or application/*; the only exception is text/html which is usually
+an error page instead of error 404.
+
 
 WHAT'S NEW in version 4.3.0 (2011-01-01).