iOptimize savehostscache. - eomyidae - a gopher crawler software Err bitreich.org 70 hgit clone git://bitreich.org/eomyidae URL:git://bitreich.org/eomyidae bitreich.org 70 1Log /scm/eomyidae/log.gph bitreich.org 70 1Files /scm/eomyidae/files.gph bitreich.org 70 1Refs /scm/eomyidae/refs.gph bitreich.org 70 1Tags /scm/eomyidae/tag bitreich.org 70 1README /scm/eomyidae/file/README.md.gph bitreich.org 70 1LICENSE /scm/eomyidae/file/LICENSE.gph bitreich.org 70 i--- Err bitreich.org 70 1commit 29cd7839e600acdd21378256d73b4703f799f04a /scm/eomyidae/commit/29cd7839e600acdd21378256d73b4703f799f04a.gph bitreich.org 70 1parent 0dac4a637d7e25983b563286bb0539d53ddf8d3e /scm/eomyidae/commit/0dac4a637d7e25983b563286bb0539d53ddf8d3e.gph bitreich.org 70 hAuthor: Christoph Lohmann <20h@r-36.net> URL:mailto:20h@r-36.net bitreich.org 70 iDate: Mon, 12 Aug 2019 11:48:12 +0200 Err bitreich.org 70 i Err bitreich.org 70 iOptimize savehostscache. Err bitreich.org 70 i Err bitreich.org 70 iDiffstat: Err bitreich.org 70 i M eomyidae | 49 ++++++++++++++++++++----------- Err bitreich.org 70 i Err bitreich.org 70 i1 file changed, 32 insertions(+), 17 deletions(-) Err bitreich.org 70 i--- Err bitreich.org 70 1diff --git a/eomyidae b/eomyidae /scm/eomyidae/file/eomyidae.gph bitreich.org 70 i@@ -429,6 +429,8 @@ def main(args): Err bitreich.org 70 i starturi = largs[0] Err bitreich.org 70 i Err bitreich.org 70 i knownuris = loadlistdb("knownuris.pickle") Err bitreich.org 70 i+ if knownuris == []: Err bitreich.org 70 i+ knownuris = {} Err bitreich.org 70 i lastlenknownuris = len(knownuris) Err bitreich.org 70 i Err bitreich.org 70 i def isblocked(uri): Err bitreich.org 70 i@@ -449,38 +451,43 @@ def main(args): Err bitreich.org 70 i if hostscount[host] <= 0: Err bitreich.org 70 i del hostscount[host] Err bitreich.org 70 i Err bitreich.org 70 i- def addhostscache(host, uri, port=70): Err bitreich.org 70 i+ def addhostscache(uri, host=None, port=70, selector="/"): Err bitreich.org 70 i+ if uri != None and host == None: Err bitreich.org 70 i+ (host, port, mtype, selector) = parseuri(uri) Err bitreich.org 70 i+ port = int(port) Err bitreich.org 70 i+ else: Err bitreich.org 70 i+ try: Err bitreich.org 70 i+ port = int(port) Err bitreich.org 70 i+ except ValueError: Err bitreich.org 70 i+ return Err bitreich.org 70 i+ Err bitreich.org 70 i if uri in knownuris: Err bitreich.org 70 i- #print("ignored for queue: %s" % (uri)) Err bitreich.org 70 i+ print("ignored for queue: %s" % (uri)) Err bitreich.org 70 i return Err bitreich.org 70 i if host == "": Err bitreich.org 70 i- #print("ignored for queue: %s" % (uri)) Err bitreich.org 70 i+ print("ignored for queue: %s" % (uri)) Err bitreich.org 70 i return Err bitreich.org 70 i if isblocked(uri): Err bitreich.org 70 i print("blocked by filters: %s" % (uri)) Err bitreich.org 70 i return Err bitreich.org 70 i Err bitreich.org 70 i- try: Err bitreich.org 70 i- port = int(port) Err bitreich.org 70 i- except ValueError: Err bitreich.org 70 i- return Err bitreich.org 70 i- Err bitreich.org 70 i addhostscount(host) Err bitreich.org 70 i Err bitreich.org 70 i+ if not host in hostscache: Err bitreich.org 70 i+ hostscache[host] = {} Err bitreich.org 70 i+ if not "queue" in hostscache[host]: Err bitreich.org 70 i+ hostscache[host]["queue"] = {} Err bitreich.org 70 i+ Err bitreich.org 70 i filterrules = cacherobots(cachedir, uri, \ Err bitreich.org 70 i host=host, \ Err bitreich.org 70 i port=port, \ Err bitreich.org 70 i filtercache=robotscache) Err bitreich.org 70 i if selectorisallowed(filterrules, selector) == True: Err bitreich.org 70 i- if not host in hostscache: Err bitreich.org 70 i- hostscache[host] = {} Err bitreich.org 70 i- if not "queue" in hostscache[host]: Err bitreich.org 70 i- hostscache[host]["queue"] = {} Err bitreich.org 70 i hostscache[host]["queue"][uri] = None Err bitreich.org 70 i- #print("pushed to queue: %s" % (uri)) Err bitreich.org 70 i+ print("pushed to queue: %s" % (uri)) Err bitreich.org 70 i else: Err bitreich.org 70 i pass Err bitreich.org 70 i- #print("blocked by robots: %s" % (uri)) Err bitreich.org 70 i+ print("blocked by robots: %s" % (uri)) Err bitreich.org 70 i Err bitreich.org 70 i def getqueuelen(): Err bitreich.org 70 i queuelen = 0 Err bitreich.org 70 i@@ -518,9 +525,13 @@ def main(args): Err bitreich.org 70 i Err bitreich.org 70 i jobs = [] Err bitreich.org 70 i if starturi != None: Err bitreich.org 70 i+ #print("starturi = %s" % (starturi)) Err bitreich.org 70 i if not isblocked(starturi): Err bitreich.org 70 i (starthost, startport, startmtype, startselector) = parseuri(starturi) Err bitreich.org 70 i- addhostscache(hostscache, starthost, starturi) Err bitreich.org 70 i+ addhostscache(starturi, \ Err bitreich.org 70 i+ selector=startselector, \ Err bitreich.org 70 i+ host=starthost, \ Err bitreich.org 70 i+ port=startport) Err bitreich.org 70 i try: Err bitreich.org 70 i jobs.append([starturi, starthost, int(startport), startselector]) Err bitreich.org 70 i except ValueError: Err bitreich.org 70 i@@ -564,7 +575,9 @@ def main(args): Err bitreich.org 70 i if isblocked(jobitem[0]): Err bitreich.org 70 i continue Err bitreich.org 70 i (host, port, mtype, selector) = parseuri(jobitem[0]) Err bitreich.org 70 i- jobs.append([jobitem[0], host, port, selector]) Err bitreich.org 70 i+ job = [jobitem[0], host, port, selector] Err bitreich.org 70 i+ if job not in jobs: Err bitreich.org 70 i+ jobs.append([jobitem[0], host, port, selector]) Err bitreich.org 70 i hostjobs[selhost] -= 1 Err bitreich.org 70 i Err bitreich.org 70 i print("Getting %d jobs." % (len(jobs))) Err bitreich.org 70 i@@ -591,7 +604,9 @@ def main(args): Err bitreich.org 70 i guri = "gopher://%s:%s/%s%s" % \ Err bitreich.org 70 i (mi[3], mi[4], mi[0], mi[2]) Err bitreich.org 70 i Err bitreich.org 70 i- addhostscache(mi[3], guri, port=mi[4]) Err bitreich.org 70 i+ addhostscache(guri, host=mi[3], \ Err bitreich.org 70 i+ port=mi[4], \ Err bitreich.org 70 i+ selector=mi[2]) Err bitreich.org 70 i Err bitreich.org 70 i print("Uri %s done." % (cururi)) Err bitreich.org 70 i knownuris[cururi] = None Err bitreich.org 70 .