]> git.phdru.name Git - bookmarks_db.git/commitdiff
Retrieve and store icon.
authorOleg Broytman <phd@phdru.name>
Wed, 10 Oct 2007 14:08:07 +0000 (14:08 +0000)
committerOleg Broytman <phd@phdru.name>
Wed, 10 Oct 2007 14:08:07 +0000 (14:08 +0000)
git-svn-id: file:///home/phd/archive/SVN/bookmarks_db/trunk@77 fdd5c36f-1aea-0310-aeeb-c58d7e2b6c23

Robots/bkmk_rforking.py
Robots/bkmk_rsimple.py
doc/TODO

index 9e2d5d8408d212b9e7094567437823cb437d39e3..1fb18a0adb4a884a8a8d2b841df6baabcbdc7075 100644 (file)
@@ -1,7 +1,7 @@
 """
    Forking robot
 
 """
    Forking robot
 
-   Written by BroytMann, Mar 2000 - Jun 2002. Copyright (C) 2000-2002 PhiloSoft Design
+   Written by BroytMann. Copyright (C) 2000-2007 PhiloSoft Design
 """
 
 
 """
 
 
@@ -51,7 +51,7 @@ class robot_forking(Robot):
             new_b = pickle.loads(subp_pipe.read_record())
             for attr in ("error", "no_error",
                   "moved", "size", "md5", "real_title",
             new_b = pickle.loads(subp_pipe.read_record())
             for attr in ("error", "no_error",
                   "moved", "size", "md5", "real_title",
-                  "last_tested", "last_modified", "test_time"):
+                  "last_tested", "last_modified", "test_time", "icon"):
                if hasattr(new_b, attr):
                   setattr(bookmark, attr, getattr(new_b, attr))
          else:
                if hasattr(new_b, attr):
                   setattr(bookmark, attr, getattr(new_b, attr))
          else:
index c34a12728d136307da774e5a6ac086622bf51515..af549f63969001f87e725b90df87811552512491 100644 (file)
@@ -5,8 +5,9 @@
 """
 
 
 """
 
 
-import string, os
+import sys, os, string
 import time, urllib
 import time, urllib
+from base64 import b64encode
 from urlparse import urljoin
 from m_lib.net.www.util import parse_time
 from m_lib.md5wrapper import md5wrapper
 from urlparse import urljoin
 from m_lib.net.www.util import parse_time
 from m_lib.md5wrapper import md5wrapper
@@ -158,11 +159,29 @@ class robot_simple(Robot):
                            raise RedirectException("html", "Bad redirect to %s (%s)" % (url, refresh))
                         else:
                            raise RedirectException("html", "%s (%d sec)" % (url, timeout))
                            raise RedirectException("html", "Bad redirect to %s (%s)" % (url, refresh))
                         else:
                            raise RedirectException("html", "%s (%d sec)" % (url, timeout))
+
+                     # Get favicon.ico
                      icon = parser.icon
                      if not icon:
                         icon = "/favicon.ico"
                      icon = urljoin("%s://%s" % (url_type, url_host), icon)
                      if self.log: self.log("   icon           : %s" % icon)
                      icon = parser.icon
                      if not icon:
                         icon = "/favicon.ico"
                      icon = urljoin("%s://%s" % (url_type, url_host), icon)
                      if self.log: self.log("   icon           : %s" % icon)
+                     try:
+                        fname, headers = urllib.urlretrieve(icon)
+                     except:
+                        etype, emsg, tb = sys.exc_info()
+                        if self.log: self.log("   no icon        : %s %s" % (etype, emsg))
+                        etype = None
+                        emsg = None
+                        tb = None
+                     else:
+                        icon_file = open(fname, "rb")
+                        icon = icon_file.read()
+                        icon_file.close()
+                        os.remove(fname)
+                        content_type = headers["Content-Type"]
+                        bookmark.icon = "data:%s;base64,%s" % (content_type, b64encode(icon))
+
                except KeyError:
                   pass
 
                except KeyError:
                   pass
 
index f8889bf500e65491544389d0a3f4c30d618ce5ef..f7210018a32f5433f1b7fc3c846b800a095bc530 100644 (file)
--- a/doc/TODO
+++ b/doc/TODO
@@ -1,5 +1,3 @@
-Get and store icon.
-
 Cleanup HTML before parsing using BeautifulSoap or Tidy.
 Parse (or interpret) downloaded file and get javascript redirects.
 
 Cleanup HTML before parsing using BeautifulSoap or Tidy.
 Parse (or interpret) downloaded file and get javascript redirects.