summaryrefslogtreecommitdiffstats
path: root/module/plugins/hooks
diff options
context:
space:
mode:
Diffstat (limited to 'module/plugins/hooks')
-rw-r--r--module/plugins/hooks/AlldebridCom.py2
-rw-r--r--module/plugins/hooks/AndroidPhoneNotify.py18
-rw-r--r--module/plugins/hooks/AntiVirus.py7
-rw-r--r--module/plugins/hooks/BypassCaptcha.py10
-rw-r--r--module/plugins/hooks/Captcha9Kw.py36
-rw-r--r--module/plugins/hooks/CaptchaBrotherhood.py14
-rw-r--r--module/plugins/hooks/Checksum.py12
-rw-r--r--module/plugins/hooks/ClickAndLoad.py2
-rw-r--r--module/plugins/hooks/DeathByCaptcha.py10
-rw-r--r--module/plugins/hooks/DownloadScheduler.py4
-rw-r--r--module/plugins/hooks/ExpertDecoders.py10
-rw-r--r--module/plugins/hooks/ExternalScripts.py19
-rw-r--r--module/plugins/hooks/HotFolder.py8
-rw-r--r--module/plugins/hooks/IRCInterface.py22
-rw-r--r--module/plugins/hooks/ImageTyperz.py18
-rw-r--r--module/plugins/hooks/MultiHome.py2
-rw-r--r--module/plugins/hooks/OverLoadMe.py2
-rw-r--r--module/plugins/hooks/RealdebridCom.py2
-rw-r--r--module/plugins/hooks/RestartFailed.py8
-rw-r--r--module/plugins/hooks/RestartSlow.py4
-rw-r--r--module/plugins/hooks/SkipRev.py22
-rw-r--r--module/plugins/hooks/UnSkipOnFail.py2
-rw-r--r--module/plugins/hooks/UpdateManager.py16
-rw-r--r--module/plugins/hooks/WindowsPhoneNotify.py17
-rw-r--r--module/plugins/hooks/XFileSharingPro.py14
-rw-r--r--module/plugins/hooks/XMPPInterface.py14
26 files changed, 150 insertions, 145 deletions
diff --git a/module/plugins/hooks/AlldebridCom.py b/module/plugins/hooks/AlldebridCom.py
index fd89571eb..517adcb68 100644
--- a/module/plugins/hooks/AlldebridCom.py
+++ b/module/plugins/hooks/AlldebridCom.py
@@ -23,7 +23,7 @@ class AlldebridCom(MultiHook):
def getHosters(self):
- https = "https" if self.getConfig("ssl") else "http"
+ https = "https" if self.getConfig('ssl') else "http"
html = self.getURL(https + "://www.alldebrid.com/api.php", get={'action': "get_host"}).replace("\"", "").strip()
return [x.strip() for x in html.split(",") if x.strip()]
diff --git a/module/plugins/hooks/AndroidPhoneNotify.py b/module/plugins/hooks/AndroidPhoneNotify.py
index 7a9e6d6f8..180ad0d78 100644
--- a/module/plugins/hooks/AndroidPhoneNotify.py
+++ b/module/plugins/hooks/AndroidPhoneNotify.py
@@ -40,19 +40,19 @@ class AndroidPhoneNotify(Hook):
def newCaptchaTask(self, task):
- if not self.getConfig("notifycaptcha"):
+ if not self.getConfig('notifycaptcha'):
return
self.notify(_("Captcha"), _("New request waiting user input"))
def packageFinished(self, pypack):
- if self.getConfig("notifypackage"):
+ if self.getConfig('notifypackage'):
self.notify(_("Package finished"), pypack.name)
def allDownloadsProcessed(self):
- if not self.getConfig("notifyprocessed"):
+ if not self.getConfig('notifyprocessed'):
return
if any(True for pdata in self.core.api.getQueue() if pdata.linksdone < pdata.linkstotal):
@@ -62,13 +62,15 @@ class AndroidPhoneNotify(Hook):
@Expose
- def notify(self, event, msg=""):
- apikey = self.getConfig("apikey")
+ def notify(self,
+ event,
+ msg="",
+ key=self.getConfig('apikey')):
- if not apikey:
+ if not key:
return
- if self.core.isClientConnected() and not self.getConfig("ignoreclient"):
+ if self.core.isClientConnected() and not self.getConfig('ignoreclient'):
return
elapsed_time = time.time() - self.last_notify
@@ -84,7 +86,7 @@ class AndroidPhoneNotify(Hook):
getURL("http://www.notifymyandroid.com/publicapi/notify",
- get={'apikey' : apikey,
+ get={'apikey' : key,
'application': "pyLoad",
'event' : event,
'description': msg})
diff --git a/module/plugins/hooks/AntiVirus.py b/module/plugins/hooks/AntiVirus.py
index 695852683..b8a659f99 100644
--- a/module/plugins/hooks/AntiVirus.py
+++ b/module/plugins/hooks/AntiVirus.py
@@ -13,7 +13,7 @@ class AntiVirus(Hook):
__type__ = "hook"
__version__ = "0.04"
- __config__ = [("action" , "Antivirus default;Delete;Quarantine", "Manage infected files" , "Antivirus default"),
+ __config__ = [("action" , "Antivirus default;Delete;Quarantine", "Manage infected files" , "Antivirus default"), #@TODO: add trash option (use Send2Trash lib)
("quardir" , "folder" , "Quarantine folder" , "" ),
("scanfailed", "bool" , "Scan incompleted files (failed downloads)", False ),
("cmdfile" , "file" , "Antivirus executable" , "" ),
@@ -55,7 +55,7 @@ class AntiVirus(Hook):
if err:
self.logWarning(filename, err)
if not self.getConfig('ignore-err')
- self.logDebug("Delete/Quarantine action aborted")
+ self.logDebug("Delete/Quarantine task is aborted")
return
if p.returncode:
@@ -68,8 +68,7 @@ class AntiVirus(Hook):
elif action == "Quarantine":
pyfile.setCustomStatus(_("file moving"))
pyfile.setProgress(0)
- new_filename = save_join(self.getConfig('quardir'), filename)
- shutil.move(file, new_filename)
+ shutil.move(file, self.getConfig('quardir'))
except (IOError, shutil.Error), e:
self.logError(filename, action + " action failed!", e)
diff --git a/module/plugins/hooks/BypassCaptcha.py b/module/plugins/hooks/BypassCaptcha.py
index 777564554..d7995650b 100644
--- a/module/plugins/hooks/BypassCaptcha.py
+++ b/module/plugins/hooks/BypassCaptcha.py
@@ -57,7 +57,7 @@ class BypassCaptcha(Hook):
def getCredits(self):
- res = getURL(self.GETCREDITS_URL, post={"key": self.getConfig("passkey")})
+ res = getURL(self.GETCREDITS_URL, post={"key": self.getConfig('passkey')})
data = dict(x.split(' ', 1) for x in res.splitlines())
return int(data['Left'])
@@ -72,7 +72,7 @@ class BypassCaptcha(Hook):
try:
res = req.load(self.SUBMIT_URL,
post={'vendor_key': self.PYLOAD_KEY,
- 'key': self.getConfig("passkey"),
+ 'key': self.getConfig('passkey'),
'gen_task_id': "1",
'file': (FORM_FILE, captcha)},
multipart=True)
@@ -92,7 +92,7 @@ class BypassCaptcha(Hook):
def respond(self, ticket, success):
try:
- res = getURL(self.RESPOND_URL, post={"task_id": ticket, "key": self.getConfig("passkey"),
+ res = getURL(self.RESPOND_URL, post={"task_id": ticket, "key": self.getConfig('passkey'),
"cv": 1 if success else 0})
except BadHeader, e:
self.logError(_("Could not send response"), e)
@@ -105,10 +105,10 @@ class BypassCaptcha(Hook):
if not task.isTextual():
return False
- if not self.getConfig("passkey"):
+ if not self.getConfig('passkey'):
return False
- if self.core.isClientConnected() and not self.getConfig("force"):
+ if self.core.isClientConnected() and not self.getConfig('force'):
return False
if self.getCredits() > 0:
diff --git a/module/plugins/hooks/Captcha9Kw.py b/module/plugins/hooks/Captcha9Kw.py
index 2b4f405ed..6d42416ff 100644
--- a/module/plugins/hooks/Captcha9Kw.py
+++ b/module/plugins/hooks/Captcha9Kw.py
@@ -46,13 +46,13 @@ class Captcha9Kw(Hook):
def setup(self):
self.info = {} #@TODO: Remove in 0.4.10
- if self.getConfig("ssl"):
+ if self.getConfig('ssl'):
self.API_URL = self.API_URL.replace("http://", "https://")
def getCredits(self):
res = getURL(self.API_URL,
- get={'apikey': self.getConfig("passkey"),
+ get={'apikey': self.getConfig('passkey'),
'pyload': "1",
'source': "pyload",
'action': "usercaptchaguthaben"})
@@ -83,14 +83,14 @@ class Captcha9Kw(Hook):
'numeric' : 0,
'case_sensitive': 0,
'math' : 0,
- 'prio' : min(max(self.getConfig("prio"), 0), 10),
- 'confirm' : self.getConfig("confirm"),
- 'timeout' : min(max(self.getConfig("timeout"), 300), 3999),
- 'selfsolve' : self.getConfig("selfsolve"),
- 'cph' : self.getConfig("captchaperhour"),
- 'cpm' : self.getConfig("captchapermin")}
+ 'prio' : min(max(self.getConfig('prio'), 0), 10),
+ 'confirm' : self.getConfig('confirm'),
+ 'timeout' : min(max(self.getConfig('timeout'), 300), 3999),
+ 'selfsolve' : self.getConfig('selfsolve'),
+ 'cph' : self.getConfig('captchaperhour'),
+ 'cpm' : self.getConfig('captchapermin')}
- for opt in str(self.getConfig("hoster_options").split('|')):
+ for opt in str(self.getConfig('hoster_options').split('|')):
details = map(str.strip, opt.split(':'))
@@ -109,7 +109,7 @@ class Captcha9Kw(Hook):
break
- post_data = {'apikey' : self.getConfig("passkey"),
+ post_data = {'apikey' : self.getConfig('passkey'),
'prio' : option['prio'],
'confirm' : option['confirm'],
'maxtimeout' : option['timeout'],
@@ -146,9 +146,9 @@ class Captcha9Kw(Hook):
task.data["ticket"] = res
- for _i in xrange(int(self.getConfig("timeout") / 5)):
+ for _i in xrange(int(self.getConfig('timeout') / 5)):
result = getURL(self.API_URL,
- get={'apikey': self.getConfig("passkey"),
+ get={'apikey': self.getConfig('passkey'),
'id' : res,
'pyload': "1",
'info' : "1",
@@ -172,10 +172,10 @@ class Captcha9Kw(Hook):
if not task.isTextual() and not task.isPositional():
return
- if not self.getConfig("passkey"):
+ if not self.getConfig('passkey'):
return
- if self.core.isClientConnected() and not self.getConfig("force"):
+ if self.core.isClientConnected() and not self.getConfig('force'):
return
credits = self.getCredits()
@@ -184,8 +184,8 @@ class Captcha9Kw(Hook):
self.logError(_("Your captcha 9kw.eu account has not enough credits"))
return
- queue = min(self.getConfig("queue"), 999)
- timeout = min(max(self.getConfig("timeout"), 300), 3999)
+ queue = min(self.getConfig('queue'), 999)
+ timeout = min(max(self.getConfig('timeout'), 300), 3999)
pluginname = re.search(r'_([^_]*)_\d+.\w+', task.captchaFile).group(1)
for _i in xrange(5):
@@ -197,7 +197,7 @@ class Captcha9Kw(Hook):
else:
self.fail(_("Too many captchas in queue"))
- for opt in str(self.getConfig("hoster_options").split('|')):
+ for opt in str(self.getConfig('hoster_options').split('|')):
details = map(str.strip, opt.split(':'))
if not details or details[0].lower() != pluginname.lower():
@@ -227,7 +227,7 @@ class Captcha9Kw(Hook):
self.logDebug("No CaptchaID for %s request (task: %s)" % (type, task))
return
- passkey = self.getConfig("passkey")
+ passkey = self.getConfig('passkey')
for _i in xrange(3):
res = getURL(self.API_URL,
diff --git a/module/plugins/hooks/CaptchaBrotherhood.py b/module/plugins/hooks/CaptchaBrotherhood.py
index 478138c3b..5350b4f7d 100644
--- a/module/plugins/hooks/CaptchaBrotherhood.py
+++ b/module/plugins/hooks/CaptchaBrotherhood.py
@@ -64,7 +64,7 @@ class CaptchaBrotherhood(Hook):
def getCredits(self):
res = getURL(self.API_URL + "askCredits.aspx",
- get={"username": self.getConfig("username"), "password": self.getConfig("passkey")})
+ get={"username": self.getConfig('username'), "password": self.getConfig('passkey')})
if not res.startswith("OK"):
raise CaptchaBrotherhoodException(res)
else:
@@ -93,8 +93,8 @@ class CaptchaBrotherhood(Hook):
req = getRequest()
url = "%ssendNewCaptcha.aspx?%s" % (self.API_URL,
- urlencode({'username' : self.getConfig("username"),
- 'password' : self.getConfig("passkey"),
+ urlencode({'username' : self.getConfig('username'),
+ 'password' : self.getConfig('passkey'),
'captchaSource': "pyLoad",
'timeout' : "80"}))
@@ -127,8 +127,8 @@ class CaptchaBrotherhood(Hook):
def api_response(self, api, ticket):
res = getURL("%s%s.aspx" % (self.API_URL, api),
- get={"username": self.getConfig("username"),
- "password": self.getConfig("passkey"),
+ get={"username": self.getConfig('username'),
+ "password": self.getConfig('passkey'),
"captchaID": ticket})
if not res.startswith("OK"):
raise CaptchaBrotherhoodException("Unknown response: %s" % res)
@@ -143,10 +143,10 @@ class CaptchaBrotherhood(Hook):
if not task.isTextual():
return False
- if not self.getConfig("username") or not self.getConfig("passkey"):
+ if not self.getConfig('username') or not self.getConfig('passkey'):
return False
- if self.core.isClientConnected() and not self.getConfig("force"):
+ if self.core.isClientConnected() and not self.getConfig('force'):
return False
if self.getCredits() > 10:
diff --git a/module/plugins/hooks/Checksum.py b/module/plugins/hooks/Checksum.py
index 7d08e6552..9474f6968 100644
--- a/module/plugins/hooks/Checksum.py
+++ b/module/plugins/hooks/Checksum.py
@@ -70,7 +70,7 @@ class Checksum(Hook):
def coreReady(self):
- if not self.getConfig("check_checksum"):
+ if not self.getConfig('check_checksum'):
self.logInfo(_("Checksum validation is disabled in plugin configuration"))
@@ -125,7 +125,7 @@ class Checksum(Hook):
data.pop('size', None)
# validate checksum
- if data and self.getConfig("check_checksum"):
+ if data and self.getConfig('check_checksum'):
if not 'md5' in data:
for type in ("checksum", "hashsum", "hash"):
@@ -152,14 +152,14 @@ class Checksum(Hook):
def checkFailed(self, pyfile, local_file, msg):
- check_action = self.getConfig("check_action")
+ check_action = self.getConfig('check_action')
if check_action == "retry":
- max_tries = self.getConfig("max_tries")
- retry_action = self.getConfig("retry_action")
+ max_tries = self.getConfig('max_tries')
+ retry_action = self.getConfig('retry_action')
if pyfile.plugin.retries < max_tries:
if local_file:
remove(local_file)
- pyfile.plugin.retry(max_tries, self.getConfig("wait_time"), msg)
+ pyfile.plugin.retry(max_tries, self.getConfig('wait_time'), msg)
elif retry_action == "nothing":
return
elif check_action == "nothing":
diff --git a/module/plugins/hooks/ClickAndLoad.py b/module/plugins/hooks/ClickAndLoad.py
index 2f5938101..731c8bd7e 100644
--- a/module/plugins/hooks/ClickAndLoad.py
+++ b/module/plugins/hooks/ClickAndLoad.py
@@ -45,7 +45,7 @@ class ClickAndLoad(Hook):
if not self.config['webinterface']['activated']:
return
- ip = "" if self.getConfig("extern") else "127.0.0.1"
+ ip = "" if self.getConfig('extern') else "127.0.0.1"
webport = self.config['webinterface']['port']
cnlport = self.getConfig('port')
diff --git a/module/plugins/hooks/DeathByCaptcha.py b/module/plugins/hooks/DeathByCaptcha.py
index a67e70c7e..4eefb2bff 100644
--- a/module/plugins/hooks/DeathByCaptcha.py
+++ b/module/plugins/hooks/DeathByCaptcha.py
@@ -82,8 +82,8 @@ class DeathByCaptcha(Hook):
if post:
if not isinstance(post, dict):
post = {}
- post.update({"username": self.getConfig("username"),
- "password": self.getConfig("passkey")})
+ post.update({"username": self.getConfig('username'),
+ "password": self.getConfig('passkey')})
res = None
try:
@@ -136,7 +136,7 @@ class DeathByCaptcha(Hook):
def submit(self, captcha, captchaType="file", match=None):
#@NOTE: Workaround multipart-post bug in HTTPRequest.py
- if re.match("^\w*$", self.getConfig("passkey")):
+ if re.match("^\w*$", self.getConfig('passkey')):
multipart = True
data = (FORM_FILE, captcha)
else:
@@ -172,10 +172,10 @@ class DeathByCaptcha(Hook):
if not task.isTextual():
return False
- if not self.getConfig("username") or not self.getConfig("passkey"):
+ if not self.getConfig('username') or not self.getConfig('passkey'):
return False
- if self.core.isClientConnected() and not self.getConfig("force"):
+ if self.core.isClientConnected() and not self.getConfig('force'):
return False
try:
diff --git a/module/plugins/hooks/DownloadScheduler.py b/module/plugins/hooks/DownloadScheduler.py
index 4996e212d..3b7ae524c 100644
--- a/module/plugins/hooks/DownloadScheduler.py
+++ b/module/plugins/hooks/DownloadScheduler.py
@@ -37,7 +37,7 @@ class DownloadScheduler(Hook):
def updateSchedule(self, schedule=None):
if schedule is None:
- schedule = self.getConfig("timetable")
+ schedule = self.getConfig('timetable')
schedule = re.findall("(\d{1,2}):(\d{2})[\s]*(-?\d+)",
schedule.lower().replace("full", "-1").replace("none", "0"))
@@ -65,7 +65,7 @@ class DownloadScheduler(Hook):
def setDownloadSpeed(self, speed):
if speed == 0:
- abort = self.getConfig("abort")
+ abort = self.getConfig('abort')
self.logInfo(_("Stopping download server. (Running downloads will %sbe aborted.)") % '' if abort else _('not '))
self.core.api.pauseServer()
if abort:
diff --git a/module/plugins/hooks/ExpertDecoders.py b/module/plugins/hooks/ExpertDecoders.py
index d6ecca680..fa1c7a14b 100644
--- a/module/plugins/hooks/ExpertDecoders.py
+++ b/module/plugins/hooks/ExpertDecoders.py
@@ -38,7 +38,7 @@ class ExpertDecoders(Hook):
def getCredits(self):
- res = getURL(self.API_URL, post={"key": self.getConfig("passkey"), "action": "balance"})
+ res = getURL(self.API_URL, post={"key": self.getConfig('passkey'), "action": "balance"})
if res.isdigit():
self.logInfo(_("%s credits left") % res)
@@ -64,7 +64,7 @@ class ExpertDecoders(Hook):
try:
result = req.load(self.API_URL,
post={'action' : "upload",
- 'key' : self.getConfig("passkey"),
+ 'key' : self.getConfig('passkey'),
'file' : b64encode(data),
'gen_task_id': ticket})
finally:
@@ -78,10 +78,10 @@ class ExpertDecoders(Hook):
if not task.isTextual():
return False
- if not self.getConfig("passkey"):
+ if not self.getConfig('passkey'):
return False
- if self.core.isClientConnected() and not self.getConfig("force"):
+ if self.core.isClientConnected() and not self.getConfig('force'):
return False
if self.getCredits() > 0:
@@ -98,7 +98,7 @@ class ExpertDecoders(Hook):
try:
res = getURL(self.API_URL,
- post={'action': "refund", 'key': self.getConfig("passkey"), 'gen_task_id': task.data['ticket']})
+ post={'action': "refund", 'key': self.getConfig('passkey'), 'gen_task_id': task.data['ticket']})
self.logInfo(_("Request refund"), res)
except BadHeader, e:
diff --git a/module/plugins/hooks/ExternalScripts.py b/module/plugins/hooks/ExternalScripts.py
index 5f2790656..d17e4740c 100644
--- a/module/plugins/hooks/ExternalScripts.py
+++ b/module/plugins/hooks/ExternalScripts.py
@@ -44,26 +44,25 @@ class ExternalScripts(Hook):
for folder in folders:
self.scripts[folder] = []
-
- self.initPluginType(folder, os.path.join(pypath, 'scripts', folder))
- self.initPluginType(folder, os.path.join('scripts', folder))
+ for dir in (pypath, ''):
+ self.initPluginType(folder, os.path.join(dir, 'scripts', folder))
for script_type, names in self.scripts.iteritems():
if names:
self.logInfo(_("Installed scripts for ") + script_type, ", ".join(map(os.path.basename, names)))
- def initPluginType(self, folder, path):
- if not os.path.exists(path):
+ def initPluginType(self, name, dir):
+ if not os.path.isdir(dir):
try:
- os.makedirs(path)
+ os.makedirs(dir)
except IOError, e:
self.logDebug(e)
return
- for filename in os.listdir(path):
- file = os.path.join(path, filename)
+ for filename in os.listdir(dir):
+ file = os.path.join(dir, filename)
if not os.path.isfile(file):
continue
@@ -72,9 +71,9 @@ class ExternalScripts(Hook):
continue
if not os.access(file, os.X_OK):
- self.logWarning(_("Script not executable:") + " %s/%s" % (folder, filename))
+ self.logWarning(_("Script not executable:") + " %s/%s" % (name, filename))
- self.scripts[folder].append(file)
+ self.scripts[name].append(file)
def callScript(self, script, *args):
diff --git a/module/plugins/hooks/HotFolder.py b/module/plugins/hooks/HotFolder.py
index 302bc909f..a046e55e7 100644
--- a/module/plugins/hooks/HotFolder.py
+++ b/module/plugins/hooks/HotFolder.py
@@ -31,14 +31,14 @@ class HotFolder(Hook):
def periodical(self):
- folder = fs_encode(self.getConfig("folder"))
- file = fs_encode(self.getConfig("file"))
+ folder = fs_encode(self.getConfig('folder'))
+ file = fs_encode(self.getConfig('file'))
try:
if not os.path.isdir(os.path.join(folder, "finished")):
os.makedirs(os.path.join(folder, "finished"))
- if self.getConfig("watch_file"):
+ if self.getConfig('watch_file'):
with open(file, "a+") as f:
f.seek(0)
content = f.read().strip()
@@ -60,7 +60,7 @@ class HotFolder(Hook):
if not os.path.isfile(path) or f.endswith("~") or f.startswith("#") or f.startswith("."):
continue
- newpath = os.path.join(folder, "finished", f if self.getConfig("keep") else "tmp_" + f)
+ newpath = os.path.join(folder, "finished", f if self.getConfig('keep') else "tmp_" + f)
move(path, newpath)
self.logInfo(_("Added %s from HotFolder") % f)
diff --git a/module/plugins/hooks/IRCInterface.py b/module/plugins/hooks/IRCInterface.py
index 623f2d1bf..1c90c0e2f 100644
--- a/module/plugins/hooks/IRCInterface.py
+++ b/module/plugins/hooks/IRCInterface.py
@@ -59,7 +59,7 @@ class IRCInterface(Thread, Hook):
def packageFinished(self, pypack):
try:
- if self.getConfig("info_pack"):
+ if self.getConfig('info_pack'):
self.response(_("Package finished: %s") % pypack.name)
except Exception:
pass
@@ -67,7 +67,7 @@ class IRCInterface(Thread, Hook):
def downloadFinished(self, pyfile):
try:
- if self.getConfig("info_file"):
+ if self.getConfig('info_file'):
self.response(
_("Download finished: %(name)s @ %(plugin)s ") % {"name": pyfile.name, "plugin": pyfile.pluginname})
except Exception:
@@ -75,7 +75,7 @@ class IRCInterface(Thread, Hook):
def newCaptchaTask(self, task):
- if self.getConfig("captcha") and task.isTextual():
+ if self.getConfig('captcha') and task.isTextual():
task.handler.append(self)
task.setWaiting(60)
@@ -90,16 +90,16 @@ class IRCInterface(Thread, Hook):
def run(self):
# connect to IRC etc.
self.sock = socket.socket()
- host = self.getConfig("host")
- self.sock.connect((host, self.getConfig("port")))
+ host = self.getConfig('host')
+ self.sock.connect((host, self.getConfig('port')))
- if self.getConfig("ssl"):
+ if self.getConfig('ssl'):
self.sock = ssl.wrap_socket(self.sock, cert_reqs=ssl.CERT_NONE) #@TODO: support certificate
- nick = self.getConfig("nick")
+ nick = self.getConfig('nick')
self.sock.send("NICK %s\r\n" % nick)
self.sock.send("USER %s %s bla :%s\r\n" % (nick, host, nick))
- for t in self.getConfig("owner").split():
+ for t in self.getConfig('owner').split():
if t.strip().startswith("#"):
self.sock.send("JOIN %s\r\n" % t.strip())
self.logInfo(_("Connected to"), host)
@@ -153,10 +153,10 @@ class IRCInterface(Thread, Hook):
def handle_events(self, msg):
- if not msg['origin'].split("!", 1)[0] in self.getConfig("owner").split():
+ if not msg['origin'].split("!", 1)[0] in self.getConfig('owner').split():
return
- if msg['target'].split("!", 1)[0] != self.getConfig("nick"):
+ if msg['target'].split("!", 1)[0] != self.getConfig('nick'):
return
if msg['action'] != "PRIVMSG":
@@ -197,7 +197,7 @@ class IRCInterface(Thread, Hook):
def response(self, msg, origin=""):
if origin == "":
- for t in self.getConfig("owner").split():
+ for t in self.getConfig('owner').split():
self.sock.send("PRIVMSG %s :%s\r\n" % (t.strip(), msg))
else:
self.sock.send("PRIVMSG %s :%s\r\n" % (origin.split("!", 1)[0], msg))
diff --git a/module/plugins/hooks/ImageTyperz.py b/module/plugins/hooks/ImageTyperz.py
index b9dbfcdbe..2cf611b9f 100644
--- a/module/plugins/hooks/ImageTyperz.py
+++ b/module/plugins/hooks/ImageTyperz.py
@@ -61,8 +61,8 @@ class ImageTyperz(Hook):
def getCredits(self):
res = getURL(self.GETCREDITS_URL,
post={'action': "REQUESTBALANCE",
- 'username': self.getConfig("username"),
- 'password': self.getConfig("passkey")})
+ 'username': self.getConfig('username'),
+ 'password': self.getConfig('passkey')})
if res.startswith('ERROR'):
raise ImageTyperzException(res)
@@ -83,7 +83,7 @@ class ImageTyperz(Hook):
try:
#@NOTE: Workaround multipart-post bug in HTTPRequest.py
- if re.match("^\w*$", self.getConfig("passkey")):
+ if re.match("^\w*$", self.getConfig('passkey')):
multipart = True
data = (FORM_FILE, captcha)
else:
@@ -94,8 +94,8 @@ class ImageTyperz(Hook):
res = req.load(self.SUBMIT_URL,
post={'action': "UPLOADCAPTCHA",
- 'username': self.getConfig("username"),
- 'password': self.getConfig("passkey"), "file": data},
+ 'username': self.getConfig('username'),
+ 'password': self.getConfig('passkey'), "file": data},
multipart=multipart)
finally:
req.close()
@@ -119,10 +119,10 @@ class ImageTyperz(Hook):
if not task.isTextual():
return False
- if not self.getConfig("username") or not self.getConfig("passkey"):
+ if not self.getConfig('username') or not self.getConfig('passkey'):
return False
- if self.core.isClientConnected() and not self.getConfig("force"):
+ if self.core.isClientConnected() and not self.getConfig('force'):
return False
if self.getCredits() > 0:
@@ -139,8 +139,8 @@ class ImageTyperz(Hook):
if task.data['service'] == self.__name__ and "ticket" in task.data:
res = getURL(self.RESPOND_URL,
post={'action': "SETBADIMAGE",
- 'username': self.getConfig("username"),
- 'password': self.getConfig("passkey"),
+ 'username': self.getConfig('username'),
+ 'password': self.getConfig('passkey'),
'imageid': task.data['ticket']})
if res == "SUCCESS":
diff --git a/module/plugins/hooks/MultiHome.py b/module/plugins/hooks/MultiHome.py
index c9f6fc30c..9093c8459 100644
--- a/module/plugins/hooks/MultiHome.py
+++ b/module/plugins/hooks/MultiHome.py
@@ -25,7 +25,7 @@ class MultiHome(Hook):
def setup(self):
self.register = {}
self.interfaces = []
- self.parseInterfaces(self.getConfig("interfaces").split(";"))
+ self.parseInterfaces(self.getConfig('interfaces').split(";"))
if not self.interfaces:
self.parseInterfaces([self.config['download']['interface']])
self.setConfig("interfaces", self.toConfig())
diff --git a/module/plugins/hooks/OverLoadMe.py b/module/plugins/hooks/OverLoadMe.py
index b15ce2766..5e1040da7 100644
--- a/module/plugins/hooks/OverLoadMe.py
+++ b/module/plugins/hooks/OverLoadMe.py
@@ -23,7 +23,7 @@ class OverLoadMe(MultiHook):
def getHosters(self):
- https = "https" if self.getConfig("ssl") else "http"
+ https = "https" if self.getConfig('ssl') else "http"
html = self.getURL(https + "://api.over-load.me/hoster.php",
get={'auth': "0001-cb1f24dadb3aa487bda5afd3b76298935329be7700cd7-5329be77-00cf-1ca0135f"}).replace("\"", "").strip()
self.logDebug("Hosterlist", html)
diff --git a/module/plugins/hooks/RealdebridCom.py b/module/plugins/hooks/RealdebridCom.py
index d9c9407dd..c97bc257c 100644
--- a/module/plugins/hooks/RealdebridCom.py
+++ b/module/plugins/hooks/RealdebridCom.py
@@ -23,7 +23,7 @@ class RealdebridCom(MultiHook):
def getHosters(self):
- https = "https" if self.getConfig("ssl") else "http"
+ https = "https" if self.getConfig('ssl') else "http"
html = self.getURL(https + "://real-debrid.com/api/hosters.php").replace("\"", "").strip()
return [x.strip() for x in html.split(",") if x.strip()]
diff --git a/module/plugins/hooks/RestartFailed.py b/module/plugins/hooks/RestartFailed.py
index 07fb80967..7752b6a61 100644
--- a/module/plugins/hooks/RestartFailed.py
+++ b/module/plugins/hooks/RestartFailed.py
@@ -17,13 +17,13 @@ class RestartFailed(Hook):
# event_list = ["pluginConfigChanged"]
- MIN_INTERVAL = 15 * 60 #: 15m minimum check interval (value is in seconds)
+ MIN_CHECK_INTERVAL = 15 * 60 #: 15 minutes
def pluginConfigChanged(self, plugin, name, value):
if name == "interval":
interval = value * 60
- if self.MIN_INTERVAL <= interval != self.interval:
+ if self.MIN_CHECK_INTERVAL <= interval != self.interval:
self.core.scheduler.removeJob(self.cb)
self.interval = interval
self.initPeriodical()
@@ -37,8 +37,8 @@ class RestartFailed(Hook):
def setup(self):
- self.interval = self.MIN_INTERVAL
+ self.interval = self.MIN_CHECK_INTERVAL
def coreReady(self):
- self.pluginConfigChanged(self.__name__, "interval", self.getConfig("interval"))
+ self.pluginConfigChanged(self.__name__, "interval", self.getConfig('interval'))
diff --git a/module/plugins/hooks/RestartSlow.py b/module/plugins/hooks/RestartSlow.py
index c3e1e5468..834128489 100644
--- a/module/plugins/hooks/RestartSlow.py
+++ b/module/plugins/hooks/RestartSlow.py
@@ -36,7 +36,7 @@ class RestartSlow(Hook):
if not self.pyfile.plugin.req.dl:
return
- if self.getConfig("safe_mode") and not self.pyfile.plugin.resumeDownload:
+ if self.getConfig('safe_mode') and not self.pyfile.plugin.resumeDownload:
time = 30
limit = 5
else:
@@ -55,7 +55,7 @@ class RestartSlow(Hook):
def downloadStarts(self, pyfile, url, filename):
- if self.cb or (self.getConfig("safe_mode") and not pyfile.plugin.resumeDownload):
+ if self.cb or (self.getConfig('safe_mode') and not pyfile.plugin.resumeDownload):
return
self.pyfile = pyfile
super(RestartSlow, self).initPeriodical()
diff --git a/module/plugins/hooks/SkipRev.py b/module/plugins/hooks/SkipRev.py
index 521c2c39e..88ffb0103 100644
--- a/module/plugins/hooks/SkipRev.py
+++ b/module/plugins/hooks/SkipRev.py
@@ -11,16 +11,10 @@ from module.plugins.Hook import Hook
from module.plugins.Plugin import SkipDownload
-def _setup(self):
- self.pyfile.plugin._setup()
- if self.pyfile.hasStatus("skipped"):
- raise SkipDownload(self.pyfile.statusname or self.pyfile.pluginname)
-
-
class SkipRev(Hook):
__name__ = "SkipRev"
__type__ = "hook"
- __version__ = "0.28"
+ __version__ = "0.29"
__config__ = [("mode" , "Auto;Manual", "Choose rev files to skip for package", "Auto"),
("revtokeep", "int" , "Number of rev files to keep" , 0 )]
@@ -35,6 +29,13 @@ class SkipRev(Hook):
pass
+ @staticmethod
+ def _setup(self):
+ self.pyfile.plugin._setup()
+ if self.pyfile.hasStatus("skipped"):
+ raise SkipDownload(self.pyfile.statusname or self.pyfile.pluginname)
+
+
def _name(self, pyfile):
if hasattr(pyfile.pluginmodule, "getInfo"): #@NOTE: getInfo is deprecated in 0.4.10
return pyfile.pluginmodule.getInfo([pyfile.url]).next()[0]
@@ -59,7 +60,7 @@ class SkipRev(Hook):
def downloadPreparing(self, pyfile):
name = self._name(pyfile)
- if pyfile.statusname is "unskipped" or not name.endswith(".rev") or not ".part" in name:
+ if pyfile.statusname is _("unskipped") or not name.endswith(".rev") or not ".part" in name:
return
revtokeep = -1 if self.getConfig('mode') == "Auto" else self.getConfig('revtokeep')
@@ -77,8 +78,9 @@ class SkipRev(Hook):
pyfile.setCustomStatus("SkipRev", "skipped")
if not hasattr(pyfile.plugin, "_setup"):
+ # Work-around: inject status checker inside the preprocessing routine of the plugin
pyfile.plugin._setup = pyfile.plugin.setup
- pyfile.plugin.setup = MethodType(_setup, pyfile.plugin) #: work-around: inject status checker inside the preprocessing routine of the plugin
+ pyfile.plugin.setup = MethodType(self._setup, pyfile.plugin)
def downloadFailed(self, pyfile):
@@ -101,7 +103,7 @@ class SkipRev(Hook):
if revtokeep > -1 or pyfile.name.endswith(".rev"):
pylink.setStatus("queued")
else:
- pylink.setCustomStatus("unskipped", "queued")
+ pylink.setCustomStatus(_("unskipped"), "queued")
self.core.files.save()
pylink.release()
diff --git a/module/plugins/hooks/UnSkipOnFail.py b/module/plugins/hooks/UnSkipOnFail.py
index 1becb937a..7a5ae8e09 100644
--- a/module/plugins/hooks/UnSkipOnFail.py
+++ b/module/plugins/hooks/UnSkipOnFail.py
@@ -43,7 +43,7 @@ class UnSkipOnFail(Hook):
# the core.files-manager to save its data.
pylink = _pyfile(link)
- pylink.setCustomStatus("UnSkipOnFail", "queued")
+ pylink.setCustomStatus(_("unskipped"), "queued")
self.core.files.save()
pylink.release()
diff --git a/module/plugins/hooks/UpdateManager.py b/module/plugins/hooks/UpdateManager.py
index a0b044edb..45d666f45 100644
--- a/module/plugins/hooks/UpdateManager.py
+++ b/module/plugins/hooks/UpdateManager.py
@@ -46,13 +46,13 @@ class UpdateManager(Hook):
SERVER_URL = "http://updatemanager.pyload.org"
VERSION = re.compile(r'__version__.*=.*("|\')([\d.]+)')
- MIN_INTERVAL = 3 * 60 * 60 #: 3h minimum check interval (value is in seconds)
+ MIN_CHECK_INTERVAL = 3 * 60 * 60 #: 3 hours
def pluginConfigChanged(self, plugin, name, value):
if name == "interval":
interval = value * 60 * 60
- if self.MIN_INTERVAL <= interval != self.interval:
+ if self.MIN_CHECK_INTERVAL <= interval != self.interval:
self.core.scheduler.removeJob(self.cb)
self.interval = interval
self.initPeriodical()
@@ -67,8 +67,8 @@ class UpdateManager(Hook):
def coreReady(self):
- self.pluginConfigChanged(self.__name__, "interval", self.getConfig("interval"))
- x = lambda: self.pluginConfigChanged(self.__name__, "reloadplugins", self.getConfig("reloadplugins"))
+ self.pluginConfigChanged(self.__name__, "interval", self.getConfig('interval'))
+ x = lambda: self.pluginConfigChanged(self.__name__, "reloadplugins", self.getConfig('reloadplugins'))
self.core.scheduler.addJob(10, x, threaded=False)
@@ -78,7 +78,7 @@ class UpdateManager(Hook):
def setup(self):
self.cb2 = None
- self.interval = self.MIN_INTERVAL
+ self.interval = self.MIN_CHECK_INTERVAL
self.updating = False
self.info = {'pyload': False, 'version': None, 'plugins': False}
self.mtimes = {} #: store modification time for each plugin
@@ -122,7 +122,7 @@ class UpdateManager(Hook):
def periodical(self):
- if not self.info['pyload'] and not (self.getConfig("nodebugupdate") and self.core.debug):
+ if not self.info['pyload'] and not (self.getConfig('nodebugupdate') and self.core.debug):
self.updateThread()
@@ -138,9 +138,9 @@ class UpdateManager(Hook):
def updateThread(self):
self.updating = True
- status = self.update(onlyplugin=self.getConfig("mode") == "plugins only")
+ status = self.update(onlyplugin=self.getConfig('mode') == "plugins only")
- if status is 2 and self.getConfig("autorestart"):
+ if status is 2 and self.getConfig('autorestart'):
self.core.api.restart()
else:
self.updating = False
diff --git a/module/plugins/hooks/WindowsPhoneNotify.py b/module/plugins/hooks/WindowsPhoneNotify.py
index 010198bf1..a1068ead5 100644
--- a/module/plugins/hooks/WindowsPhoneNotify.py
+++ b/module/plugins/hooks/WindowsPhoneNotify.py
@@ -41,19 +41,19 @@ class WindowsPhoneNotify(Hook):
def newCaptchaTask(self, task):
- if not self.getConfig("notifycaptcha"):
+ if not self.getConfig('notifycaptcha'):
return
self.notify(_("Captcha"), _("New request waiting user input"))
def packageFinished(self, pypack):
- if self.getConfig("notifypackage"):
+ if self.getConfig('notifypackage'):
self.notify(_("Package finished"), pypack.name)
def allDownloadsProcessed(self):
- if not self.getConfig("notifyprocessed"):
+ if not self.getConfig('notifyprocessed'):
return
if any(True for pdata in self.core.api.getQueue() if pdata.linksdone < pdata.linkstotal):
@@ -69,14 +69,17 @@ class WindowsPhoneNotify(Hook):
@Expose
- def notify(self, event, msg=""):
- id = self.getConfig("id")
- url = self.getConfig("url")
+ def notify(self,
+ event,
+ msg="",
+ key=(self.getConfig('id'), self.getConfig('url'))):
+
+ id, url = key
if not id or not url:
return
- if self.core.isClientConnected() and not self.getConfig("ignoreclient"):
+ if self.core.isClientConnected() and not self.getConfig('ignoreclient'):
return
elapsed_time = time.time() - self.last_notify
diff --git a/module/plugins/hooks/XFileSharingPro.py b/module/plugins/hooks/XFileSharingPro.py
index 495140652..d9552051e 100644
--- a/module/plugins/hooks/XFileSharingPro.py
+++ b/module/plugins/hooks/XFileSharingPro.py
@@ -8,7 +8,7 @@ from module.plugins.Hook import Hook
class XFileSharingPro(Hook):
__name__ = "XFileSharingPro"
__type__ = "hook"
- __version__ = "0.32"
+ __version__ = "0.33"
__config__ = [("activated" , "bool", "Activated" , True ),
("use_hoster_list" , "bool", "Load listed hosters only" , False),
@@ -23,15 +23,15 @@ class XFileSharingPro(Hook):
# event_list = ["pluginConfigChanged"]
- regexp = {'hoster' : (r'https?://(?:www\.)?(?P<DOMAIN>[\w.^_]+(?:\.[a-zA-Z]{2,})(?:\:\d+)?)/(?:embed-)?\w{12}(?:\W|$)',
+ regexp = {'hoster' : (r'https?://(?:www\.)?(?P<DOMAIN>[\w\-.^_]{3,63}(?:\.[a-zA-Z]{2,})(?:\:\d+)?)/(?:embed-)?\w{12}(?:\W|$)',
r'https?://(?:[^/]+\.)?(?P<DOMAIN>%s)/(?:embed-)?\w+'),
- 'crypter': (r'https?://(?:www\.)?(?P<DOMAIN>[\w.^_]+(?:\.[a-zA-Z]{2,})(?:\:\d+)?)/(?:user|folder)s?/\w+',
+ 'crypter': (r'https?://(?:www\.)?(?P<DOMAIN>[\w\-.^_]{3,63}(?:\.[a-zA-Z]{2,})(?:\:\d+)?)/(?:user|folder)s?/\w+',
r'https?://(?:[^/]+\.)?(?P<DOMAIN>%s)/(?:user|folder)s?/\w+')}
HOSTER_BUILTIN = [#WORKING HOSTERS:
- "backin.net", "eyesfile.ca", "file4safe.com", "fileband.com", "filedwon.com",
- "fileparadox.in", "filevice.com", "hostingbulk.com", "junkyvideo.com", "linestorage.com", "ravishare.com",
- "ryushare.com", "salefiles.com", "sendmyway.com", "sharesix.com", "thefile.me", "verzend.be", "xvidstage.com",
+ "backin.net", "eyesfile.ca", "file4safe.com", "fileband.com", "filedwon.com", "fileparadox.in",
+ "filevice.com", "hostingbulk.com", "junkyvideo.com", "linestorage.com", "ravishare.com", "ryushare.com",
+ "salefiles.com", "sendmyway.com", "sharesix.com", "thefile.me", "verzend.be", "xvidstage.com",
#NOT TESTED:
"101shared.com", "4upfiles.com", "filemaze.ws", "filenuke.com", "linkzhost.com", "mightyupload.com",
"rockdizfile.com", "sharebeast.com", "sharerepo.com", "shareswift.com", "uploadbaz.com", "uploadc.com",
@@ -126,7 +126,7 @@ class XFileSharingPro(Hook):
# def downloadFailed(self, pyfile):
# if pyfile.pluginname == "BasePlugin" \
# and pyfile.hasStatus("failed") \
- # and not self.getConfig("use_hoster_list") \
+ # and not self.getConfig('use_hoster_list') \
# and self.unloadHoster("BasePlugin"):
# self.logDebug("Unloaded XFileSharingPro from BasePlugin")
# pyfile.setStatus("queued")
diff --git a/module/plugins/hooks/XMPPInterface.py b/module/plugins/hooks/XMPPInterface.py
index b8e9fc1ad..b61428392 100644
--- a/module/plugins/hooks/XMPPInterface.py
+++ b/module/plugins/hooks/XMPPInterface.py
@@ -33,14 +33,14 @@ class XMPPInterface(IRCInterface, JabberClient):
def __init__(self, core, manager):
IRCInterface.__init__(self, core, manager)
- self.jid = JID(self.getConfig("jid"))
- password = self.getConfig("pw")
+ self.jid = JID(self.getConfig('jid'))
+ password = self.getConfig('pw')
# if bare JID is provided add a resource -- it is required
if not self.jid.resource:
self.jid = JID(self.jid.node, self.jid.domain, "pyLoad")
- if self.getConfig("tls"):
+ if self.getConfig('tls'):
tls_settings = streamtls.TLSSettings(require=True, verify_peer=False)
auth = ("sasl:PLAIN", "sasl:DIGEST-MD5")
else:
@@ -67,7 +67,7 @@ class XMPPInterface(IRCInterface, JabberClient):
def packageFinished(self, pypack):
try:
- if self.getConfig("info_pack"):
+ if self.getConfig('info_pack'):
self.announce(_("Package finished: %s") % pypack.name)
except Exception:
pass
@@ -75,7 +75,7 @@ class XMPPInterface(IRCInterface, JabberClient):
def downloadFinished(self, pyfile):
try:
- if self.getConfig("info_file"):
+ if self.getConfig('info_file'):
self.announce(
_("Download finished: %(name)s @ %(plugin)s") % {"name": pyfile.name, "plugin": pyfile.pluginname})
except Exception:
@@ -139,7 +139,7 @@ class XMPPInterface(IRCInterface, JabberClient):
to_name = to_jid.as_utf8()
from_name = from_jid.as_utf8()
- names = self.getConfig("owners").split(";")
+ names = self.getConfig('owners').split(";")
if to_name in names or to_jid.node + "@" + to_jid.domain in names:
messages = []
@@ -182,7 +182,7 @@ class XMPPInterface(IRCInterface, JabberClient):
def announce(self, message):
""" send message to all owners"""
- for user in self.getConfig("owners").split(";"):
+ for user in self.getConfig('owners').split(";"):
self.logDebug("Send message to", user)
to_jid = JID(user)