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/BypassCaptcha.py7
-rwxr-xr-xmodule/plugins/hooks/Captcha9kw.py7
-rw-r--r--module/plugins/hooks/CaptchaBrotherhood.py7
-rw-r--r--module/plugins/hooks/Checksum.py7
-rw-r--r--module/plugins/hooks/ClickAndLoad.py7
-rw-r--r--module/plugins/hooks/DeathByCaptcha.py7
-rw-r--r--module/plugins/hooks/DownloadScheduler.py7
-rw-r--r--module/plugins/hooks/EasybytezCom.py17
-rw-r--r--module/plugins/hooks/ExpertDecoders.py7
-rw-r--r--module/plugins/hooks/ExternalScripts.py7
-rw-r--r--module/plugins/hooks/ExtractArchive.py7
-rw-r--r--module/plugins/hooks/FastixRu.py5
-rw-r--r--module/plugins/hooks/FreeWayMe.py2
-rw-r--r--module/plugins/hooks/IRCInterface.py7
-rw-r--r--module/plugins/hooks/ImageTyperz.py7
-rw-r--r--module/plugins/hooks/LinkdecrypterCom.py7
-rw-r--r--module/plugins/hooks/LinksnappyCom.py2
-rw-r--r--module/plugins/hooks/MegaDebridEu.py2
-rw-r--r--module/plugins/hooks/MergeFiles.py68
-rw-r--r--module/plugins/hooks/MultiHome.py7
-rw-r--r--module/plugins/hooks/MyfastfileCom.py2
-rw-r--r--module/plugins/hooks/OverLoadMe.py3
-rw-r--r--module/plugins/hooks/PremiumizeMe.py4
-rw-r--r--module/plugins/hooks/RPNetBiz.py4
-rw-r--r--module/plugins/hooks/RehostTo.py3
-rw-r--r--module/plugins/hooks/RestartSlow.py52
-rw-r--r--module/plugins/hooks/SimplyPremiumCom.py2
-rw-r--r--module/plugins/hooks/SimplydebridCom.py2
-rw-r--r--module/plugins/hooks/SkipRev.py68
-rw-r--r--module/plugins/hooks/UnSkipOnFail.py7
-rw-r--r--module/plugins/hooks/UnrestrictLi.py2
-rw-r--r--module/plugins/hooks/WindowsPhoneToastNotify.py7
-rw-r--r--module/plugins/hooks/XFileSharingPro.py13
-rw-r--r--module/plugins/hooks/ZeveraCom.py2
35 files changed, 257 insertions, 110 deletions
diff --git a/module/plugins/hooks/AlldebridCom.py b/module/plugins/hooks/AlldebridCom.py
index c06607a28..2d3c8aad7 100644
--- a/module/plugins/hooks/AlldebridCom.py
+++ b/module/plugins/hooks/AlldebridCom.py
@@ -22,6 +22,6 @@ class AlldebridCom(MultiHoster):
def getHoster(self):
https = "https" if self.getConfig("https") else "http"
- page = getURL(https + "://www.alldebrid.com/api.php?action=get_host").replace("\"", "").strip()
+ page = getURL(https + "://www.alldebrid.com/api.php", get={'action': "get_host"}).replace("\"", "").strip()
return [x.strip() for x in page.split(",") if x.strip()]
diff --git a/module/plugins/hooks/BypassCaptcha.py b/module/plugins/hooks/BypassCaptcha.py
index 7e1ea6424..a32de7f42 100644
--- a/module/plugins/hooks/BypassCaptcha.py
+++ b/module/plugins/hooks/BypassCaptcha.py
@@ -29,7 +29,7 @@ class BypassCaptchaException(Exception):
class BypassCaptcha(Hook):
__name__ = "BypassCaptcha"
__type__ = "hook"
- __version__ = "0.04"
+ __version__ = "0.05"
__config__ = [("force", "bool", "Force BC even if client is connected", False),
("passkey", "password", "Passkey", "")]
@@ -48,6 +48,11 @@ class BypassCaptcha(Hook):
GETCREDITS_URL = "http://bypasscaptcha.com/ex_left.php"
+ #@TODO: Remove in 0.4.10
+ def initPeriodical(self):
+ pass
+
+
def setup(self):
self.info = {} #@TODO: Remove in 0.4.10
diff --git a/module/plugins/hooks/Captcha9kw.py b/module/plugins/hooks/Captcha9kw.py
index ead8aec9a..33ad00c49 100755
--- a/module/plugins/hooks/Captcha9kw.py
+++ b/module/plugins/hooks/Captcha9kw.py
@@ -17,7 +17,7 @@ from module.plugins.Hook import Hook
class Captcha9kw(Hook):
__name__ = "Captcha9kw"
__type__ = "hook"
- __version__ = "0.25"
+ __version__ = "0.26"
__config__ = [("activated" , "bool" , "Activated" , True ),
("ssl" , "bool" , "Use HTTPS" , True ),
@@ -41,6 +41,11 @@ class Captcha9kw(Hook):
API_URL = "http://www.9kw.eu/index.cgi"
+ #@TODO: Remove in 0.4.10
+ def initPeriodical(self):
+ pass
+
+
def setup(self):
self.info = {} #@TODO: Remove in 0.4.10
if self.getConfig("ssl"):
diff --git a/module/plugins/hooks/CaptchaBrotherhood.py b/module/plugins/hooks/CaptchaBrotherhood.py
index 2ebeb1734..b6e38d8bb 100644
--- a/module/plugins/hooks/CaptchaBrotherhood.py
+++ b/module/plugins/hooks/CaptchaBrotherhood.py
@@ -39,7 +39,7 @@ class CaptchaBrotherhoodException(Exception):
class CaptchaBrotherhood(Hook):
__name__ = "CaptchaBrotherhood"
__type__ = "hook"
- __version__ = "0.05"
+ __version__ = "0.06"
__config__ = [("username", "str", "Username", ""),
("force", "bool", "Force CT even if client is connected", False),
@@ -54,6 +54,11 @@ class CaptchaBrotherhood(Hook):
API_URL = "http://www.captchabrotherhood.com/"
+ #@TODO: Remove in 0.4.10
+ def initPeriodical(self):
+ pass
+
+
def setup(self):
self.info = {} #@TODO: Remove in 0.4.10
diff --git a/module/plugins/hooks/Checksum.py b/module/plugins/hooks/Checksum.py
index eeda2d849..18036e020 100644
--- a/module/plugins/hooks/Checksum.py
+++ b/module/plugins/hooks/Checksum.py
@@ -40,7 +40,7 @@ def computeChecksum(local_file, algorithm):
class Checksum(Hook):
__name__ = "Checksum"
__type__ = "hook"
- __version__ = "0.14"
+ __version__ = "0.15"
__config__ = [("check_checksum", "bool", "Check checksum? (If False only size will be verified)", True),
("check_action", "fail;retry;nothing", "What to do if check fails?", "retry"),
@@ -62,6 +62,11 @@ class Checksum(Hook):
'default': r'^(?P<hash>[0-9A-Fa-f]+)\s+\*?(?P<name>.+)$'}
+ #@TODO: Remove in 0.4.10
+ def initPeriodical(self):
+ pass
+
+
def coreReady(self):
if not self.getConfig("check_checksum"):
self.logInfo(_("Checksum validation is disabled in plugin configuration"))
diff --git a/module/plugins/hooks/ClickAndLoad.py b/module/plugins/hooks/ClickAndLoad.py
index c9c0f60c0..27d99c71c 100644
--- a/module/plugins/hooks/ClickAndLoad.py
+++ b/module/plugins/hooks/ClickAndLoad.py
@@ -52,7 +52,7 @@ def forward(source, destination):
class ClickAndLoad(Hook):
__name__ = "ClickAndLoad"
__type__ = "hook"
- __version__ = "0.22"
+ __version__ = "0.23"
__config__ = [("activated", "bool", "Activated", True),
("extern", "bool", "Allow external link adding", False)]
@@ -63,6 +63,11 @@ class ClickAndLoad(Hook):
("mkaay", "mkaay@mkaay.de")]
+ #@TODO: Remove in 0.4.10
+ def initPeriodical(self):
+ pass
+
+
def coreReady(self):
self.port = int(self.config['webinterface']['port'])
if self.config['webinterface']['activated']:
diff --git a/module/plugins/hooks/DeathByCaptcha.py b/module/plugins/hooks/DeathByCaptcha.py
index df09769ce..f03ac4567 100644
--- a/module/plugins/hooks/DeathByCaptcha.py
+++ b/module/plugins/hooks/DeathByCaptcha.py
@@ -52,7 +52,7 @@ class DeathByCaptchaException(Exception):
class DeathByCaptcha(Hook):
__name__ = "DeathByCaptcha"
__type__ = "hook"
- __version__ = "0.03"
+ __version__ = "0.04"
__config__ = [("username", "str", "Username", ""),
("passkey", "password", "Password", ""),
@@ -67,6 +67,11 @@ class DeathByCaptcha(Hook):
API_URL = "http://api.dbcapi.me/api/"
+ #@TODO: Remove in 0.4.10
+ def initPeriodical(self):
+ pass
+
+
def setup(self):
self.info = {} #@TODO: Remove in 0.4.10
diff --git a/module/plugins/hooks/DownloadScheduler.py b/module/plugins/hooks/DownloadScheduler.py
index 14884426f..4996e212d 100644
--- a/module/plugins/hooks/DownloadScheduler.py
+++ b/module/plugins/hooks/DownloadScheduler.py
@@ -10,7 +10,7 @@ from module.plugins.Hook import Hook
class DownloadScheduler(Hook):
__name__ = "DownloadScheduler"
__type__ = "hook"
- __version__ = "0.21"
+ __version__ = "0.22"
__config__ = [("timetable", "str", "List time periods as hh:mm full or number(kB/s)",
"0:00 full, 7:00 250, 10:00 0, 17:00 150"),
@@ -22,6 +22,11 @@ class DownloadScheduler(Hook):
("stickell", "l.stickell@yahoo.it")]
+ #@TODO: Remove in 0.4.10
+ def initPeriodical(self):
+ pass
+
+
def setup(self):
self.cb = None # callback to scheduler job; will be by removed hookmanager when hook unloaded
diff --git a/module/plugins/hooks/EasybytezCom.py b/module/plugins/hooks/EasybytezCom.py
index 89deaed2b..3faa4fa1a 100644
--- a/module/plugins/hooks/EasybytezCom.py
+++ b/module/plugins/hooks/EasybytezCom.py
@@ -23,14 +23,17 @@ class EasybytezCom(MultiHoster):
user = self.account.selectAccount()[0]
try:
- req = self.account.getAccountRequest(user)
+ req = self.account.getAccountRequest(user)
page = req.load("http://www.easybytez.com")
- m = re.search(r'</textarea>\s*Supported sites:(.*)', page)
- return m.group(1).split(',')
+ hosters = re.search(r'</textarea>\s*Supported sites:(.*)', page).group(1).split(',')
+
except Exception, e:
- self.logDebug(e)
self.logWarning(_("Unable to load supported hoster list, using last known"))
- return ["bitshare.com", "crocko.com", "ddlstorage.com", "depositfiles.com", "extabit.com", "hotfile.com",
- "mediafire.com", "netload.in", "rapidgator.net", "rapidshare.com", "uploading.com", "uload.to",
- "uploaded.to"]
+ self.logDebug(e)
+
+ hosters = ["bitshare.com", "crocko.com", "ddlstorage.com", "depositfiles.com", "extabit.com", "hotfile.com",
+ "mediafire.com", "netload.in", "rapidgator.net", "rapidshare.com", "uploading.com", "uload.to",
+ "uploaded.to"]
+ finally:
+ return hosters
diff --git a/module/plugins/hooks/ExpertDecoders.py b/module/plugins/hooks/ExpertDecoders.py
index 1b9459eb6..1784a270c 100644
--- a/module/plugins/hooks/ExpertDecoders.py
+++ b/module/plugins/hooks/ExpertDecoders.py
@@ -15,7 +15,7 @@ from module.plugins.Hook import Hook
class ExpertDecoders(Hook):
__name__ = "ExpertDecoders"
__type__ = "hook"
- __version__ = "0.01"
+ __version__ = "0.02"
__config__ = [("force", "bool", "Force CT even if client is connected", False),
("passkey", "password", "Access key", "")]
@@ -29,6 +29,11 @@ class ExpertDecoders(Hook):
API_URL = "http://www.fasttypers.org/imagepost.ashx"
+ #@TODO: Remove in 0.4.10
+ def initPeriodical(self):
+ pass
+
+
def setup(self):
self.info = {} #@TODO: Remove in 0.4.10
diff --git a/module/plugins/hooks/ExternalScripts.py b/module/plugins/hooks/ExternalScripts.py
index 5db2037fa..a35e47c03 100644
--- a/module/plugins/hooks/ExternalScripts.py
+++ b/module/plugins/hooks/ExternalScripts.py
@@ -13,7 +13,7 @@ from module.utils import save_join
class ExternalScripts(Hook):
__name__ = "ExternalScripts"
__type__ = "hook"
- __version__ = "0.24"
+ __version__ = "0.25"
__config__ = [("activated", "bool", "Activated", True)]
@@ -29,6 +29,11 @@ class ExternalScripts(Hook):
"allDownloadsFinished", "allDownloadsProcessed"]
+ #@TODO: Remove in 0.4.10
+ def initPeriodical(self):
+ pass
+
+
def setup(self):
self.scripts = {}
diff --git a/module/plugins/hooks/ExtractArchive.py b/module/plugins/hooks/ExtractArchive.py
index 07db13aa1..fc77dbdf6 100644
--- a/module/plugins/hooks/ExtractArchive.py
+++ b/module/plugins/hooks/ExtractArchive.py
@@ -59,7 +59,7 @@ from module.utils import save_join, fs_encode
class ExtractArchive(Hook):
__name__ = "ExtractArchive"
__type__ = "hook"
- __version__ = "0.18"
+ __version__ = "0.19"
__config__ = [("activated", "bool", "Activated", True),
("fullpath", "bool", "Extract full path", True),
@@ -83,6 +83,11 @@ class ExtractArchive(Hook):
event_list = ["allDownloadsProcessed"]
+ #@TODO: Remove in 0.4.10
+ def initPeriodical(self):
+ pass
+
+
def setup(self):
self.plugins = []
self.passwords = []
diff --git a/module/plugins/hooks/FastixRu.py b/module/plugins/hooks/FastixRu.py
index fe89a190c..cec6c6f1f 100644
--- a/module/plugins/hooks/FastixRu.py
+++ b/module/plugins/hooks/FastixRu.py
@@ -20,8 +20,9 @@ class FastixRu(MultiHoster):
def getHoster(self):
- page = getURL(
- "http://fastix.ru/api_v2/?apikey=5182964c3f8f9a7f0b00000a_kelmFB4n1IrnCDYuIFn2y&sub=allowed_sources")
+ page = getURL("http://fastix.ru/api_v2",
+ get={'apikey': "5182964c3f8f9a7f0b00000a_kelmFB4n1IrnCDYuIFn2y",
+ 'sub' : "allowed_sources"})
host_list = json_loads(page)
host_list = host_list['allow']
return host_list
diff --git a/module/plugins/hooks/FreeWayMe.py b/module/plugins/hooks/FreeWayMe.py
index 1d7dd369e..5abec29ba 100644
--- a/module/plugins/hooks/FreeWayMe.py
+++ b/module/plugins/hooks/FreeWayMe.py
@@ -20,6 +20,6 @@ class FreeWayMe(MultiHoster):
def getHoster(self):
- hostis = getURL("https://www.free-way.me/ajax/jd.php", get={"id": 3}).replace("\"", "").strip()
+ hostis = getURL("https://www.free-way.me/ajax/jd.php", get={'id': 3}).replace("\"", "").strip()
self.logDebug("Hosters", hostis)
return [x.strip() for x in hostis.split(",") if x.strip()]
diff --git a/module/plugins/hooks/IRCInterface.py b/module/plugins/hooks/IRCInterface.py
index 98edc2f7f..efd4e411d 100644
--- a/module/plugins/hooks/IRCInterface.py
+++ b/module/plugins/hooks/IRCInterface.py
@@ -20,7 +20,7 @@ from module.utils import formatSize
class IRCInterface(Thread, Hook):
__name__ = "IRCInterface"
__type__ = "hook"
- __version__ = "0.12"
+ __version__ = "0.13"
__config__ = [("host", "str", "IRC-Server Address", "Enter your server here!"),
("port", "int", "IRC-Server Port", 6667),
@@ -44,6 +44,11 @@ class IRCInterface(Thread, Hook):
self.setDaemon(True)
+ #@TODO: Remove in 0.4.10
+ def initPeriodical(self):
+ pass
+
+
def coreReady(self):
self.abort = False
self.more = []
diff --git a/module/plugins/hooks/ImageTyperz.py b/module/plugins/hooks/ImageTyperz.py
index b00c5118f..f89d64c37 100644
--- a/module/plugins/hooks/ImageTyperz.py
+++ b/module/plugins/hooks/ImageTyperz.py
@@ -33,7 +33,7 @@ class ImageTyperzException(Exception):
class ImageTyperz(Hook):
__name__ = "ImageTyperz"
__type__ = "hook"
- __version__ = "0.04"
+ __version__ = "0.05"
__config__ = [("username", "str", "Username", ""),
("passkey", "password", "Password", ""),
@@ -50,6 +50,11 @@ class ImageTyperz(Hook):
GETCREDITS_URL = "http://captchatypers.com/Forms/RequestBalance.ashx"
+ #@TODO: Remove in 0.4.10
+ def initPeriodical(self):
+ pass
+
+
def setup(self):
self.info = {} #@TODO: Remove in 0.4.10
diff --git a/module/plugins/hooks/LinkdecrypterCom.py b/module/plugins/hooks/LinkdecrypterCom.py
index 0c5f6e754..b0ce335d0 100644
--- a/module/plugins/hooks/LinkdecrypterCom.py
+++ b/module/plugins/hooks/LinkdecrypterCom.py
@@ -10,13 +10,18 @@ from module.utils import remove_chars
class LinkdecrypterCom(Hook):
__name__ = "LinkdecrypterCom"
__type__ = "hook"
- __version__ = "0.20"
+ __version__ = "0.21"
__description__ = """Linkdecrypter.com hook plugin"""
__license__ = "GPLv3"
__authors__ = [("zoidberg", "zoidberg@mujmail.cz")]
+ #@TODO: Remove in 0.4.10
+ def initPeriodical(self):
+ pass
+
+
def coreReady(self):
try:
self.loadPatterns()
diff --git a/module/plugins/hooks/LinksnappyCom.py b/module/plugins/hooks/LinksnappyCom.py
index aa130f416..82edc30fd 100644
--- a/module/plugins/hooks/LinksnappyCom.py
+++ b/module/plugins/hooks/LinksnappyCom.py
@@ -21,7 +21,7 @@ class LinksnappyCom(MultiHoster):
def getHoster(self):
- json_data = getURL('http://gen.linksnappy.com/lseAPI.php?act=FILEHOSTS')
+ json_data = getURL("http://gen.linksnappy.com/lseAPI.php", get={'act': "FILEHOSTS"})
json_data = json_loads(json_data)
return json_data['return'].keys()
diff --git a/module/plugins/hooks/MegaDebridEu.py b/module/plugins/hooks/MegaDebridEu.py
index d8e338aec..4f627b7e9 100644
--- a/module/plugins/hooks/MegaDebridEu.py
+++ b/module/plugins/hooks/MegaDebridEu.py
@@ -18,7 +18,7 @@ class MegaDebridEu(MultiHoster):
def getHoster(self):
- reponse = getURL('http://www.mega-debrid.eu/api.php?action=getHosters')
+ reponse = getURL("http://www.mega-debrid.eu/api.php", get={'action': "getHosters"})
json_data = json_loads(reponse)
if json_data['response_code'] == "ok":
diff --git a/module/plugins/hooks/MergeFiles.py b/module/plugins/hooks/MergeFiles.py
index e6f8bb26f..4de45f958 100644
--- a/module/plugins/hooks/MergeFiles.py
+++ b/module/plugins/hooks/MergeFiles.py
@@ -1,5 +1,7 @@
# -*- coding: utf-8 -*-
+from __future__ import with_statement
+
import os
import re
@@ -12,7 +14,7 @@ from module.utils import save_join, fs_encode
class MergeFiles(Hook):
__name__ = "MergeFiles"
__type__ = "hook"
- __version__ = "0.12"
+ __version__ = "0.13"
__config__ = [("activated", "bool", "Activated", True)]
@@ -24,6 +26,11 @@ class MergeFiles(Hook):
BUFFER_SIZE = 4096
+ #@TODO: Remove in 0.4.10
+ def initPeriodical(self):
+ pass
+
+
def setup(self):
# nothing to do
pass
@@ -48,32 +55,35 @@ class MergeFiles(Hook):
for name, file_list in files.iteritems():
self.logInfo(_("Starting merging of"), name)
- final_file = open(save_join(download_folder, name), "wb")
-
- for splitted_file in file_list:
- self.logDebug("Merging part", splitted_file)
- pyfile = self.core.files.getFile(fid_dict[splitted_file])
- pyfile.setStatus("processing")
- try:
- s_file = open(os.path.join(download_folder, splitted_file), "rb")
- size_written = 0
- s_file_size = int(os.path.getsize(os.path.join(download_folder, splitted_file)))
- while True:
- f_buffer = s_file.read(self.BUFFER_SIZE)
- if f_buffer:
- final_file.write(f_buffer)
- size_written += self.BUFFER_SIZE
- pyfile.setProgress((size_written * 100) / s_file_size)
- else:
- break
- s_file.close()
- self.logDebug("Finished merging part", splitted_file)
- except Exception, e:
- print_exc()
- finally:
- pyfile.setProgress(100)
- pyfile.setStatus("finished")
- pyfile.release()
-
- final_file.close()
+
+ with open(save_join(download_folder, name), "wb") as final_file:
+ for splitted_file in file_list:
+ self.logDebug("Merging part", splitted_file)
+
+ pyfile = self.core.files.getFile(fid_dict[splitted_file])
+
+ pyfile.setStatus("processing")
+
+ try:
+ with open(os.path.join(download_folder, splitted_file), "rb") as s_file:
+ size_written = 0
+ s_file_size = int(os.path.getsize(os.path.join(download_folder, splitted_file)))
+ while True:
+ f_buffer = s_file.read(self.BUFFER_SIZE)
+ if f_buffer:
+ final_file.write(f_buffer)
+ size_written += self.BUFFER_SIZE
+ pyfile.setProgress((size_written * 100) / s_file_size)
+ else:
+ break
+ self.logDebug("Finished merging part", splitted_file)
+
+ except Exception, e:
+ print_exc()
+
+ finally:
+ pyfile.setProgress(100)
+ pyfile.setStatus("finished")
+ pyfile.release()
+
self.logInfo(_("Finished merging of"), name)
diff --git a/module/plugins/hooks/MultiHome.py b/module/plugins/hooks/MultiHome.py
index 228e6027d..105a42abd 100644
--- a/module/plugins/hooks/MultiHome.py
+++ b/module/plugins/hooks/MultiHome.py
@@ -8,7 +8,7 @@ from module.plugins.Hook import Hook
class MultiHome(Hook):
__name__ = "MultiHome"
__type__ = "hook"
- __version__ = "0.11"
+ __version__ = "0.12"
__config__ = [("interfaces", "str", "Interfaces", "None")]
@@ -17,6 +17,11 @@ class MultiHome(Hook):
__authors__ = [("mkaay", "mkaay@mkaay.de")]
+ #@TODO: Remove in 0.4.10
+ def initPeriodical(self):
+ pass
+
+
def setup(self):
self.register = {}
self.interfaces = []
diff --git a/module/plugins/hooks/MyfastfileCom.py b/module/plugins/hooks/MyfastfileCom.py
index 07731f1c2..0cf2c6c22 100644
--- a/module/plugins/hooks/MyfastfileCom.py
+++ b/module/plugins/hooks/MyfastfileCom.py
@@ -21,7 +21,7 @@ class MyfastfileCom(MultiHoster):
def getHoster(self):
- json_data = getURL('http://myfastfile.com/api.php?hosts', decode=True)
+ json_data = getURL("http://myfastfile.com/api.php", get={'hosts': ""}, decode=True)
self.logDebug("JSON data", json_data)
json_data = json_loads(json_data)
diff --git a/module/plugins/hooks/OverLoadMe.py b/module/plugins/hooks/OverLoadMe.py
index f4cbdd7fe..baa9b0e0a 100644
--- a/module/plugins/hooks/OverLoadMe.py
+++ b/module/plugins/hooks/OverLoadMe.py
@@ -23,8 +23,7 @@ class OverLoadMe(MultiHoster):
def getHoster(self):
https = "https" if self.getConfig("https") else "http"
page = getURL(https + "://api.over-load.me/hoster.php",
- get={"auth": "0001-cb1f24dadb3aa487bda5afd3b76298935329be7700cd7-5329be77-00cf-1ca0135f"}
- ).replace("\"", "").strip()
+ get={'auth': "0001-cb1f24dadb3aa487bda5afd3b76298935329be7700cd7-5329be77-00cf-1ca0135f"}).replace("\"", "").strip()
self.logDebug("Hosterlist", page)
return [x.strip() for x in page.split(",") if x.strip()]
diff --git a/module/plugins/hooks/PremiumizeMe.py b/module/plugins/hooks/PremiumizeMe.py
index ec21fbcb4..c18e8cf8e 100644
--- a/module/plugins/hooks/PremiumizeMe.py
+++ b/module/plugins/hooks/PremiumizeMe.py
@@ -30,8 +30,8 @@ class PremiumizeMe(MultiHoster):
# Get supported hosters list from premiumize.me using the
# json API v1 (see https://secure.premiumize.me/?show=api)
- answer = getURL("https://api.premiumize.me/pm-api/v1.php?method=hosterlist&params[login]=%s&params[pass]=%s" % (
- user, data['password']))
+ answer = getURL("https://api.premiumize.me/pm-api/v1.php"
+ get={'method': "hosterlist", 'params[login]': user, 'params[pass]': data['password']})
data = json_loads(answer)
# If account is not valid thera are no hosters available
diff --git a/module/plugins/hooks/RPNetBiz.py b/module/plugins/hooks/RPNetBiz.py
index 01591354d..917cd02de 100644
--- a/module/plugins/hooks/RPNetBiz.py
+++ b/module/plugins/hooks/RPNetBiz.py
@@ -8,7 +8,7 @@ from module.plugins.internal.MultiHoster import MultiHoster
class RPNetBiz(MultiHoster):
__name__ = "RPNetBiz"
__type__ = "hook"
- __version__ = "0.1"
+ __version__ = "0.10"
__config__ = [("hosterListMode", "all;listed;unlisted", "Use for hosters (if supported):", "all"),
("hosterList", "str", "Hoster list (comma separated)", ""),
@@ -29,7 +29,7 @@ class RPNetBiz(MultiHoster):
(user, data) = self.account.selectAccount()
res = getURL("https://premium.rpnet.biz/client_api.php",
- get={"username": user, "password": data['password'], "action": "showHosterList"})
+ get={'username': user, 'password': data['password'], 'action': "showHosterList"})
hoster_list = json_loads(res)
# If account is not valid thera are no hosters available
diff --git a/module/plugins/hooks/RehostTo.py b/module/plugins/hooks/RehostTo.py
index c58abf3f3..1bf7d2555 100644
--- a/module/plugins/hooks/RehostTo.py
+++ b/module/plugins/hooks/RehostTo.py
@@ -20,7 +20,8 @@ class RehostTo(MultiHoster):
def getHoster(self):
- page = getURL("http://rehost.to/api.php?cmd=get_supported_och_dl&long_ses=%s" % self.long_ses)
+ page = getURL("http://rehost.to/api.php",
+ get={'cmd': "get_supported_och_dl", 'long_ses': self.long_ses})
return [x.strip() for x in page.replace("\"", "").split(",")]
diff --git a/module/plugins/hooks/RestartSlow.py b/module/plugins/hooks/RestartSlow.py
index 0e9e213de..587799235 100644
--- a/module/plugins/hooks/RestartSlow.py
+++ b/module/plugins/hooks/RestartSlow.py
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
-from pycurl import LOW_SPEED_LIMIT, LOW_SPEED_TIME
+import pycurl
from module.plugins.Hook import Hook
@@ -8,13 +8,13 @@ from module.plugins.Hook import Hook
class RestartSlow(Hook):
__name__ = "RestartSlow"
__type__ = "hook"
- __version__ = "0.01"
+ __version__ = "0.02"
- __config__ = [("free_limit" , "int", "Transfer speed threshold in kilobytes" , 100 ),
- ("free_time" , "int", "Sample interval in minutes" , 5 ),
- ("premium_limit", "int", "Transfer speed threshold for premium download in kilobytes", 300 ),
- ("premium_time" , "int", "Sample interval for premium download in minutes" , 2 ),
- ("safe" , "bool", "Restart if download is resumable" , True)]
+ __config__ = [("free_limit" , "int" , "Transfer speed threshold in kilobytes" , 100 ),
+ ("free_time" , "int" , "Sample interval in minutes" , 5 ),
+ ("premium_limit", "int" , "Transfer speed threshold for premium download in kilobytes", 300 ),
+ ("premium_time" , "int" , "Sample interval for premium download in minutes" , 2 ),
+ ("safe_mode" , "bool", "Don't restart if download is not resumable" , True)]
__description__ = """Restart slow downloads"""
__license__ = "GPLv3"
@@ -24,16 +24,38 @@ class RestartSlow(Hook):
event_list = ["downloadStarts"]
- def downloadStarts(self, pyfile, url, filename):
- if self.getConfig("safe") and not pyfile.plugin.resumeDownload:
+ def setup(self):
+ self.info = {'chunk': {}}
+
+
+ def initPeriodical(self):
+ pass
+
+
+ def periodical(self):
+ if not self.pyfile.req.dl:
return
- type = "premium" if pyfile.plugin.premium else "free"
+ if self.getConfig("safe_mode") and not self.pyfile.plugin.resumeDownload:
+ time = 30
+ limit = 5
+ else:
+ type = "premium" if self.pyfile.plugin.premium else "free"
+ time = max(30, self.getConfig("%s_time" % type) * 60)
+ limit = max(5, self.getConfig("%s_limit" % type) * 1024)
- pyfile.plugin.req.http.c.setopt(LOW_SPEED_TIME, max(30, self.getConfig("%s_time" % type) * 60))
- pyfile.plugin.req.http.c.setopt(LOW_SPEED_LIMIT, max(5, self.getConfig("%s_limit" % type) * 1024))
+ chunks = [chunk for chunk in self.pyfile.req.dl.chunks \
+ if chunk.id not in self.info['chunk'] or self.info['chunk'][chunk.id] not is (time, limit)]
+ for chunk in chunks:
+ chunk.c.setopt(pycurl.LOW_SPEED_TIME , time)
+ chunk.c.setopt(pycurl.LOW_SPEED_LIMIT, limit)
+
+ self.info['chunk'][chunk.id] = (time, limit)
+
+
+ def downloadStarts(self, pyfile, url, filename):
+ if self.cb or (self.getConfig("safe_mode") and not pyfile.plugin.resumeDownload):
+ return
- def downloadFailed(self, pyfile):
- pyfile.plugin.req.http.c.setopt(LOW_SPEED_TIME, 30)
- pyfile.plugin.req.http.c.setopt(LOW_SPEED_LIMIT, 5)
+ super(RestartSlow, self).initPeriodical()
diff --git a/module/plugins/hooks/SimplyPremiumCom.py b/module/plugins/hooks/SimplyPremiumCom.py
index ba0543691..cc7e9183c 100644
--- a/module/plugins/hooks/SimplyPremiumCom.py
+++ b/module/plugins/hooks/SimplyPremiumCom.py
@@ -22,7 +22,7 @@ class SimplyPremiumCom(MultiHoster):
def getHoster(self):
- json_data = getURL('http://www.simply-premium.com/api/hosts.php?format=json&online=1')
+ json_data = getURL("http://www.simply-premium.com/api/hosts.php", get={'format': "json", 'online': 1})
json_data = json_loads(json_data)
host_list = [element['regex'] for element in json_data['result']]
diff --git a/module/plugins/hooks/SimplydebridCom.py b/module/plugins/hooks/SimplydebridCom.py
index 3fbc0459c..173206e75 100644
--- a/module/plugins/hooks/SimplydebridCom.py
+++ b/module/plugins/hooks/SimplydebridCom.py
@@ -18,5 +18,5 @@ class SimplydebridCom(MultiHoster):
def getHoster(self):
- page = getURL("http://simply-debrid.com/api.php?list=1")
+ page = getURL("http://simply-debrid.com/api.php", get={'list': 1})
return [x.strip() for x in page.rstrip(';').replace("\"", "").split(";")]
diff --git a/module/plugins/hooks/SkipRev.py b/module/plugins/hooks/SkipRev.py
index feed16a2b..107740a3d 100644
--- a/module/plugins/hooks/SkipRev.py
+++ b/module/plugins/hooks/SkipRev.py
@@ -1,6 +1,7 @@
# -*- coding: utf-8 -*-
-import re
+from urllib import unquote
+from urlparse import urlparse
from module.plugins.Hook import Hook
from module.plugins.Plugin import SkipDownload
@@ -9,48 +10,73 @@ from module.plugins.Plugin import SkipDownload
class SkipRev(Hook):
__name__ = "SkipRev"
__type__ = "hook"
- __version__ = "0.11"
+ __version__ = "0.15"
- __config__ = [("auto", "bool", "Automatically keep all rev files needed by package", True),
- ("tokeep", "int" , "Min number of rev files to keep for package" , 1),
- ("unskip", "bool", "Restart a skipped rev when download fails" , True)]
+ __config__ = [("tokeep", "int", "Number of rev files to keep for package (-1 to auto)", -1)]
__description__ = """Skip files ending with extension rev"""
__license__ = "GPLv3"
__authors__ = [("Walter Purcaro", "vuolter@gmail.com")]
- event_list = ["downloadStarts"]
+ #@TODO: Remove in 0.4.10
+ def initPeriodical(self):
+ pass
- REV = re.compile(r'\.part(\d+)\.rev$')
+ def _setup(self):
+ super(self.pyfile.plugin, self).setup()
+ if self.pyfile.hasStatus("skipped"):
+ raise SkipDownload(self.pyfile.getStatusName() or self.pyfile.pluginname)
- def downloadStarts(self, pyfile, url, filename):
- if self.REV.search(pyfile.name) is None or pyfile.getStatusName() is "unskipped":
+
+ def pyname(self, pyfile):
+ url = pyfile.url
+ plugin = pyfile.plugin
+
+ if hasattr(plugin, "info") and 'name' in plugin.info and plugin.info['name']:
+ name = plugin.info['name']
+
+ elif hasattr(plugin, "parseInfos"):
+ name = next(plugin.parseInfos([url]))['name']
+
+ elif hasattr(plugin, "getInfo"): #@NOTE: if parseInfos was not found, getInfo should be missing too
+ name = plugin.getInfo(url)['name']
+
+ else:
+ self.logWarning("Unable to grab file name")
+ name = urlparse(unquote(url)).path.split('/')[-1])
+
+ return name
+
+
+ def downloadPreparing(self, pyfile):
+ if pyfile.getStatusName() is "unskipped" or not pyname(pyfile).endswith(".rev"):
return
tokeep = self.getConfig("tokeep")
- if tokeep > 0:
+ if tokeep:
saved = [True for link in pyfile.package().getChildren() \
- if link.hasStatus("finished") or link.hasStatus("downloading") and self.REV.search(link.name)].count(True)
+ if link.name.endswith(".rev") and (link.hasStatus("finished") or link.hasStatus("downloading"))].count(True)
- if saved < tokeep:
+ if not saved or saved < tokeep: #: keep one rev at least in auto mode
return
- raise SkipDownload("SkipRev")
+ pyfile.setCustomStatus("SkipRev", "skipped")
+ pyfile.plugin.setup = _setup #: work-around: inject status checker inside the preprocessing routine of the plugin
def downloadFailed(self, pyfile):
- if self.getConfig("auto") is False:
-
- if self.getConfig("unskip") is False:
- return
+ tokeep = self.getConfig("tokeep")
- if self.REV.search(pyfile.name) is None:
- return
+ if not tokeep:
+ return
for link in pyfile.package().getChildren():
- if link.hasStatus("skipped") and self.REV.search(link.name):
- link.setCustomStatus("unskipped", "queued")
+ if link.hasStatus("skipped") and link.name.endswith(".rev"):
+ if tokeep > -1 or pyfile.name.endswith(".rev"):
+ link.setStatus("queued")
+ else:
+ link.setCustomStatus("unskipped", "queued")
return
diff --git a/module/plugins/hooks/UnSkipOnFail.py b/module/plugins/hooks/UnSkipOnFail.py
index f97d12431..d3baccfc2 100644
--- a/module/plugins/hooks/UnSkipOnFail.py
+++ b/module/plugins/hooks/UnSkipOnFail.py
@@ -10,7 +10,7 @@ from module.utils import fs_encode
class UnSkipOnFail(Hook):
__name__ = "UnSkipOnFail"
__type__ = "hook"
- __version__ = "0.01"
+ __version__ = "0.02"
__config__ = [("activated", "bool", "Activated", True)]
@@ -19,6 +19,11 @@ class UnSkipOnFail(Hook):
__authors__ = [("hagg", None)]
+ #@TODO: Remove in 0.4.10
+ def initPeriodical(self):
+ pass
+
+
def downloadFailed(self, pyfile):
pyfile_name = basename(pyfile.name)
pid = pyfile.package().id
diff --git a/module/plugins/hooks/UnrestrictLi.py b/module/plugins/hooks/UnrestrictLi.py
index 295cfaf5a..d87265ef4 100644
--- a/module/plugins/hooks/UnrestrictLi.py
+++ b/module/plugins/hooks/UnrestrictLi.py
@@ -22,7 +22,7 @@ class UnrestrictLi(MultiHoster):
def getHoster(self):
- json_data = getURL('http://unrestrict.li/api/jdownloader/hosts.php?format=json')
+ json_data = getURL("http://unrestrict.li/api/jdownloader/hosts.php", get={'format': "json"})
json_data = json_loads(json_data)
host_list = [element['host'] for element in json_data['result']]
diff --git a/module/plugins/hooks/WindowsPhoneToastNotify.py b/module/plugins/hooks/WindowsPhoneToastNotify.py
index 053ea47d0..ed305778c 100644
--- a/module/plugins/hooks/WindowsPhoneToastNotify.py
+++ b/module/plugins/hooks/WindowsPhoneToastNotify.py
@@ -9,7 +9,7 @@ from module.plugins.Hook import Hook
class WindowsPhoneToastNotify(Hook):
__name__ = "WindowsPhoneToastNotify"
__type__ = "hook"
- __version__ = "0.02"
+ __version__ = "0.03"
__config__ = [("force", "bool", "Force even if client is connected", False),
("pushId", "str", "pushId", ""),
@@ -21,6 +21,11 @@ class WindowsPhoneToastNotify(Hook):
__authors__ = [("Andy Voigt", "phone-support@hotmail.de")]
+ #@TODO: Remove in 0.4.10
+ def initPeriodical(self):
+ pass
+
+
def setup(self):
self.info = {} #@TODO: Remove in 0.4.10
diff --git a/module/plugins/hooks/XFileSharingPro.py b/module/plugins/hooks/XFileSharingPro.py
index ab5086664..e9b1b454e 100644
--- a/module/plugins/hooks/XFileSharingPro.py
+++ b/module/plugins/hooks/XFileSharingPro.py
@@ -8,11 +8,11 @@ from module.plugins.Hook import Hook
class XFileSharingPro(Hook):
__name__ = "XFileSharingPro"
__type__ = "hook"
- __version__ = "0.24"
+ __version__ = "0.26"
__config__ = [("activated", "bool", "Activated", True),
("use_hoster_list", "bool", "Load listed hosters only", True),
- ("use_crypter_list", "bool", "Load listed crypters only", True),
+ ("use_crypter_list", "bool", "Load listed crypters only", False),
("use_builtin_list", "bool", "Load built-in plugin list", True),
("hoster_list", "str", "Hoster list (comma separated)", ""),
("crypter_list", "str", "Crypter list (comma separated)", "")]
@@ -23,9 +23,9 @@ class XFileSharingPro(Hook):
# event_list = ["pluginConfigChanged"]
- regexp = {'hoster' : (r'https?://(?:www\.)?([\w^_]+(?:\.[a-zA-Z]{2,})+(?:\:\d+)?)/(?:embed-)?\w{12}(?:\W|$)',
+ regexp = {'hoster' : (r'https?://(?:www\.)?([\w.^_]+(?:\.[a-zA-Z]{2,})(?:\:\d+)?)/(?:embed-)?\w{12}(?:\W|$)',
r'https?://(?:[^/]+\.)?(%s)/(?:embed-)?\w+'),
- 'crypter': (r'https?://(?:www\.)?([\w^_]+(?:\.[a-zA-Z]{2,})+(?:\:\d+)?)/(?:user|folder)s?/\w+',
+ 'crypter': (r'https?://(?:www\.)?([\w.^_]+(?:\.[a-zA-Z]{2,})(?:\:\d+)?)/(?:user|folder)s?/\w+',
r'https?://(?:[^/]+\.)?(%s)/(?:user|folder)s?/\w+')}
HOSTER_LIST = [#WORKING HOSTERS:
@@ -44,6 +44,11 @@ class XFileSharingPro(Hook):
# self.loadPattern()
+ #@TODO: Remove in 0.4.10
+ def initPeriodical(self):
+ pass
+
+
def coreReady(self):
self.loadPattern()
diff --git a/module/plugins/hooks/ZeveraCom.py b/module/plugins/hooks/ZeveraCom.py
index 6ea05de4f..6fafb9666 100644
--- a/module/plugins/hooks/ZeveraCom.py
+++ b/module/plugins/hooks/ZeveraCom.py
@@ -18,5 +18,5 @@ class ZeveraCom(MultiHoster):
def getHoster(self):
- page = getURL("http://www.zevera.com/jDownloader.ashx?cmd=gethosters")
+ page = getURL("http://www.zevera.com/jDownloader.ashx", get={'cmd': "gethosters"})
return [x.strip() for x in page.replace("\"", "").split(",")]