diff options
Diffstat (limited to 'module/plugins/internal/Base.py')
-rw-r--r-- | module/plugins/internal/Base.py | 44 |
1 files changed, 28 insertions, 16 deletions
diff --git a/module/plugins/internal/Base.py b/module/plugins/internal/Base.py index 423e53695..e3aaf202b 100644 --- a/module/plugins/internal/Base.py +++ b/module/plugins/internal/Base.py @@ -1,9 +1,9 @@ # -*- coding: utf-8 -*- -import re import inspect import mimetypes import os +import re import time import urlparse @@ -47,7 +47,7 @@ def check_abort(fn): class Base(Plugin): __name__ = "Base" __type__ = "base" - __version__ = "0.09" + __version__ = "0.11" __status__ = "testing" __pattern__ = r'^unmatchable$' @@ -64,6 +64,9 @@ class Base(Plugin): def __init__(self, pyfile): self._init(pyfile.m.core) + #: + self.premium = None + #: Engage wan reconnection self.wantReconnect = False #@TODO: Change to `want_reconnect` in 0.4.10 @@ -95,6 +98,9 @@ class Base(Plugin): #: Dict of the amount of retries already made self.retries = {} + self.init_base() + self.init() + def _log(self, level, plugintype, pluginname, messages): log = getattr(self.pyload.log, level) @@ -124,6 +130,10 @@ class Base(Plugin): return info + def init_base(self): + pass + + def init(self): """ Initialize the plugin (in addition to `__init__`) @@ -131,6 +141,10 @@ class Base(Plugin): pass + def setup_base(self): + pass + + def setup(self): """ Setup for enviroment and other things, called before downloading (possibly more than one time) @@ -156,16 +170,13 @@ class Base(Plugin): pass if self.account: - self.req = self.pyload.requestFactory.getRequest(self.__name__, self.account.user) - self.chunk_limit = -1 #: -1 for unlimited - self.resume_download = True - self.premium = self.account.info['data']['premium'] #: Don't use `self.account.premium` to avoid one unnecessary get_info call + self.req = self.pyload.requestFactory.getRequest(self.__name__, self.account.user) + self.premium = self.account.info['data']['premium'] #@NOTE: Avoid one unnecessary get_info call by `self.account.premium` here else: - self.req = self.pyload.requestFactory.getRequest(self.__name__) - self.chunk_limit = 1 - self.resume_download = False - self.premium = False + self.req = self.pyload.requestFactory.getRequest(self.__name__) + self.premium = False + self.setup_base() self.setup() @@ -306,7 +317,7 @@ class Base(Plugin): if msg: self.pyfile.error = msg else: - msg = self.pyfile.error or (self.info['error'] if 'error' in self.info else self.pyfile.getStatusName()) + msg = self.pyfile.error or self.info.get('error') or self.pyfile.getStatusName() raise Fail(encode(msg)) #@TODO: Remove `encode` in 0.4.10 @@ -464,10 +475,11 @@ class Base(Plugin): value = value.strip() if key in header: - if type(header[key]) is list: - header[key].append(value) + header_key = header.get(key) + if type(header_key) is list: + header_key.append(value) else: - header[key] = [header[key], value] + header[key] = [header_key, value] else: header[key] = value @@ -475,7 +487,7 @@ class Base(Plugin): link = url elif header.get('location'): - location = self.fixurl(header['location'], url) + location = self.fixurl(header.get('location'), url) if header.get('code') == 302: link = location @@ -488,7 +500,7 @@ class Base(Plugin): extension = os.path.splitext(parse_name(url))[-1] if header.get('content-type'): - mimetype = header['content-type'].split(';')[0].strip() + mimetype = header.get('content-type').split(';')[0].strip() elif extension: mimetype = mimetypes.guess_type(extension, False)[0] or "application/octet-stream" |