X-Git-Url: http://git.dolda2000.com/gitweb/?a=blobdiff_plain;f=manga%2Fhtcache.py;h=4212db34e3df39e30ddb1604e8e7ef10442645db;hb=d8f4dc3095b2cb8d55dd594ae433f15985197542;hp=68546200abfc47a368aff2f8f34dae56bc264264;hpb=f3ad0817587482b5a726db4c2f82072e191355e1;p=automanga.git diff --git a/manga/htcache.py b/manga/htcache.py index 6854620..4212db3 100644 --- a/manga/htcache.py +++ b/manga/htcache.py @@ -10,17 +10,23 @@ class cache(object): n.update(url) return n.hexdigest() + def miss(self, url): + s = urllib.urlopen(url) + try: + if s.headers.get("content-encoding") == "gzip": + import gzip, StringIO + return gzip.GzipFile(fileobj=StringIO.StringIO(s.read()), mode="r").read() + return s.read() + finally: + s.close() + def fetch(self, url, expire = 3600): path = pj(self.dir, self.mangle(url)) if os.path.exists(path): if time.time() - os.stat(path).st_mtime < expire: with open(path) as f: return f.read() - s = urllib.urlopen(url) - try: - data = s.read() - finally: - s.close() + data = self.miss(url) if not os.path.isdir(self.dir): os.makedirs(self.dir) with open(path, "w") as f: