"""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()
have no particular implementation requirements."""
def __init__(self, url):
- import urllib
- self.bk = urllib.urlopen(url)
+ import urllib.request
+ req = urllib.request.Request(url, headers={"User-Agent": "automanga/1"})
+ 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()