"""Close this stream."""
raise NotImplementedError()
- def read(self, sz = None):
+ def read(self, sz=None):
"""Read SZ bytes from the stream, or the entire rest of the
stream of SZ is not given."""
raise NotImplementedError()
"""A standard implementation of imgstream, for libraries which
have no particular implementation requirements."""
- def __init__(self, url):
- import urllib
- self.bk = urllib.urlopen(url)
+ 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:
def close(self):
self.bk.close()
- def read(self, sz = None):
+ def read(self, sz=None):
if sz is None:
return self.bk.read()
else:
raise StopIteration()
def __iter__(self):
- return self
+ def iterator():
+ yield self.cur
+ while True:
+ try:
+ yield self.next()
+ except StopIteration:
+ break
+ return iterator()
loaded = {}
def findlib(name):
def load(name):
- mod = __import__(name, fromlist=["dummy"])
+ import importlib
+ mod = importlib.import_module(name)
if not hasattr(mod, "library"):
raise ImportError("module " + name + " is not a manga library")
return mod.library()