summaryrefslogtreecommitdiffstats
path: root/module/plugins/internal/Base.py
diff options
context:
space:
mode:
Diffstat (limited to 'module/plugins/internal/Base.py')
-rw-r--r--module/plugins/internal/Base.py44
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"