]> git.phdru.name Git - bookmarks_db.git/commitdiff
Robots no longer have one global temporary file - there are at least two
authorOleg Broytman <phd@phdru.name>
Thu, 7 Oct 2010 18:10:46 +0000 (18:10 +0000)
committerOleg Broytman <phd@phdru.name>
Thu, 7 Oct 2010 18:10:46 +0000 (18:10 +0000)
(html and favicon), and in the future there will be more for
asynchronous robot(s) that would test many URLs in parallel.

git-svn-id: file:///home/phd/archive/SVN/bookmarks_db/trunk@290 fdd5c36f-1aea-0310-aeeb-c58d7e2b6c23

Robots/bkmk_rforking.py
Robots/bkmk_rforking_sub.py
Robots/bkmk_rsimple.py
bkmk-add.py
bkmk_objects.py
check_url.py
check_urls.py
doc/ANNOUNCE

index f0e9354a0df4628fad5ef0093c08c652c43697ed..594359f9f3e8da5e42e2f3d576a3d93d0e0e266a 100644 (file)
@@ -47,8 +47,6 @@ class robot_forking(Robot):
       try:
          save_parent = bookmark.parent
          bookmark.parent = None
-
-         bookmark.tempfname = self.tempfname
          subp_pipe.write_record(pickle.dumps(bookmark))
 
          if check_subp.waitForPendingChar(60): # wait a minute
index 6fccf407b25da67cebcc818ee8fd6afaaedadc08..63464fccff91414dee6f01303516204852491e2f 100755 (executable)
@@ -2,7 +2,7 @@
 """
    Check URL - subprocess for the forking robot
 
-   Written by Broytman. Copyright (C) 1999-2007 PhiloSoft Design.
+   Written by Broytman. Copyright (C) 1999-2010 PhiloSoft Design.
 """
 
 
@@ -28,7 +28,7 @@ def run():
    from m_lib.flog import openlog
    log = openlog("check2.log")
    from bkmk_rsimple import robot_simple
-   robot = robot_simple(None, log)
+   robot = robot_simple(log)
 
    while 1:
       bookmark = pickle.loads(bkmk_in.read_record())
index e01c7fece23cd612362ef862af0d486a580bfcdc..69636d9ef09044905962a3930fc8789e32b45ebc 100644 (file)
@@ -105,9 +105,6 @@ icons = {} # Icon cache; maps URL to a tuple (content type, data)
 
 class robot_simple(Robot):
    def check_url(self, bookmark):
-      if not self.tempfname:
-         self.tempfname = bookmark.tempfname
-
       try:
          self.start = int(time.time())
          bookmark.icon = None
@@ -120,7 +117,7 @@ class robot_simple(Robot):
          urllib._urlopener.addheaders[2] = ('Referer', "%s://%s%s" % (url_type, url_host, url_path))
 
          if bookmark.charset: urllib._urlopener.addheader('Accept-Charset', bookmark.charset)
-         fname, headers = urllib.urlretrieve("%s://%s%s" % (url_type, url_host, url_path), self.tempfname)
+         fname, headers = urllib.urlretrieve("%s://%s%s" % (url_type, url_host, url_path))
          if bookmark.charset: del urllib._urlopener.addheaders[-1]
 
          size = 0
@@ -152,7 +149,7 @@ class robot_simple(Robot):
          if urllib._urlopener.type == "ftp": # Pass welcome message through MD5
             md5.update(get_welcome())
 
-         md5.md5file(self.tempfname)
+         md5.md5file(fname)
          bookmark.md5 = str(md5)
 
          if headers:
@@ -215,7 +212,7 @@ class robot_simple(Robot):
                         _icon = icon
                         for i in range(8):
                            try:
-                              fname, headers = urllib.urlretrieve(_icon)
+                              icon_fname, headers = urllib.urlretrieve(_icon)
                            except RedirectException, e:
                               _icon = e.url
                               self.log("       redirect to : %s" % _icon)
@@ -233,7 +230,7 @@ class robot_simple(Robot):
                      else:
                         content_type = headers["Content-Type"]
                         if content_type.startswith("image/"):
-                           icon_file = open(fname, "rb")
+                           icon_file = open(icon_fname, "rb")
                            icon_data = icon_file.read()
                            icon_file.close()
                            bookmark.icon_href = icon
@@ -243,7 +240,7 @@ class robot_simple(Robot):
                         else:
                            self.log("   no icon        : bad content type '%s'" % content_type)
                            icons[icon] = None
-                        os.remove(fname)
+                        os.remove(icon_fname)
 
             except KeyError, key:
                self.log("   no header: %s" % key)
