summaryrefslogtreecommitdiffstats
path: root/module/plugins/hoster/BasePlugin.py
diff options
context:
space:
mode:
Diffstat (limited to 'module/plugins/hoster/BasePlugin.py')
-rw-r--r--module/plugins/hoster/BasePlugin.py58
1 files changed, 34 insertions, 24 deletions
diff --git a/module/plugins/hoster/BasePlugin.py b/module/plugins/hoster/BasePlugin.py
index 1ac33931f..14dfbba62 100644
--- a/module/plugins/hoster/BasePlugin.py
+++ b/module/plugins/hoster/BasePlugin.py
@@ -12,10 +12,10 @@ class BasePlugin(Hoster):
__name__ = "BasePlugin"
__type__ = "hoster"
__pattern__ = r"^unmatchable$"
- __version__ = "0.151"
+ __version__ = "0.16"
__description__ = """Base Plugin when any other didnt fit"""
- __author_name__ = ("RaNaN", 'hagg')
- __author_mail__ = ("RaNaN@pyload.org", '')
+ __author_name__ = ("RaNaN")
+ __author_mail__ = ("RaNaN@pyload.org")
def setup(self):
self.chunkLimit = -1
@@ -47,15 +47,22 @@ class BasePlugin(Hoster):
except BadHeader, e:
if e.code in (401, 403):
self.logDebug("Auth required")
-
- pwd = pyfile.package().password.strip()
- if ":" not in pwd:
- self.fail(_("Authorization required (username:password)"))
-
- self.req.addAuth(pwd)
+
+ servers = [ x['login'] for x in core.accountManager.getAccountPlugin('Http').getAllAccounts() ]
+ server = urlparse(pyfile.url).netloc
+
+ if server in servers:
+ self.logDebug("Logging on to %s" % server)
+ self.req.addAuth(self.account.accounts[server]["password"])
+ else:
+ for pwd in pyfile.package().password.splitlines()
+ if ":" in pwd:
+ self.req.addAuth(pwd.strip())
+ break
+ else:
+ self.fail(_("Authorization required (username:password)"))
+
self.downloadFile(pyfile)
- elif e.code == 404:
- self.offline()
else:
raise
@@ -64,18 +71,21 @@ class BasePlugin(Hoster):
def downloadFile(self, pyfile):
- header = self.load(pyfile.url, just_header = True)
- #self.logDebug(header)
-
- # self.load does not raise a BadHeader on 404 responses, do it here
- if header.has_key('code') and header['code'] == 404:
- raise BadHeader(404)
-
- if 'location' in header:
- self.logDebug("Location: " + header['location'])
- url = unquote(header['location'])
- else:
- url = pyfile.url
+ url = pyfile.url
+
+ for i in range(5):
+ header = self.load(pyfile.url, just_header = True)
+
+ # self.load does not raise a BadHeader on 404 responses, do it here
+ if header.has_key('code') and header['code'] == 404:
+ raise BadHeader(404)
+
+ if 'location' in header:
+ self.logDebug("Location: " + header['location'])
+ url = unquote(header['location'])
+ self.logDebug("URL: %s" % url, html_unescape(unquote(urlparse(url).path.split("/")[-1])))
+ else:
+ break
name = html_unescape(unquote(urlparse(url).path.split("/")[-1]))
@@ -92,4 +102,4 @@ class BasePlugin(Hoster):
if not name: name = url
pyfile.name = name
self.logDebug("Filename: %s" % pyfile.name)
- self.download(url, disposition=True)
+ self.download(url, disposition=True) \ No newline at end of file