From b9e558ac507f4e6c11c8c9837b5bf22b5da90fce Mon Sep 17 00:00:00 2001 From: Fredrik Tolf Date: Wed, 4 Dec 2013 01:05:30 +0100 Subject: [PATCH] Extracted the standard imgstream from mrnet and mangafox and put it in lib. --- manga/lib.py | 30 ++++++++++++++++++++++++++++++ manga/mangafox.py | 28 +--------------------------- manga/mrnet.py | 29 +---------------------------- 3 files changed, 32 insertions(+), 55 deletions(-) diff --git a/manga/lib.py b/manga/lib.py index 353d7ad..70b3ff9 100644 --- a/manga/lib.py +++ b/manga/lib.py @@ -154,6 +154,36 @@ class imgstream(object): stream of SZ is not given.""" raise NotImplementedError() +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) + 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) + class cursor(object): def __init__(self, ob): if isinstance(ob, cursor): diff --git a/manga/mangafox.py b/manga/mangafox.py index c254a9d..9831a81 100644 --- a/manga/mangafox.py +++ b/manga/mangafox.py @@ -3,32 +3,6 @@ import BeautifulSoup, json import lib, htcache soup = BeautifulSoup.BeautifulSoup -class imgstream(lib.imgstream): - def __init__(self, url): - self.bk = urllib.urlopen(url) - 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) - class page(lib.page): def __init__(self, chapter, stack, n, url): self.stack = stack @@ -48,7 +22,7 @@ class page(lib.page): return self.ciurl def open(self): - return imgstream(self.iurl()) + return lib.stdimgstream(self.iurl()) def __str__(self): return self.name diff --git a/manga/mrnet.py b/manga/mrnet.py index 48338a3..1439f09 100644 --- a/manga/mrnet.py +++ b/manga/mrnet.py @@ -1,34 +1,7 @@ -import urllib import BeautifulSoup, urlparse import lib, htcache soup = BeautifulSoup.BeautifulSoup -class imgstream(lib.imgstream): - def __init__(self, url): - self.bk = urllib.urlopen(url) - 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) - class page(lib.page): def __init__(self, chapter, stack, n, url): self.stack = stack @@ -47,7 +20,7 @@ class page(lib.page): return self.ciurl def open(self): - return imgstream(self.iurl()) + return lib.stdimgstream(self.iurl()) def __str__(self): return self.name -- 2.11.0