@@ -275,16 +272,16 @@ class robot_simple(Robot):
          self.log('   Exception: %s' % bookmark.error)
 
       finally:
-         self.finish_check_url(bookmark)
+         self.finish_check_url(bookmark, fname)
 
       # Tested
       return 1
 
 
-   def finish_check_url(self, bookmark):
+   def finish_check_url(self, bookmark, fname=None):
       # Calculate these attributes even in case of an error
-      if os.path.exists(self.tempfname):
-         size = str(os.path.getsize(self.tempfname))
+      if fname and os.path.exists(fname):
+         size = str(os.path.getsize(fname))
          if size[-1] == 'L':
             size = size[:-1]
          bookmark.size = size
index 46efe3e870ec0c33a395a73067a69b96478c96ea..7e7b415b469ddef45775fdcf0fb0f0a011b1ae5f 100755 (executable)
@@ -10,9 +10,6 @@ import sys, os, time
 from bkmk_objects import Bookmark
 from Robots.bkmk_rsimple import robot_simple
 
-import tempfile
-tempfname = "bkmk-add" + tempfile.gettempprefix() + "tmp"
-
 
 def run():
    from getopt import getopt
@@ -53,7 +50,7 @@ def run():
    bookmark = Bookmark(href, str(now), '0', '0')
    bookmark.name = ''
 
-   robot = robot_simple(tempfname, None)
+   robot = robot_simple(None)
 
    if robot.check_url(bookmark): # get real title and last modified date
       if title: # forced title
@@ -74,11 +71,5 @@ def run():
          print "Ok"
 
 
-   try:
-      os.unlink(tempfname)
-   except os.error:
-      pass
-
-
 if __name__ == '__main__':
    run()
index a9567e22134fd70b9adcefe788c2b2bb3a45746f..17d05095c7d619a2ba7c3d741636fe22591dd9e8 100644 (file)
@@ -99,8 +99,7 @@ class Writer(Walker):
 
 
 class Robot:
-   def __init__(self, tempfname, log):
-      self.tempfname = tempfname
+   def __init__(self, log):
       self.log = log
 
    def stop(self):
index 123f6a92182b89c9d66f7647024cef72d52a5f34..b0a6869a5e5d601b5a2f34728fde97fcff58da1b 100755 (executable)
@@ -20,7 +20,6 @@ httplib.HTTP = MyHTTP
 
 from bkmk_objects import Bookmark
 from Writers.bkmk_wflad import strftime
-tempfname = "check_url.tmp"
 
 
 def run():
@@ -34,7 +33,7 @@ def run():
    log = makelog("check.log")
 
    from robots import robot
-   robot = robot(tempfname, log)
+   robot = robot(log)
 
    for url in sys.argv[1:]:
        bookmark = Bookmark(href=url, add_date=None)
index c3e81b876cd7c811d7a807101fe3d51aa85d0f15..f75cb16cc20f47ae769ee6775763e27a1293e9a9 100755 (executable)
@@ -7,7 +7,6 @@
 
 
 import sys, os
-tempfname = "check_urls.tmp"
 
 
 def run():
@@ -63,7 +62,7 @@ def run():
    storage = storage()
 
    from robots import robot
-   robot = robot(tempfname, log)
+   robot = robot(log)
 
    if report_stats:
       sys.stdout.write("Loading %s: " % storage.filename)
@@ -153,11 +152,6 @@ def run():
       log("check_urls finished ok")
    log.close()
 
-   try:
-      os.unlink(tempfname)
-   except os.error:
-      pass
-
 
 if __name__ == '__main__':
    run()
index 132ccbc6fe145f3e8f807e38d5974ca00688eddd..79eec54086c2e03037aee37d70d88ec2ab3dfea7 100644 (file)
@@ -5,18 +5,11 @@ WHAT IS IT
    A set of classes, libraries, programs and plugins I use to manipulate my
 bookmarks.html.
 
-WHAT'S NEW in version 4.2.2.
+WHAT'S NEW in version 4.3.0 (2010-??).
 
-    Added HTML Parser based on lxml.
-
-WHAT'S NEW in version 4.2.1 (2010-08-12).
-
-   Added HTML Parser based on html5 library.
-
-WHAT'S NEW in version 4.2.0 (2010-08-11).
-
-   New storage: json; it allows to load and store Mozilla (Firefox) backup
-files.
+Robots no longer have one global temporary file - there are at least two
+(html and favicon), and in the future there will be more for
+asynchronous robot(s) that would test many URLs in parallel.
 
 
 WHERE TO GET