]> git.phdru.name Git - bookmarks_db.git/blobdiff - Robots/bkmk_rsimple.py
More logging.
[bookmarks_db.git] / Robots / bkmk_rsimple.py
index 0dee51e8837ae3db9922704d78bd3e08b7325df7..228899629fb507e94a7877da50ca698c078bc666 100644 (file)
@@ -1,7 +1,7 @@
 """
    Simple, strightforward robot
 
-   Written by Oleg BroytMann. Copyright (C) 2000-2007 PhiloSoft Design.
+   Written by Oleg Broytman. Copyright (C) 2000-2010 PhiloSoft Design.
 """
 
 import sys, os
@@ -40,6 +40,8 @@ class MyURLopener(urllib.URLopener):
 
    # Error 301 -- also relocated (permanently)
    http_error_301 = http_error_302
+   # Error 307 -- also relocated (temporary)
+   http_error_307 = http_error_302
 
    # Error 401 -- authentication required
    def http_error_401(self, url, fp, errcode, errmsg, headers, data=None): 
@@ -157,9 +159,10 @@ class robot_simple(Robot):
             try:
                content_type = headers["Content-Type"]
                try:
+                  # extract charset from "text/html; foo; charset=UTF-8, bar; baz;"
                   content_type, charset = content_type.split(';', 1)
                   content_type = content_type.strip()
-                  charset = charset.split('=')[1].strip()
+                  charset = charset.split('=')[1].strip().split(',')[0]
                   self.log("   HTTP charset   : %s" % charset)
                except (ValueError, IndexError):
                   charset = None
@@ -236,22 +239,28 @@ class robot_simple(Robot):
       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)