]> git.phdru.name Git - bookmarks_db.git/blobdiff - Robots/bkmk_rsimple.py
Fixed a bug in case there are more than one Content-Type headers.
[bookmarks_db.git] / Robots / bkmk_rsimple.py
index afeeb254e2b519a33e145612e1b57de3116ec649..42975d29a729d26ad4838cd64791acef0ca34d9a 100644 (file)
@@ -1,7 +1,7 @@
 """
    Simple, strightforward robot
 
-   Written by Oleg Broytman. Copyright (C) 2000-2008 PhiloSoft Design.
+   Written by Oleg Broytman. Copyright (C) 2000-2010 PhiloSoft Design.
 """
 
 import sys, os
@@ -158,6 +158,7 @@ class robot_simple(Robot):
          if headers:
             try:
                content_type = headers["Content-Type"]
+               self.log("   Content-Type: %s" % content_type)
                try:
                   # extract charset from "text/html; foo; charset=UTF-8, bar; baz;"
                   content_type, charset = content_type.split(';', 1)
@@ -167,7 +168,13 @@ class robot_simple(Robot):
                except (ValueError, IndexError):
                   charset = None
                   self.log("   no charset in Content-Type header")
-               if content_type in ("text/html", "application/xhtml+xml"):
+               for ctype in ("text/html", "application/xhtml+xml"):
+                  if content_type.startswith(ctype):
+                      html = True
+                      break
+               else:
+                  html = False
+               if html:
                   parser = parse_html(fname, charset, self.log)
                   bookmark.real_title = parser.title
                   if parser.refresh:
@@ -233,28 +240,34 @@ class robot_simple(Robot):
                            icons[icon] = None
                         os.remove(fname)
 
-            except KeyError:
-               pass
+            except KeyError, key:
+               self.log("   no header: %s" % key)
 
       except IOError, msg:
          if (msg[0] == "http error") and (msg[1] == -1):
             bookmark.no_error = "The server did not return any header - it is not an error, actually"
+            self.log(bookmark.no_error)
          else:
             bookmark.error = get_error(msg)
+            self.log(bookmark.error)
 
       except EOFError:
          bookmark.error = "Unexpected EOF (FTP server closed connection)"
+         self.log(bookmark.error)
 
       except RedirectException, msg:
          bookmark.moved = str(msg)
+         self.log(bookmark.moved)
 
       except KeyboardInterrupt:
+         self.log("Keyboard interrupt (^C)")
          return 0
 
       except:
          import traceback
          traceback.print_exc()
          bookmark.error = "Exception!"
+         self.log(bookmark.error)
 
       finally:
          self.finish_check_url(bookmark)