X-Git-Url: http://dolda2000.com/gitweb/?a=blobdiff_plain;f=manga%2Fmangafox.py;h=c95a77be7c33219c7a1d9281252159a4280c02a9;hb=299d3f50467a6e719819ca95e7f5416a16b535fc;hp=ed40efb1636a3f3bd1cd07a13415b55803011831;hpb=75732d5a659e0faa04b7bb0dee367387438c05ba;p=automanga.git diff --git a/manga/mangafox.py b/manga/mangafox.py index ed40efb..c95a77b 100644 --- a/manga/mangafox.py +++ b/manga/mangafox.py @@ -1,4 +1,4 @@ -import urllib +import urllib, re import BeautifulSoup import lib, htcache soup = BeautifulSoup.BeautifulSoup @@ -6,8 +6,16 @@ soup = BeautifulSoup.BeautifulSoup class imgstream(lib.imgstream): def __init__(self, url): self.bk = urllib.urlopen(url) - self.ctype = self.bk.info()["Content-Type"] - self.clen = int(self.bk.info()["Content-Length"]) + ok = False + try: + if self.bk.getcode() != 200: + raise IOError("Server error: " + str(self.bk.getcode())) + self.ctype = self.bk.info()["Content-Type"] + self.clen = int(self.bk.info()["Content-Length"]) + ok = True + finally: + if not ok: + self.bk.close() def fileno(self): return self.bk.fileno() @@ -109,6 +117,8 @@ def nextel(el): return el class manga(lib.manga): + cure = re.compile(r"/v\d+/c[\d.]+/$") + def __init__(self, lib, id, name, url): self.lib = lib self.id = id @@ -146,9 +156,13 @@ class manga(lib.manga): except KeyError: pass url = n.a["href"].encode("us-ascii") - if url[-7:] != "/1.html": + if url[-7:] == "/1.html": + url = url[:-6] + elif self.cure.search(url) is not None: + pass + else: raise Exception("parse error: unexpected chapter URL for %r: %s" % (self, url)) - vol.ch.append(chapter(vol, vol.stack + [(vol, o)], chid, name, url[:-6])) + vol.ch.append(chapter(vol, vol.stack + [(vol, o)], chid, name, url)) cvol.append(vol) self.cvol = cvol return self.cvol