summaryrefslogtreecommitdiffstats
path: root/module/plugins/internal
diff options
context:
space:
mode:
Diffstat (limited to 'module/plugins/internal')
-rw-r--r--module/plugins/internal/Hoster.py28
-rw-r--r--module/plugins/internal/MultiCrypter.py2
-rw-r--r--module/plugins/internal/MultiHoster.py14
-rw-r--r--module/plugins/internal/Notifier.py4
-rw-r--r--module/plugins/internal/OCR.py2
-rw-r--r--module/plugins/internal/Plugin.py7
-rw-r--r--module/plugins/internal/SevenZip.py6
-rw-r--r--module/plugins/internal/SimpleHoster.py22
-rw-r--r--module/plugins/internal/UnRar.py6
-rw-r--r--module/plugins/internal/XFSAccount.py5
-rw-r--r--module/plugins/internal/XFSCrypter.py4
-rw-r--r--module/plugins/internal/XFSHoster.py20
12 files changed, 59 insertions, 61 deletions
diff --git a/module/plugins/internal/Hoster.py b/module/plugins/internal/Hoster.py
index fbb675281..bd8daded8 100644
--- a/module/plugins/internal/Hoster.py
+++ b/module/plugins/internal/Hoster.py
@@ -139,14 +139,14 @@ class Hoster(Base):
self.pyload.hookManager.dispatchEvent("download_processed", self.pyfile)
try:
- unfinished = any(fdata['status'] == 3 for fid, fdata in pypack.getChildren().items()
- if fid != self.pyfile.id)
+ unfinished = any(fdata.get('status') == 3 for fid, fdata in pypack.getChildren().items()
+ if fid is not self.pyfile.id)
if unfinished:
return
self.pyload.hookManager.dispatchEvent("package_processed", pypack)
- failed = any(fdata['status'] in (1, 6, 8, 9, 14)
+ failed = any(fdata.get('status') in (1, 6, 8, 9, 14)
for fid, fdata in pypack.getChildren().items())
if not failed:
@@ -171,11 +171,9 @@ class Hoster(Base):
elif redirect:
maxredirs = int(self.pyload.api.getConfigValue("UserAgentSwitcher", "maxredirs", "plugin")) or maxredirs #@TODO: Remove `int` in 0.4.10
- for i in xrange(maxredirs):
- self.log_debug("Redirect #%d to: %s" % (i, url))
-
- header = self.load(url, just_header=True)
+ header = self.load(url, just_header=True)
+ for i in xrange(1, maxredirs):
if not redirect or header.get('connection') == "close":
resumable = False
@@ -190,11 +188,12 @@ class Hoster(Base):
resource = location
elif code == 301 or resumable:
+ self.log_debug("Redirect #%d to: %s" % (i, location))
+ header = self.load(location, just_header=True)
url = location
continue
else:
- mimetype = ""
contenttype = header.get('content-type')
extension = os.path.splitext(parse_name(url))[-1]
@@ -205,6 +204,9 @@ class Hoster(Base):
mimetype = mimetypes.guess_type(extension, False)[0] or \
"application/octet-stream"
+ else:
+ mimetype = None
+
if mimetype and (resource or 'html' not in mimetype):
resource = url
else:
@@ -217,7 +219,7 @@ class Hoster(Base):
file = encode(filename) #@TODO: Safe-filename check in HTTPDownload in 0.4.10
resume = self.resume_download if resume is None else bool(resume)
- dl_chunks = self.pyload.config.get("download", "chunks")
+ dl_chunks = self.pyload.config.get('download', 'chunks')
chunk_limit = chunks or self.chunk_limit or -1
if -1 in (dl_chunks, chunk_limit):
@@ -277,7 +279,7 @@ class Hoster(Base):
self.pyfile.setStatus("downloading")
- dl_folder = self.pyload.config.get("general", "download_folder")
+ dl_folder = self.pyload.config.get('general', 'download_folder')
dl_dirname = safejoin(dl_folder, self.pyfile.package().folder)
dl_filename = safejoin(dl_dirname, dl_basename)
@@ -479,8 +481,8 @@ class Hoster(Base):
:raises Skip:
"""
- pack_folder = self.pyfile.package().folder if self.pyload.config.get("general", "folder_per_package") else ""
- dl_folder = self.pyload.config.get("general", "download_folder")
+ pack_folder = self.pyfile.package().folder if self.pyload.config.get('general', 'folder_per_package') else ""
+ dl_folder = self.pyload.config.get('general', 'download_folder')
dl_file = fsjoin(dl_folder, pack_folder, self.pyfile.name)
if not exists(dl_file):
@@ -491,7 +493,7 @@ class Hoster(Base):
self.last_download = ""
return
- if self.pyload.config.get("download", "skip_existing"):
+ if self.pyload.config.get('download', 'skip_existing'):
plugin = self.pyload.db.findDuplicates(self.pyfile.id, pack_folder, self.pyfile.name)
msg = plugin[0] if plugin else _("File exists")
self.skip(msg)
diff --git a/module/plugins/internal/MultiCrypter.py b/module/plugins/internal/MultiCrypter.py
index c924ee916..7bca45c61 100644
--- a/module/plugins/internal/MultiCrypter.py
+++ b/module/plugins/internal/MultiCrypter.py
@@ -20,7 +20,7 @@ class MultiCrypter(SimpleCrypter):
def init(self):
- self.PLUGIN_NAME = self.pyload.pluginManager.crypterPlugins[self.classname]['name']
+ self.PLUGIN_NAME = self.pyload.pluginManager.crypterPlugins.get(self.classname)['name']
def _log(self, level, plugintype, pluginname, messages):
diff --git a/module/plugins/internal/MultiHoster.py b/module/plugins/internal/MultiHoster.py
index a38230b9d..0adbf8d90 100644
--- a/module/plugins/internal/MultiHoster.py
+++ b/module/plugins/internal/MultiHoster.py
@@ -32,7 +32,7 @@ class MultiHoster(SimpleHoster):
def init(self):
- self.PLUGIN_NAME = self.pyload.pluginManager.hosterPlugins[self.classname]['name']
+ self.PLUGIN_NAME = self.pyload.pluginManager.hosterPlugins.get(self.classname)['name']
def _log(self, level, plugintype, pluginname, messages):
@@ -54,8 +54,8 @@ class MultiHoster(SimpleHoster):
super(MultiHoster, self).setup_base()
- def prepare(self):
- super(MultiHoster, self).prepare()
+ def _prepare(self):
+ super(MultiHoster, self)._prepare()
if self.DIRECT_LINK is None:
self.direct_dl = self.__pattern__ != r'^unmatchable$' and re.match(self.__pattern__, self.pyfile.url)
@@ -68,9 +68,9 @@ class MultiHoster(SimpleHoster):
super(MultiHoster, self)._process(thread)
except Fail, e:
- if self.config.get("revertfailed", True) and \
- self.pyload.pluginManager.hosterPlugins[self.classname].get('new_module'):
- hdict = self.pyload.pluginManager.hosterPlugins[self.classname]
+ if self.config.get('revertfailed', True) and \
+ self.pyload.pluginManager.hosterPlugins.get(self.classname).get('new_module'):
+ hdict = self.pyload.pluginManager.hosterPlugins.get(self.classname)
tmp_module = hdict['new_module']
tmp_name = hdict['new_name']
@@ -85,7 +85,7 @@ class MultiHoster(SimpleHoster):
self.restart(_("Revert to original hoster plugin"))
else:
- raise Fail(encode(e))
+ raise Fail(e)
def handle_premium(self, pyfile):
diff --git a/module/plugins/internal/Notifier.py b/module/plugins/internal/Notifier.py
index e9f1fab74..8c79cf7fa 100644
--- a/module/plugins/internal/Notifier.py
+++ b/module/plugins/internal/Notifier.py
@@ -136,13 +136,13 @@ class Notifier(Addon):
elapsed_time = time.time() - self.last_notify
- if elapsed_time < self.config.get("sendinterval", 1):
+ if elapsed_time < self.config.get('sendinterval', 1):
return
elif elapsed_time > 60:
self.notifications = 0
- elif self.notifications >= self.config.get("sendpermin", 60):
+ elif self.notifications >= self.config.get('sendpermin', 60):
return
self.log_debug("Sending notification...")
diff --git a/module/plugins/internal/OCR.py b/module/plugins/internal/OCR.py
index 274f14d8b..0ffcbb4ec 100644
--- a/module/plugins/internal/OCR.py
+++ b/module/plugins/internal/OCR.py
@@ -60,7 +60,7 @@ class OCR(Plugin):
"""
Run a command
"""
- call = [command] + args
+ call = (command,) + args
self.log_debug("EXECUTE " + " ".join(call))
call = map(encode, call)
diff --git a/module/plugins/internal/Plugin.py b/module/plugins/internal/Plugin.py
index bbb4e33b8..a8ef9b4f2 100644
--- a/module/plugins/internal/Plugin.py
+++ b/module/plugins/internal/Plugin.py
@@ -249,12 +249,7 @@ class Plugin(object):
os.makedirs(os.path.join("tmp", self.classname))
with open(framefile, "wb") as f:
- try:
- html = encode(self.last_html)
- except Exception:
- html = self.last_html
-
- f.write(html)
+ f.write(encode(self.last_html))
except IOError, e:
self.log_error(e)
diff --git a/module/plugins/internal/SevenZip.py b/module/plugins/internal/SevenZip.py
index 2ae3c197c..5ad1156fe 100644
--- a/module/plugins/internal/SevenZip.py
+++ b/module/plugins/internal/SevenZip.py
@@ -123,8 +123,10 @@ class SevenZip(UnRar):
args.append("-y")
#: Set a password
- if kwargs.get('password'):
- args.append("-p%s" % kwargs['password'])
+ password = kwargs.get('password')
+
+ if password:
+ args.append("-p%s" % password)
else:
args.append("-p-")
diff --git a/module/plugins/internal/SimpleHoster.py b/module/plugins/internal/SimpleHoster.py
index 98f040bad..5feb96aec 100644
--- a/module/plugins/internal/SimpleHoster.py
+++ b/module/plugins/internal/SimpleHoster.py
@@ -96,7 +96,7 @@ class SimpleHoster(Hoster):
CHECK_TRAFFIC = False #: Set to True to reload checking traffic left for premium account
COOKIES = True #: or False or list of tuples [(domain, name, value)]
DIRECT_LINK = True #: Set to True to looking for direct link (as defined in handle_direct method), set to None to do it if self.account is True else False
- DISPOSITION = True #: Set to True to use any content-disposition value in http header as file name
+ DISPOSITION = True #: Set to True to use any content-disposition value found in http header as file name
LOGIN_ACCOUNT = False #: Set to True to require account login
LOGIN_PREMIUM = False #: Set to True to require premium account login
LEECH_HOSTER = False #: Set to True to leech other hoster link (as defined in handle_multi method)
@@ -199,7 +199,7 @@ class SimpleHoster(Hoster):
self.resume_download = self.premium
- def prepare(self):
+ def _prepare(self):
self.link = ""
self.direct_dl = False
self.leech_dl = False
@@ -220,7 +220,7 @@ class SimpleHoster(Hoster):
self.LINK_PREMIUM_PATTERN = self.LINK_PATTERN
if self.LEECH_HOSTER:
- pattern = self.pyload.pluginManager.hosterPlugins[self.classname]['pattern']
+ pattern = self.pyload.pluginManager.hosterPlugins.get(self.classname)['pattern']
if self.__pattern__ is not pattern and re.match(self.__pattern__, self.pyfile.url) is None:
self.leech_dl = True
@@ -228,7 +228,7 @@ class SimpleHoster(Hoster):
self.direct_dl = False
elif self.DIRECT_LINK is None:
- self.direct_dl = bool(self.account)
+ self.direct_dl = bool(self.premium)
else:
self.direct_dl = self.DIRECT_LINK
@@ -237,7 +237,7 @@ class SimpleHoster(Hoster):
self.pyfile.url = replace_patterns(self.pyfile.url, self.URL_REPLACEMENTS)
- def preload(self):
+ def _preload(self):
if self.data:
return
@@ -248,7 +248,7 @@ class SimpleHoster(Hoster):
def process(self, pyfile):
- self.prepare()
+ self._prepare()
#@TODO: Remove `handle_multi`, use MultiHoster instead
if self.leech_dl:
@@ -266,7 +266,7 @@ class SimpleHoster(Hoster):
self.log_info(_("Direct download link not found"))
if not self.link:
- self.preload()
+ self._preload()
self.check_errors()
if self.info.get('status', 3) != 2:
@@ -352,7 +352,7 @@ class SimpleHoster(Hoster):
self.log_warning(errmsg)
wait_time = parse_time(errmsg)
- self.wait(wait_time, reconnect=wait_time > self.config.get("max_wait", 10) * 60)
+ self.wait(wait_time, reconnect=wait_time > self.config.get('max_wait', 10) * 60)
self.restart(_("Download limit exceeded"))
if self.HAPPY_HOUR_PATTERN and re.search(self.HAPPY_HOUR_PATTERN, self.data):
@@ -381,7 +381,7 @@ class SimpleHoster(Hoster):
elif re.search(r'limit|wait|slot', errmsg, re.I):
wait_time = parse_time(errmsg)
- self.wait(wait_time, reconnect=wait_time > self.config.get("max_wait", 10) * 60)
+ self.wait(wait_time, reconnect=wait_time > self.config.get('max_wait', 10) * 60)
self.restart(_("Download limit exceeded"))
elif re.search(r'country|ip|region|nation', errmsg, re.I):
@@ -423,7 +423,7 @@ class SimpleHoster(Hoster):
waitmsg = m.group(0).strip()
wait_time = parse_time(waitmsg)
- self.wait(wait_time, reconnect=wait_time > self.config.get("max_wait", 10) * 60)
+ self.wait(wait_time, reconnect=wait_time > self.config.get('max_wait', 10) * 60)
self.log_info(_("No errors found"))
self.info.pop('error', None)
@@ -437,7 +437,7 @@ class SimpleHoster(Hoster):
def handle_direct(self, pyfile):
- self.link = pyfile.url if self.isresource(pyfile.url) else None
+ self.link = self.isresource(pyfile.url)
def handle_multi(self, pyfile): #: Multi-hoster handler
diff --git a/module/plugins/internal/UnRar.py b/module/plugins/internal/UnRar.py
index d1f180546..07f3b0f23 100644
--- a/module/plugins/internal/UnRar.py
+++ b/module/plugins/internal/UnRar.py
@@ -212,8 +212,10 @@ class UnRar(Extractor):
args.append("-y")
#: Set a password
- if kwargs.get('password'):
- args.append("-p%s" % kwargs['password'])
+ password = kwargs.get('password')
+
+ if password:
+ args.append("-p%s" % password)
else:
args.append("-p-")
diff --git a/module/plugins/internal/XFSAccount.py b/module/plugins/internal/XFSAccount.py
index f5aa37c81..6866f8b19 100644
--- a/module/plugins/internal/XFSAccount.py
+++ b/module/plugins/internal/XFSAccount.py
@@ -69,8 +69,9 @@ class XFSAccount(MultiAccount):
self._set_xfs_cookie()
- def grab_hosters(self, user, password, data):
- pass
+ #@TODO: Implement default grab_hosters routine
+ # def grab_hosters(self, user, password, data):
+ # pass
def grab_info(self, user, password, data):
diff --git a/module/plugins/internal/XFSCrypter.py b/module/plugins/internal/XFSCrypter.py
index d80276cfb..5754be1d8 100644
--- a/module/plugins/internal/XFSCrypter.py
+++ b/module/plugins/internal/XFSCrypter.py
@@ -40,11 +40,11 @@ class XFSCrypter(SimpleCrypter):
set_cookie(self.req.cj, *cookie)
- def prepare(self):
+ def _prepare(self):
if not self.PLUGIN_DOMAIN:
self.fail(_("Missing PLUGIN DOMAIN"))
if self.COOKIES:
self._set_xfs_cookie()
- super(XFSCrypter, self).prepare()
+ super(XFSCrypter, self)._prepare()
diff --git a/module/plugins/internal/XFSHoster.py b/module/plugins/internal/XFSHoster.py
index dabf1457a..81347e1ac 100644
--- a/module/plugins/internal/XFSHoster.py
+++ b/module/plugins/internal/XFSHoster.py
@@ -46,7 +46,7 @@ class XFSHoster(SimpleHoster):
HAPPY_HOUR_PATTERN = r'>[Hh]appy hour'
ERROR_PATTERN = r'(?:class=["\']err["\'].*?>|<[Cc]enter><b>|>Error</td>|>\(ERROR:)(?:\s*<.+?>\s*)*(.+?)(?:["\']|<|\))'
- LINK_LEECH_PATTERN = r'<h2>Download Link</h2>\s*<textarea[^>]*>([^<]+)'
+ LINK_LEECH_PATTERN = r'<h2>Download Link</h2>\s*<textarea.*?>(.+?)'
CAPTCHA_PATTERN = r'(https?://[^"\']+?/captchas?/[^"\']+)'
CAPTCHA_BLOCK_PATTERN = r'>Enter code.*?<div.*?>(.+?)</div>'
@@ -71,7 +71,7 @@ class XFSHoster(SimpleHoster):
set_cookie(self.req.cj, *cookie)
- def prepare(self):
+ def _prepare(self):
if not self.PLUGIN_DOMAIN:
self.fail(_("Missing PLUGIN DOMAIN"))
@@ -82,7 +82,7 @@ class XFSHoster(SimpleHoster):
pattern = r'(?:file: "(.+?)"|(https?://(?:www\.)?([^/]*?%s|\d+\.\d+\.\d+\.\d+)(\:\d+)?(/d/|(/files)?/\d+/\w+/).+?)["\'<])'
self.LINK_PATTERN = pattern % self.PLUGIN_DOMAIN.replace('.', '\.')
- super(XFSHoster, self).prepare()
+ super(XFSHoster, self)._prepare()
if self.DIRECT_LINK is None:
self.direct_dl = self.premium
@@ -98,12 +98,11 @@ class XFSHoster(SimpleHoster):
if m is not None:
break
- data = self._post_parameters()
+ self.data = self.load(pyfile.url,
+ post=self._post_parameters(),
+ redirect=False)
- self.data = self.load(pyfile.url, post=data, redirect=False)
-
- m = re.search(r'Location\s*:\s*(.+)', self.req.http.header, re.I)
- if m and not "op=" in m.group(1):
+ if not "op=" in self.last_header.get('location', "op="):
break
m = re.search(self.LINK_PATTERN, self.data, re.S)
@@ -169,10 +168,7 @@ class XFSHoster(SimpleHoster):
if m is None:
self.error(_("LINK_LEECH_PATTERN not found"))
- header = self.load(m.group(1), just_header=True)
-
- if 'location' in header: #: Direct download link
- self.link = header.get('location')
+ self.link = self.load(m.group(1), just_header=True).get('location')
def _post_parameters(self):