From 475c9ac64168438e89200261637cde4f97e10875 Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Sun, 18 Oct 2015 17:09:40 +0200 Subject: New plugin: Http --- module/plugins/hoster/Http.py | 93 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100644 module/plugins/hoster/Http.py (limited to 'module') diff --git a/module/plugins/hoster/Http.py b/module/plugins/hoster/Http.py new file mode 100644 index 000000000..d2ff2d2b9 --- /dev/null +++ b/module/plugins/hoster/Http.py @@ -0,0 +1,93 @@ +# -*- coding: utf-8 -*- + +import re +import urlparse + +from module.network.HTTPRequest import BadHeader +from module.plugins.internal.SimpleHoster import create_getInfo +from module.plugins.internal.Hoster import Hoster + + +class Http(Hoster): + __name__ = "Http" + __type__ = "hoster" + __version__ = "0.01" + __status__ = "testing" + + __pattern__ = r'(?:jd|pys?)://.+' + __config__ = [("activated", "bool", "Activated", True)] + + __description__ = """Download from http link""" + __license__ = "GPLv3" + __authors__ = [("RaNaN", "RaNaN@pyload.org"), + ("Walter Purcaro", "vuolter@gmail.com")] + + + def setup(self): + self.chunk_limit = -1 + self.resume_download = True + + + def process(self, pyfile): + url = re.sub(r'^(jd|py)', "http", pyfile.url) + netloc = urlparse.urlparse(url).netloc + + link = self.is_download(url) + + if not link: + return + + for _i in xrange(2): + try: + self.download(link, ref=False, disposition=True) + + except BadHeader, e: + if e.code in (404, 410): + self.offline() + + elif e.code in (401, 403): + self.log_debug("Auth required", "Received HTTP status code: %d" % e.code) + + #@TODO: Recheck in 0.4.10 + if self.account: + servers = [x['login'] for x in self.account.getAllAccounts()] + else: + servers = [] + + if netloc in servers: + self.log_debug("Logging on to %s" % netloc) + self.req.addAuth(self.account.get_login('password')) + + else: + pwd = self.get_password() + if ':' in pwd: + self.req.addAuth(pwd) + else: + self.fail(_("Authorization required")) + else: + self.fail(e) + + else: + break + + self.check_download() + + + def check_download(self): + errmsg = self.check_file({'Html error' : re.compile(r'\A(?:\s*<.+>)?((?:[\w\s]*(?:[Ee]rror|ERROR)\s*\:?)?\s*\d{3})(?:\Z|\s+)'), + 'Html file' : re.compile(r'\A\s*