1 import os, hashlib, urllib.request, time
5 def __init__(self, dir):
10 n.update(url.encode("ascii"))
14 with urllib.request.urlopen(url) as s:
15 if s.headers.get("content-encoding") == "gzip":
17 return gzip.GzipFile(fileobj=io.BytesIO(s.read()), mode="r").read()
20 def fetch(self, url, expire=3600):
21 path = pj(self.dir, self.mangle(url))
22 if os.path.exists(path):
23 if time.time() - os.stat(path).st_mtime < expire:
24 with open(path, "rb") as f:
27 if not os.path.isdir(self.dir):
29 with open(path, "wb") as f:
33 home = os.getenv("HOME")
34 if home is None or not os.path.isdir(home):
35 raise Exception("Could not find home directory for HTTP caching")
36 default = cache(pj(home, ".manga", "htcache"))
38 def fetch(url, expire=3600):
39 return default.fetch(url, expire)