X-Git-Url: http://dolda2000.com/gitweb/?a=blobdiff_plain;f=manga%2Flib.py;h=849e632ffb6afd7c6f26d229f861dd9b9580145d;hb=e4aeea7390c65e0f0328690b3ea75737f0ccc6af;hp=70b3ff94806f68b51e9014aeece7e3c6d82cafa1;hpb=b9e558ac507f4e6c11c8c9837b5bf22b5da90fce;p=automanga.git diff --git a/manga/lib.py b/manga/lib.py index 70b3ff9..849e632 100644 --- a/manga/lib.py +++ b/manga/lib.py @@ -149,7 +149,7 @@ class imgstream(object): """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() @@ -158,9 +158,13 @@ class stdimgstream(imgstream): """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: @@ -178,7 +182,7 @@ class stdimgstream(imgstream): 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: @@ -213,12 +217,20 @@ class cursor(object): 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()