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()
if self.cvol is None:
page = soup(htcache.fetch(self.url))
vls = page.find("div", id="chapters").findAll("div", attrs={"class": "slide"})
- self.cvol = []
+ cvol = []
for i, vn in enumerate(reversed(vls)):
name = vn.find("h3", attrs={"class": "volume"}).contents[0].strip()
vid = name.encode("utf8")
if url[-7:] != "/1.html":
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]))
- self.cvol.append(vol)
+ cvol.append(vol)
+ self.cvol = cvol
return self.cvol
def __str__(self):