import os, hashlib, urllib.request, time
+from . import profile
pj = os.path.join
+class notfound(Exception):
+ pass
+
class cache(object):
def __init__(self, dir):
self.dir = dir
n.update(url.encode("ascii"))
return n.hexdigest()
+ def open(self, url):
+ req = urllib.request.Request(url, headers={"User-Agent": "automanga/1"})
+ return urllib.request.urlopen(req)
+
def miss(self, url):
- with urllib.request.urlopen(url) as s:
+ try:
+ s = self.open(url)
+ except urllib.error.HTTPError as exc:
+ if exc.code == 404:
+ raise notfound(url)
+ raise
+ with s:
if s.headers.get("content-encoding") == "gzip":
import gzip, io
return gzip.GzipFile(fileobj=io.BytesIO(s.read()), mode="r").read()
f.write(data)
return data
-home = os.getenv("HOME")
-if home is None or not os.path.isdir(home):
- raise Exception("Could not find home directory for HTTP caching")
-default = cache(pj(home, ".manga", "htcache"))
+default = cache(pj(profile.confdir, "htcache"))
def fetch(url, expire=3600):
return default.fetch(url, expire)