+class stdimgstream(imgstream):
+ """A standard implementation of imgstream, for libraries which
+ have no particular implementation requirements."""
+
+ def __init__(self, url, referer=None):
+ import urllib.request
+ headers = {"User-Agent": "automanga/1"}
+ if referer:
+ headers["Referer"] = referer
+ req = urllib.request.Request(url, headers=headers)
+ self.bk = urllib.request.urlopen(req)
+ 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()
+
+ def close(self):
+ self.bk.close()
+
+ def read(self, sz=None):
+ if sz is None:
+ return self.bk.read()
+ else:
+ return self.bk.read(sz)
+