From 0e9ba8a76e88ee98497db8dc7f25d8d160f10fa4 Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Wed, 8 Oct 2014 00:30:48 +0200 Subject: [XFSPAccount] Fix missing COOKIE typecheck --- module/plugins/internal/XFSPAccount.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'module') diff --git a/module/plugins/internal/XFSPAccount.py b/module/plugins/internal/XFSPAccount.py index b2fb6179e..2cda54615 100644 --- a/module/plugins/internal/XFSPAccount.py +++ b/module/plugins/internal/XFSPAccount.py @@ -13,7 +13,7 @@ from module.utils import parseFileSize class XFSPAccount(Account): __name__ = "XFSPAccount" __type__ = "account" - __version__ = "0.09" + __version__ = "0.10" __description__ = """XFileSharingPro base account plugin""" __authors__ = [("zoidberg", "zoidberg@mujmail.cz"), @@ -77,7 +77,8 @@ class XFSPAccount(Account): def login(self, user, data, req): - set_cookies(req.cj, self.COOKIES) + if isinstance(self.COOKIES, list): + set_cookies(req.cj, self.COOKIES) url = urljoin(self.HOSTER_URL, "login.html") html = req.load(url, decode=True) -- cgit v1.2.3 From b7bc4c7a920cb6e768948d8489af40bf36a72810 Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Wed, 8 Oct 2014 16:04:14 +0200 Subject: [XFileSharingPro] Rename to XFSPHoster --- module/plugins/hoster/XFileSharingPro.py | 361 ------------------------------- module/plugins/internal/XFSPHoster.py | 361 +++++++++++++++++++++++++++++++ 2 files changed, 361 insertions(+), 361 deletions(-) delete mode 100644 module/plugins/hoster/XFileSharingPro.py create mode 100644 module/plugins/internal/XFSPHoster.py (limited to 'module') diff --git a/module/plugins/hoster/XFileSharingPro.py b/module/plugins/hoster/XFileSharingPro.py deleted file mode 100644 index d9f311fa1..000000000 --- a/module/plugins/hoster/XFileSharingPro.py +++ /dev/null @@ -1,361 +0,0 @@ -# -*- coding: utf-8 -*- - -import re - -from pycurl import FOLLOWLOCATION, LOW_SPEED_TIME -from random import random -from urllib import unquote -from urlparse import urlparse - -from module.network.RequestFactory import getURL -from module.plugins.internal.CaptchaService import ReCaptcha, SolveMedia -from module.plugins.internal.SimpleHoster import create_getInfo, PluginParseError, replace_patterns, set_cookies, SimpleHoster -from module.utils import html_unescape - - -class XFileSharingPro(SimpleHoster): - """ - Common base for XFileSharingPro hosters like EasybytezCom, CramitIn, FiledinoCom... - Some hosters may work straight away when added to __pattern__ - However, most of them will NOT work because they are either down or running a customized version - """ - __name__ = "XFileSharingPro" - __type__ = "hoster" - __version__ = "0.37" - - __pattern__ = r'^unmatchable$' - - __description__ = """XFileSharingPro base hoster plugin""" - __authors__ = [("zoidberg", "zoidberg@mujmail.cz"), - ("stickell", "l.stickell@yahoo.it"), - ("Walter Purcaro", "vuolter@gmail.com")] - - - HOSTER_NAME = None - - FILE_URL_REPLACEMENTS = [(r'/embed-(\w{12}).*', r'/\1')] #: support embedded files - - COOKIES = [(HOSTER_NAME, "lang", "english")] - - FILE_INFO_PATTERN = r'Filename:(?P[^<]+)\s*.*?\((?P[^<]+)\)' - FILE_NAME_PATTERN = r'[\d\.\,]+) ?(?P\w+)?\)' - - OFFLINE_PATTERN = r'>\s*\w+ (Not Found|file (was|has been) removed)' - TEMP_OFFLINE_PATTERN = r'>\s*\w+ server (is in )?(maintenance|maintainance)' - - WAIT_PATTERN = r'.*?>(\d+)' - - OVR_LINK_PATTERN = r'

Download Link

\s*]*>([^<]+)' - LINK_PATTERN = None #: final download url pattern - - CAPTCHA_URL_PATTERN = r'(http://[^"\']+?/captchas?/[^"\']+)' - CAPTCHA_DIV_PATTERN = r'>Enter code.*?(.+?)' - RECAPTCHA_PATTERN = None - SOLVEMEDIA_PATTERN = None - - ERROR_PATTERN = r'class=["\']err["\'][^>]*>(.+?)", " ", self.errmsg)) - - if 'wait' in self.errmsg: - wait_time = sum([int(v) * {"hour": 3600, "minute": 60, "second": 1}[u] for v, u in - re.findall(r'(\d+)\s*(hour|minute|second)', self.errmsg)]) - self.wait(wait_time, True) - elif 'captcha' in self.errmsg: - self.invalidCaptcha() - elif 'premium' in self.errmsg and 'require' in self.errmsg: - self.fail("File can be downloaded by premium users only") - elif 'limit' in self.errmsg: - self.wait(1 * 60 * 60, True) - self.retry(25) - elif 'countdown' in self.errmsg or 'Expired' in self.errmsg: - self.retry() - elif 'maintenance' in self.errmsg or 'maintainance' in self.errmsg: - self.tempOffline() - elif 'download files up to' in self.errmsg: - self.fail("File too large for free download") - else: - self.fail(self.errmsg) - - else: - self.errmsg = None - - return self.errmsg - - - def getPostParameters(self): - for _ in xrange(3): - if not self.errmsg: - self.checkErrors() - - if hasattr(self, "FORM_PATTERN"): - action, inputs = self.parseHtmlForm(self.FORM_PATTERN) - else: - action, inputs = self.parseHtmlForm(input_names={"op": re.compile("^download")}) - - if not inputs: - action, inputs = self.parseHtmlForm('F1') - if not inputs: - if self.errmsg: - self.retry() - else: - self.parseError("Form not found") - - self.logDebug(self.HOSTER_NAME, inputs) - - if 'op' in inputs and inputs['op'] in ("download2", "download3"): - if "password" in inputs: - if self.passwords: - inputs['password'] = self.passwords.pop(0) - else: - self.fail("No or invalid passport") - - if not self.premium: - m = re.search(self.WAIT_PATTERN, self.html) - if m: - wait_time = int(m.group(1)) + 1 - self.setWait(wait_time, False) - else: - wait_time = 0 - - self.captcha = self.handleCaptcha(inputs) - - if wait_time: - self.wait() - - self.errmsg = None - return inputs - - else: - inputs['referer'] = self.pyfile.url - - if self.premium: - inputs['method_premium'] = "Premium Download" - if 'method_free' in inputs: - del inputs['method_free'] - else: - inputs['method_free'] = "Free Download" - if 'method_premium' in inputs: - del inputs['method_premium'] - - self.html = self.load(self.pyfile.url, post=inputs, ref=True) - self.errmsg = None - - else: - self.parseError('FORM: %s' % (inputs['op'] if 'op' in inputs else 'UNKNOWN')) - - - def handleCaptcha(self, inputs): - m = re.search(self.CAPTCHA_URL_PATTERN, self.html) - if m: - captcha_url = m.group(1) - inputs['code'] = self.decryptCaptcha(captcha_url) - return 1 - - m = re.search(self.CAPTCHA_DIV_PATTERN, self.html, re.DOTALL) - if m: - captcha_div = m.group(1) - self.logDebug(captcha_div) - numerals = re.findall(r'(\d)', html_unescape(captcha_div)) - inputs['code'] = "".join([a[1] for a in sorted(numerals, key=lambda num: int(num[0]))]) - self.logDebug("CAPTCHA", inputs['code'], numerals) - return 2 - - recaptcha = ReCaptcha(self) - try: - captcha_key = re.search(self.RECAPTCHA_PATTERN, self.html).group(1) - except: - captcha_key = recaptcha.detect_key() - - if captcha_key: - self.logDebug("RECAPTCHA KEY: %s" % captcha_key) - inputs['recaptcha_challenge_field'], inputs['recaptcha_response_field'] = recaptcha.challenge(captcha_key) - return 3 - - solvemedia = SolveMedia(self) - try: - captcha_key = re.search(self.SOLVEMEDIA_PATTERN, self.html).group(1) - except: - captcha_key = solvemedia.detect_key() - - if captcha_key: - inputs['adcopy_challenge'], inputs['adcopy_response'] = solvemedia.challenge(captcha_key) - return 4 - - return 0 - - -getInfo = create_getInfo(XFileSharingPro) diff --git a/module/plugins/internal/XFSPHoster.py b/module/plugins/internal/XFSPHoster.py new file mode 100644 index 000000000..2376c1b84 --- /dev/null +++ b/module/plugins/internal/XFSPHoster.py @@ -0,0 +1,361 @@ +# -*- coding: utf-8 -*- + +import re + +from pycurl import FOLLOWLOCATION, LOW_SPEED_TIME +from random import random +from urllib import unquote +from urlparse import urlparse + +from module.network.RequestFactory import getURL +from module.plugins.internal.CaptchaService import ReCaptcha, SolveMedia +from module.plugins.internal.SimpleHoster import create_getInfo, PluginParseError, replace_patterns, set_cookies, SimpleHoster +from module.utils import html_unescape + + +class XFSPHoster(SimpleHoster): + """ + Common base for XFileSharingPro hosters like EasybytezCom, CramitIn, FiledinoCom... + Some hosters may work straight away when added to __pattern__ + However, most of them will NOT work because they are either down or running a customized version + """ + __name__ = "XFSPHoster" + __type__ = "hoster" + __version__ = "0.37" + + __pattern__ = r'^unmatchable$' + + __description__ = """XFileSharingPro base hoster plugin""" + __authors__ = [("zoidberg", "zoidberg@mujmail.cz"), + ("stickell", "l.stickell@yahoo.it"), + ("Walter Purcaro", "vuolter@gmail.com")] + + + HOSTER_NAME = None + + FILE_URL_REPLACEMENTS = [(r'/embed-(\w{12}).*', r'/\1')] #: support embedded files + + COOKIES = [(HOSTER_NAME, "lang", "english")] + + FILE_INFO_PATTERN = r'Filename:(?P[^<]+)\s*.*?\((?P[^<]+)\)' + FILE_NAME_PATTERN = r'[\d\.\,]+) ?(?P\w+)?\)' + + OFFLINE_PATTERN = r'>\s*\w+ (Not Found|file (was|has been) removed)' + TEMP_OFFLINE_PATTERN = r'>\s*\w+ server (is in )?(maintenance|maintainance)' + + WAIT_PATTERN = r'.*?>(\d+)' + + OVR_LINK_PATTERN = r'

Download Link

\s*]*>([^<]+)' + LINK_PATTERN = None #: final download url pattern + + CAPTCHA_URL_PATTERN = r'(http://[^"\']+?/captchas?/[^"\']+)' + CAPTCHA_DIV_PATTERN = r'>Enter code.*?(.+?)' + RECAPTCHA_PATTERN = None + SOLVEMEDIA_PATTERN = None + + ERROR_PATTERN = r'class=["\']err["\'][^>]*>(.+?)", " ", self.errmsg)) + + if 'wait' in self.errmsg: + wait_time = sum([int(v) * {"hour": 3600, "minute": 60, "second": 1}[u] for v, u in + re.findall(r'(\d+)\s*(hour|minute|second)', self.errmsg)]) + self.wait(wait_time, True) + elif 'captcha' in self.errmsg: + self.invalidCaptcha() + elif 'premium' in self.errmsg and 'require' in self.errmsg: + self.fail("File can be downloaded by premium users only") + elif 'limit' in self.errmsg: + self.wait(1 * 60 * 60, True) + self.retry(25) + elif 'countdown' in self.errmsg or 'Expired' in self.errmsg: + self.retry() + elif 'maintenance' in self.errmsg or 'maintainance' in self.errmsg: + self.tempOffline() + elif 'download files up to' in self.errmsg: + self.fail("File too large for free download") + else: + self.fail(self.errmsg) + + else: + self.errmsg = None + + return self.errmsg + + + def getPostParameters(self): + for _ in xrange(3): + if not self.errmsg: + self.checkErrors() + + if hasattr(self, "FORM_PATTERN"): + action, inputs = self.parseHtmlForm(self.FORM_PATTERN) + else: + action, inputs = self.parseHtmlForm(input_names={"op": re.compile("^download")}) + + if not inputs: + action, inputs = self.parseHtmlForm('F1') + if not inputs: + if self.errmsg: + self.retry() + else: + self.parseError("Form not found") + + self.logDebug(self.HOSTER_NAME, inputs) + + if 'op' in inputs and inputs['op'] in ("download2", "download3"): + if "password" in inputs: + if self.passwords: + inputs['password'] = self.passwords.pop(0) + else: + self.fail("No or invalid passport") + + if not self.premium: + m = re.search(self.WAIT_PATTERN, self.html) + if m: + wait_time = int(m.group(1)) + 1 + self.setWait(wait_time, False) + else: + wait_time = 0 + + self.captcha = self.handleCaptcha(inputs) + + if wait_time: + self.wait() + + self.errmsg = None + return inputs + + else: + inputs['referer'] = self.pyfile.url + + if self.premium: + inputs['method_premium'] = "Premium Download" + if 'method_free' in inputs: + del inputs['method_free'] + else: + inputs['method_free'] = "Free Download" + if 'method_premium' in inputs: + del inputs['method_premium'] + + self.html = self.load(self.pyfile.url, post=inputs, ref=True) + self.errmsg = None + + else: + self.parseError('FORM: %s' % (inputs['op'] if 'op' in inputs else 'UNKNOWN')) + + + def handleCaptcha(self, inputs): + m = re.search(self.CAPTCHA_URL_PATTERN, self.html) + if m: + captcha_url = m.group(1) + inputs['code'] = self.decryptCaptcha(captcha_url) + return 1 + + m = re.search(self.CAPTCHA_DIV_PATTERN, self.html, re.DOTALL) + if m: + captcha_div = m.group(1) + self.logDebug(captcha_div) + numerals = re.findall(r'(\d)', html_unescape(captcha_div)) + inputs['code'] = "".join([a[1] for a in sorted(numerals, key=lambda num: int(num[0]))]) + self.logDebug("CAPTCHA", inputs['code'], numerals) + return 2 + + recaptcha = ReCaptcha(self) + try: + captcha_key = re.search(self.RECAPTCHA_PATTERN, self.html).group(1) + except: + captcha_key = recaptcha.detect_key() + + if captcha_key: + self.logDebug("RECAPTCHA KEY: %s" % captcha_key) + inputs['recaptcha_challenge_field'], inputs['recaptcha_response_field'] = recaptcha.challenge(captcha_key) + return 3 + + solvemedia = SolveMedia(self) + try: + captcha_key = re.search(self.SOLVEMEDIA_PATTERN, self.html).group(1) + except: + captcha_key = solvemedia.detect_key() + + if captcha_key: + inputs['adcopy_challenge'], inputs['adcopy_response'] = solvemedia.challenge(captcha_key) + return 4 + + return 0 + + +getInfo = create_getInfo(XFSPHoster) -- cgit v1.2.3 From 60320d4addec35b9cbd14a05b6c33fba63d6c620 Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Wed, 8 Oct 2014 16:14:33 +0200 Subject: Update plugins XFileSharingPro based --- module/plugins/hoster/BillionuploadsCom.py | 6 +++--- module/plugins/hoster/CramitIn.py | 6 +++--- module/plugins/hoster/EasybytezCom.py | 6 +++--- module/plugins/hoster/File4safeCom.py | 6 +++--- module/plugins/hoster/FileParadoxIn.py | 6 +++--- module/plugins/hoster/FileomCom.py | 6 +++--- module/plugins/hoster/FilerioCom.py | 6 +++--- module/plugins/hoster/HugefilesNet.py | 6 +++--- module/plugins/hoster/HundredEightyUploadCom.py | 6 +++--- module/plugins/hoster/LomafileCom.py | 6 +++--- module/plugins/hoster/MovReelCom.py | 6 +++--- module/plugins/hoster/NosuploadCom.py | 6 +++--- module/plugins/hoster/NovafileCom.py | 6 +++--- module/plugins/hoster/RarefileNet.py | 6 +++--- module/plugins/hoster/RyushareCom.py | 6 +++--- module/plugins/hoster/SecureUploadEu.py | 6 +++--- module/plugins/hoster/SendmywayCom.py | 6 +++--- module/plugins/hoster/StreamcloudEu.py | 6 +++--- module/plugins/hoster/TusfilesNet.py | 6 +++--- module/plugins/hoster/UptoboxCom.py | 6 +++--- module/plugins/hoster/VidPlayNet.py | 6 +++--- 21 files changed, 63 insertions(+), 63 deletions(-) (limited to 'module') diff --git a/module/plugins/hoster/BillionuploadsCom.py b/module/plugins/hoster/BillionuploadsCom.py index 68bebf0ec..516dec8da 100644 --- a/module/plugins/hoster/BillionuploadsCom.py +++ b/module/plugins/hoster/BillionuploadsCom.py @@ -1,12 +1,12 @@ # -*- coding: utf-8 -*- -from module.plugins.hoster.XFileSharingPro import XFileSharingPro, create_getInfo +from module.plugins.hoster.XFSPHoster import XFSPHoster, create_getInfo -class BillionuploadsCom(XFileSharingPro): +class BillionuploadsCom(XFSPHoster): __name__ = "BillionuploadsCom" __type__ = "hoster" - __version__ = "0.01" + __version__ = "0.02" __pattern__ = r'http://(?:www\.)?billionuploads\.com/\w{12}' diff --git a/module/plugins/hoster/CramitIn.py b/module/plugins/hoster/CramitIn.py index a0a3cf90a..7cc116015 100644 --- a/module/plugins/hoster/CramitIn.py +++ b/module/plugins/hoster/CramitIn.py @@ -1,12 +1,12 @@ # -*- coding: utf-8 -*- -from module.plugins.hoster.XFileSharingPro import XFileSharingPro, create_getInfo +from module.plugins.hoster.XFSPHoster import XFSPHoster, create_getInfo -class CramitIn(XFileSharingPro): +class CramitIn(XFSPHoster): __name__ = "CramitIn" __type__ = "hoster" - __version__ = "0.04" + __version__ = "0.05" __pattern__ = r'http://(?:www\.)?cramit\.in/\w{12}' diff --git a/module/plugins/hoster/EasybytezCom.py b/module/plugins/hoster/EasybytezCom.py index 47f869b44..5f4717deb 100644 --- a/module/plugins/hoster/EasybytezCom.py +++ b/module/plugins/hoster/EasybytezCom.py @@ -1,12 +1,12 @@ # -*- coding: utf-8 -*- -from module.plugins.hoster.XFileSharingPro import XFileSharingPro, create_getInfo +from module.plugins.hoster.XFSPHoster import XFSPHoster, create_getInfo -class EasybytezCom(XFileSharingPro): +class EasybytezCom(XFSPHoster): __name__ = "EasybytezCom" __type__ = "hoster" - __version__ = "0.18" + __version__ = "0.19" __pattern__ = r'http://(?:www\.)?easybytez\.com/\w{12}' diff --git a/module/plugins/hoster/File4safeCom.py b/module/plugins/hoster/File4safeCom.py index 41b10b905..c5d69c644 100644 --- a/module/plugins/hoster/File4safeCom.py +++ b/module/plugins/hoster/File4safeCom.py @@ -4,13 +4,13 @@ import re from pycurl import FOLLOWLOCATION -from module.plugins.hoster.XFileSharingPro import XFileSharingPro, create_getInfo +from module.plugins.hoster.XFSPHoster import XFSPHoster, create_getInfo -class File4safeCom(XFileSharingPro): +class File4safeCom(XFSPHoster): __name__ = "File4safeCom" __type__ = "hoster" - __version__ = "0.02" + __version__ = "0.03" __pattern__ = r'https?://(?:www\.)?file4safe\.com/\w{12}' diff --git a/module/plugins/hoster/FileParadoxIn.py b/module/plugins/hoster/FileParadoxIn.py index 0b01f8fbc..ae7e7a3e5 100644 --- a/module/plugins/hoster/FileParadoxIn.py +++ b/module/plugins/hoster/FileParadoxIn.py @@ -2,13 +2,13 @@ import re -from module.plugins.hoster.XFileSharingPro import XFileSharingPro, create_getInfo +from module.plugins.hoster.XFSPHoster import XFSPHoster, create_getInfo -class FileParadoxIn(XFileSharingPro): +class FileParadoxIn(XFSPHoster): __name__ = "FileParadoxIn" __type__ = "hoster" - __version__ = "0.01" + __version__ = "0.02" __pattern__ = r'https?://(?:www\.)?fileparadox\.in/\w{12}' diff --git a/module/plugins/hoster/FileomCom.py b/module/plugins/hoster/FileomCom.py index 793bc001e..f839bd080 100644 --- a/module/plugins/hoster/FileomCom.py +++ b/module/plugins/hoster/FileomCom.py @@ -3,13 +3,13 @@ # Test links: # http://fileom.com/gycaytyzdw3g/random.bin.html -from module.plugins.hoster.XFileSharingPro import XFileSharingPro, create_getInfo +from module.plugins.hoster.XFSPHoster import XFSPHoster, create_getInfo -class FileomCom(XFileSharingPro): +class FileomCom(XFSPHoster): __name__ = "FileomCom" __type__ = "hoster" - __version__ = "0.01" + __version__ = "0.02" __pattern__ = r'https?://(?:www\.)?fileom\.com/\w{12}' diff --git a/module/plugins/hoster/FilerioCom.py b/module/plugins/hoster/FilerioCom.py index 9f19a07a1..e53f7b6d9 100644 --- a/module/plugins/hoster/FilerioCom.py +++ b/module/plugins/hoster/FilerioCom.py @@ -1,12 +1,12 @@ # -*- coding: utf-8 -*- -from module.plugins.hoster.XFileSharingPro import XFileSharingPro, create_getInfo +from module.plugins.hoster.XFSPHoster import XFSPHoster, create_getInfo -class FilerioCom(XFileSharingPro): +class FilerioCom(XFSPHoster): __name__ = "FilerioCom" __type__ = "hoster" - __version__ = "0.02" + __version__ = "0.03" __pattern__ = r'http://(?:www\.)?(filerio\.(in|com)|filekeen\.com)/\w{12}' diff --git a/module/plugins/hoster/HugefilesNet.py b/module/plugins/hoster/HugefilesNet.py index 74fd53e51..a4b6842d4 100644 --- a/module/plugins/hoster/HugefilesNet.py +++ b/module/plugins/hoster/HugefilesNet.py @@ -3,13 +3,13 @@ # Test links: # http://hugefiles.net/prthf9ya4w6s -from module.plugins.hoster.XFileSharingPro import XFileSharingPro, create_getInfo +from module.plugins.hoster.XFSPHoster import XFSPHoster, create_getInfo -class HugefilesNet(XFileSharingPro): +class HugefilesNet(XFSPHoster): __name__ = "HugefilesNet" __type__ = "hoster" - __version__ = "0.01" + __version__ = "0.02" __pattern__ = r'http://(?:www\.)?hugefiles\.net/\w{12}' diff --git a/module/plugins/hoster/HundredEightyUploadCom.py b/module/plugins/hoster/HundredEightyUploadCom.py index 3aceb9003..323916500 100644 --- a/module/plugins/hoster/HundredEightyUploadCom.py +++ b/module/plugins/hoster/HundredEightyUploadCom.py @@ -3,13 +3,13 @@ # Test links: # http://180upload.com/js9qdm6kjnrs -from module.plugins.hoster.XFileSharingPro import XFileSharingPro, create_getInfo +from module.plugins.hoster.XFSPHoster import XFSPHoster, create_getInfo -class HundredEightyUploadCom(XFileSharingPro): +class HundredEightyUploadCom(XFSPHoster): __name__ = "HundredEightyUploadCom" __type__ = "hoster" - __version__ = "0.01" + __version__ = "0.02" __pattern__ = r'http://(?:www\.)?180upload\.com/\w{12}' diff --git a/module/plugins/hoster/LomafileCom.py b/module/plugins/hoster/LomafileCom.py index 8184e9393..8a9c4e94b 100644 --- a/module/plugins/hoster/LomafileCom.py +++ b/module/plugins/hoster/LomafileCom.py @@ -1,12 +1,12 @@ # -*- coding: utf-8 -*- -from module.plugins.hoster.XFileSharingPro import XFileSharingPro, create_getInfo +from module.plugins.hoster.XFSPHoster import XFSPHoster, create_getInfo -class LomafileCom(XFileSharingPro): +class LomafileCom(XFSPHoster): __name__ = "LomafileCom" __type__ = "hoster" - __version__ = "0.3" + __version__ = "0.4" __pattern__ = r'http://lomafile\.com/\w{12}' diff --git a/module/plugins/hoster/MovReelCom.py b/module/plugins/hoster/MovReelCom.py index 682adc48d..4c6bc355c 100644 --- a/module/plugins/hoster/MovReelCom.py +++ b/module/plugins/hoster/MovReelCom.py @@ -1,12 +1,12 @@ # -*- coding: utf-8 -*- -from module.plugins.hoster.XFileSharingPro import XFileSharingPro, create_getInfo +from module.plugins.hoster.XFSPHoster import XFSPHoster, create_getInfo -class MovReelCom(XFileSharingPro): +class MovReelCom(XFSPHoster): __name__ = "MovReelCom" __type__ = "hoster" - __version__ = "1.21" + __version__ = "1.22" __pattern__ = r'http://(?:www\.)?movreel\.com/\w{12}' diff --git a/module/plugins/hoster/NosuploadCom.py b/module/plugins/hoster/NosuploadCom.py index 050890cde..4d76c93ee 100644 --- a/module/plugins/hoster/NosuploadCom.py +++ b/module/plugins/hoster/NosuploadCom.py @@ -2,13 +2,13 @@ import re -from module.plugins.hoster.XFileSharingPro import XFileSharingPro, create_getInfo +from module.plugins.hoster.XFSPHoster import XFSPHoster, create_getInfo -class NosuploadCom(XFileSharingPro): +class NosuploadCom(XFSPHoster): __name__ = "NosuploadCom" __type__ = "hoster" - __version__ = "0.1" + __version__ = "0.2" __pattern__ = r'http://(?:www\.)?nosupload\.com/\?d=\w{12}' diff --git a/module/plugins/hoster/NovafileCom.py b/module/plugins/hoster/NovafileCom.py index fb75f0470..19873a59f 100644 --- a/module/plugins/hoster/NovafileCom.py +++ b/module/plugins/hoster/NovafileCom.py @@ -4,13 +4,13 @@ # http://novafile.com/vfun4z6o2cit # http://novafile.com/s6zrr5wemuz4 -from module.plugins.hoster.XFileSharingPro import XFileSharingPro, create_getInfo +from module.plugins.hoster.XFSPHoster import XFSPHoster, create_getInfo -class NovafileCom(XFileSharingPro): +class NovafileCom(XFSPHoster): __name__ = "NovafileCom" __type__ = "hoster" - __version__ = "0.02" + __version__ = "0.03" __pattern__ = r'http://(?:www\.)?novafile\.com/\w{12}' diff --git a/module/plugins/hoster/RarefileNet.py b/module/plugins/hoster/RarefileNet.py index a51284c19..1c5f66b30 100644 --- a/module/plugins/hoster/RarefileNet.py +++ b/module/plugins/hoster/RarefileNet.py @@ -2,14 +2,14 @@ import re -from module.plugins.hoster.XFileSharingPro import XFileSharingPro, create_getInfo +from module.plugins.hoster.XFSPHoster import XFSPHoster, create_getInfo from module.utils import html_unescape -class RarefileNet(XFileSharingPro): +class RarefileNet(XFSPHoster): __name__ = "RarefileNet" __type__ = "hoster" - __version__ = "0.03" + __version__ = "0.04" __pattern__ = r'http://(?:www\.)?rarefile\.net/\w{12}' diff --git a/module/plugins/hoster/RyushareCom.py b/module/plugins/hoster/RyushareCom.py index 04d066018..bb7e84e7f 100644 --- a/module/plugins/hoster/RyushareCom.py +++ b/module/plugins/hoster/RyushareCom.py @@ -5,14 +5,14 @@ import re -from module.plugins.hoster.XFileSharingPro import XFileSharingPro, create_getInfo +from module.plugins.hoster.XFSPHoster import XFSPHoster, create_getInfo from module.plugins.internal.CaptchaService import SolveMedia -class RyushareCom(XFileSharingPro): +class RyushareCom(XFSPHoster): __name__ = "RyushareCom" __type__ = "hoster" - __version__ = "0.16" + __version__ = "0.17" __pattern__ = r'http://(?:www\.)?ryushare\.com/\w+' diff --git a/module/plugins/hoster/SecureUploadEu.py b/module/plugins/hoster/SecureUploadEu.py index 9b1d15dc7..240cb7f7a 100644 --- a/module/plugins/hoster/SecureUploadEu.py +++ b/module/plugins/hoster/SecureUploadEu.py @@ -1,12 +1,12 @@ # -*- coding: utf-8 -*- -from module.plugins.hoster.XFileSharingPro import XFileSharingPro, create_getInfo +from module.plugins.hoster.XFSPHoster import XFSPHoster, create_getInfo -class SecureUploadEu(XFileSharingPro): +class SecureUploadEu(XFSPHoster): __name__ = "SecureUploadEu" __type__ = "hoster" - __version__ = "0.02" + __version__ = "0.03" __pattern__ = r'https?://(?:www\.)?secureupload\.eu/\w{12}' diff --git a/module/plugins/hoster/SendmywayCom.py b/module/plugins/hoster/SendmywayCom.py index 03a1fc769..f74ad8018 100644 --- a/module/plugins/hoster/SendmywayCom.py +++ b/module/plugins/hoster/SendmywayCom.py @@ -1,12 +1,12 @@ # -*- coding: utf-8 -*- -from module.plugins.hoster.XFileSharingPro import XFileSharingPro, create_getInfo +from module.plugins.hoster.XFSPHoster import XFSPHoster, create_getInfo -class SendmywayCom(XFileSharingPro): +class SendmywayCom(XFSPHoster): __name__ = "SendmywayCom" __type__ = "hoster" - __version__ = "0.01" + __version__ = "0.02" __pattern__ = r'http://(?:www\.)?sendmyway\.com/\w{12}' diff --git a/module/plugins/hoster/StreamcloudEu.py b/module/plugins/hoster/StreamcloudEu.py index faf267dc0..e61cb5dd2 100644 --- a/module/plugins/hoster/StreamcloudEu.py +++ b/module/plugins/hoster/StreamcloudEu.py @@ -5,13 +5,13 @@ import re from time import sleep from module.network.HTTPRequest import HTTPRequest -from module.plugins.hoster.XFileSharingPro import XFileSharingPro, create_getInfo +from module.plugins.hoster.XFSPHoster import XFSPHoster, create_getInfo -class StreamcloudEu(XFileSharingPro): +class StreamcloudEu(XFSPHoster): __name__ = "StreamcloudEu" __type__ = "hoster" - __version__ = "0.04" + __version__ = "0.05" __pattern__ = r'http://(?:www\.)?streamcloud\.eu/\w{12}' diff --git a/module/plugins/hoster/TusfilesNet.py b/module/plugins/hoster/TusfilesNet.py index 5c0e96daa..d7cc5b8be 100644 --- a/module/plugins/hoster/TusfilesNet.py +++ b/module/plugins/hoster/TusfilesNet.py @@ -1,12 +1,12 @@ # -*- coding: utf-8 -*- -from module.plugins.hoster.XFileSharingPro import XFileSharingPro, create_getInfo +from module.plugins.hoster.XFSPHoster import XFSPHoster, create_getInfo -class TusfilesNet(XFileSharingPro): +class TusfilesNet(XFSPHoster): __name__ = "TusfilesNet" __type__ = "hoster" - __version__ = "0.04" + __version__ = "0.05" __pattern__ = r'https?://(?:www\.)?tusfiles\.net/\w{12}' diff --git a/module/plugins/hoster/UptoboxCom.py b/module/plugins/hoster/UptoboxCom.py index c4adc2b6d..e18a1e644 100644 --- a/module/plugins/hoster/UptoboxCom.py +++ b/module/plugins/hoster/UptoboxCom.py @@ -2,13 +2,13 @@ import re -from module.plugins.hoster.XFileSharingPro import XFileSharingPro, create_getInfo +from module.plugins.hoster.XFSPHoster import XFSPHoster, create_getInfo -class UptoboxCom(XFileSharingPro): +class UptoboxCom(XFSPHoster): __name__ = "UptoboxCom" __type__ = "hoster" - __version__ = "0.10" + __version__ = "0.11" __pattern__ = r'https?://(?:www\.)?uptobox\.com/\w{12}' diff --git a/module/plugins/hoster/VidPlayNet.py b/module/plugins/hoster/VidPlayNet.py index cff84dfc9..d9c56965b 100644 --- a/module/plugins/hoster/VidPlayNet.py +++ b/module/plugins/hoster/VidPlayNet.py @@ -3,13 +3,13 @@ # Test links: # BigBuckBunny_320x180.mp4 - 61.7 Mb - http://vidplay.net/38lkev0h3jv0 -from module.plugins.hoster.XFileSharingPro import XFileSharingPro, create_getInfo +from module.plugins.hoster.XFSPHoster import XFSPHoster, create_getInfo -class VidPlayNet(XFileSharingPro): +class VidPlayNet(XFSPHoster): __name__ = "VidPlayNet" __type__ = "hoster" - __version__ = "0.01" + __version__ = "0.02" __pattern__ = r'https?://(?:www\.)?vidplay\.net/\w{12}' -- cgit v1.2.3 From 1c4bd7a76450052b28dba609c04c5c4fcad0d014 Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Wed, 8 Oct 2014 16:34:26 +0200 Subject: [XFileSharingPro] Restore --- module/plugins/hoster/XFileSharingPro.py | 30 ++++++++++++++++++++++++++++++ module/plugins/internal/XFSPAccount.py | 2 +- module/plugins/internal/XFSPHoster.py | 20 +++++--------------- 3 files changed, 36 insertions(+), 16 deletions(-) create mode 100644 module/plugins/hoster/XFileSharingPro.py (limited to 'module') diff --git a/module/plugins/hoster/XFileSharingPro.py b/module/plugins/hoster/XFileSharingPro.py new file mode 100644 index 000000000..9c46e8120 --- /dev/null +++ b/module/plugins/hoster/XFileSharingPro.py @@ -0,0 +1,30 @@ +# -*- coding: utf-8 -*- + +import re + +from module.plugins.internal.XFSPHoster import XFSPHoster, create_getInfo + + +class XFileSharingPro(XFSPHoster): + __name__ = "XFileSharingPro" + __type__ = "hoster" + __version__ = "0.38" + + __pattern__ = r'^unmatchable$' + + __description__ = """XFileSharingPro dummy hoster plugin for hook""" + __authors__ = [("Walter Purcaro", "vuolter@gmail.com")] + + + FILE_URL_REPLACEMENTS = [(r'/embed-(\w{12}).*', r'/\1')] #: support embedded files + + + def setup(self): + self.chunkLimit = 1 + self.multiDL = True + + self.__pattern__ = self.core.pluginManager.hosterPlugins[self.__name__]['pattern'] + self.HOSTER_NAME = re.match(self.__pattern__, self.pyfile.url).group(1).lower() + + +getInfo = create_getInfo(XFileSharingPro) diff --git a/module/plugins/internal/XFSPAccount.py b/module/plugins/internal/XFSPAccount.py index 2cda54615..fdbd8829c 100644 --- a/module/plugins/internal/XFSPAccount.py +++ b/module/plugins/internal/XFSPAccount.py @@ -15,7 +15,7 @@ class XFSPAccount(Account): __type__ = "account" __version__ = "0.10" - __description__ = """XFileSharingPro base account plugin""" + __description__ = """XFileSharingPro account plugin""" __authors__ = [("zoidberg", "zoidberg@mujmail.cz"), ("Walter Purcaro", "vuolter@gmail.com")] diff --git a/module/plugins/internal/XFSPHoster.py b/module/plugins/internal/XFSPHoster.py index 2376c1b84..30cb1536f 100644 --- a/module/plugins/internal/XFSPHoster.py +++ b/module/plugins/internal/XFSPHoster.py @@ -21,11 +21,11 @@ class XFSPHoster(SimpleHoster): """ __name__ = "XFSPHoster" __type__ = "hoster" - __version__ = "0.37" + __version__ = "0.01" - __pattern__ = r'^unmatchable$' + __pattern__ = None - __description__ = """XFileSharingPro base hoster plugin""" + __description__ = """XFileSharingPro hoster plugin""" __authors__ = [("zoidberg", "zoidberg@mujmail.cz"), ("stickell", "l.stickell@yahoo.it"), ("Walter Purcaro", "vuolter@gmail.com")] @@ -33,7 +33,7 @@ class XFSPHoster(SimpleHoster): HOSTER_NAME = None - FILE_URL_REPLACEMENTS = [(r'/embed-(\w{12}).*', r'/\1')] #: support embedded files + FILE_URL_REPLACEMENTS = [] COOKIES = [(HOSTER_NAME, "lang", "english")] @@ -59,14 +59,7 @@ class XFSPHoster(SimpleHoster): def setup(self): self.chunkLimit = 1 - - if self.__name__ == "XFSPHoster": - self.multiDL = True - self.__pattern__ = self.core.pluginManager.hosterPlugins[self.__name__]['pattern'] - self.HOSTER_NAME = re.match(self.__pattern__, self.pyfile.url).group(1).lower() - self.COOKIES = [(self.HOSTER_NAME, "lang", "english")] - else: - self.resumeDownload = self.multiDL = self.premium + self.resumeDownload = self.multiDL = self.premium def prepare(self): @@ -356,6 +349,3 @@ class XFSPHoster(SimpleHoster): return 4 return 0 - - -getInfo = create_getInfo(XFSPHoster) -- cgit v1.2.3 From 355c80c5e456f22a4fd3247985710a46a43a79f9 Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Wed, 8 Oct 2014 19:51:40 +0200 Subject: Fix previous plugins update --- module/plugins/hoster/BillionuploadsCom.py | 4 ++-- module/plugins/hoster/CramitIn.py | 4 ++-- module/plugins/hoster/EasybytezCom.py | 4 ++-- module/plugins/hoster/File4safeCom.py | 4 ++-- module/plugins/hoster/FileParadoxIn.py | 4 ++-- module/plugins/hoster/FileomCom.py | 4 ++-- module/plugins/hoster/FilerioCom.py | 4 ++-- module/plugins/hoster/HugefilesNet.py | 4 ++-- module/plugins/hoster/HundredEightyUploadCom.py | 4 ++-- module/plugins/hoster/LomafileCom.py | 4 ++-- module/plugins/hoster/MovReelCom.py | 4 ++-- module/plugins/hoster/NosuploadCom.py | 4 ++-- module/plugins/hoster/NovafileCom.py | 4 ++-- module/plugins/hoster/RarefileNet.py | 4 ++-- module/plugins/hoster/RyushareCom.py | 4 ++-- module/plugins/hoster/SecureUploadEu.py | 4 ++-- module/plugins/hoster/SendmywayCom.py | 4 ++-- module/plugins/hoster/StreamcloudEu.py | 4 ++-- module/plugins/hoster/TusfilesNet.py | 4 ++-- module/plugins/hoster/UptoboxCom.py | 4 ++-- module/plugins/hoster/VidPlayNet.py | 4 ++-- 21 files changed, 42 insertions(+), 42 deletions(-) (limited to 'module') diff --git a/module/plugins/hoster/BillionuploadsCom.py b/module/plugins/hoster/BillionuploadsCom.py index 516dec8da..854dec008 100644 --- a/module/plugins/hoster/BillionuploadsCom.py +++ b/module/plugins/hoster/BillionuploadsCom.py @@ -1,12 +1,12 @@ # -*- coding: utf-8 -*- -from module.plugins.hoster.XFSPHoster import XFSPHoster, create_getInfo +from module.plugins.internal.XFSPHoster import XFSPHoster, create_getInfo class BillionuploadsCom(XFSPHoster): __name__ = "BillionuploadsCom" __type__ = "hoster" - __version__ = "0.02" + __version__ = "0.03" __pattern__ = r'http://(?:www\.)?billionuploads\.com/\w{12}' diff --git a/module/plugins/hoster/CramitIn.py b/module/plugins/hoster/CramitIn.py index 7cc116015..aaaaebaaf 100644 --- a/module/plugins/hoster/CramitIn.py +++ b/module/plugins/hoster/CramitIn.py @@ -1,12 +1,12 @@ # -*- coding: utf-8 -*- -from module.plugins.hoster.XFSPHoster import XFSPHoster, create_getInfo +from module.plugins.internal.XFSPHoster import XFSPHoster, create_getInfo class CramitIn(XFSPHoster): __name__ = "CramitIn" __type__ = "hoster" - __version__ = "0.05" + __version__ = "0.06" __pattern__ = r'http://(?:www\.)?cramit\.in/\w{12}' diff --git a/module/plugins/hoster/EasybytezCom.py b/module/plugins/hoster/EasybytezCom.py index 5f4717deb..3364dadef 100644 --- a/module/plugins/hoster/EasybytezCom.py +++ b/module/plugins/hoster/EasybytezCom.py @@ -1,12 +1,12 @@ # -*- coding: utf-8 -*- -from module.plugins.hoster.XFSPHoster import XFSPHoster, create_getInfo +from module.plugins.internal.XFSPHoster import XFSPHoster, create_getInfo class EasybytezCom(XFSPHoster): __name__ = "EasybytezCom" __type__ = "hoster" - __version__ = "0.19" + __version__ = "0.20" __pattern__ = r'http://(?:www\.)?easybytez\.com/\w{12}' diff --git a/module/plugins/hoster/File4safeCom.py b/module/plugins/hoster/File4safeCom.py index c5d69c644..ca116ef64 100644 --- a/module/plugins/hoster/File4safeCom.py +++ b/module/plugins/hoster/File4safeCom.py @@ -4,13 +4,13 @@ import re from pycurl import FOLLOWLOCATION -from module.plugins.hoster.XFSPHoster import XFSPHoster, create_getInfo +from module.plugins.internal.XFSPHoster import XFSPHoster, create_getInfo class File4safeCom(XFSPHoster): __name__ = "File4safeCom" __type__ = "hoster" - __version__ = "0.03" + __version__ = "0.04" __pattern__ = r'https?://(?:www\.)?file4safe\.com/\w{12}' diff --git a/module/plugins/hoster/FileParadoxIn.py b/module/plugins/hoster/FileParadoxIn.py index ae7e7a3e5..00bec1084 100644 --- a/module/plugins/hoster/FileParadoxIn.py +++ b/module/plugins/hoster/FileParadoxIn.py @@ -2,13 +2,13 @@ import re -from module.plugins.hoster.XFSPHoster import XFSPHoster, create_getInfo +from module.plugins.internal.XFSPHoster import XFSPHoster, create_getInfo class FileParadoxIn(XFSPHoster): __name__ = "FileParadoxIn" __type__ = "hoster" - __version__ = "0.02" + __version__ = "0.03" __pattern__ = r'https?://(?:www\.)?fileparadox\.in/\w{12}' diff --git a/module/plugins/hoster/FileomCom.py b/module/plugins/hoster/FileomCom.py index f839bd080..22b0dc985 100644 --- a/module/plugins/hoster/FileomCom.py +++ b/module/plugins/hoster/FileomCom.py @@ -3,13 +3,13 @@ # Test links: # http://fileom.com/gycaytyzdw3g/random.bin.html -from module.plugins.hoster.XFSPHoster import XFSPHoster, create_getInfo +from module.plugins.internal.XFSPHoster import XFSPHoster, create_getInfo class FileomCom(XFSPHoster): __name__ = "FileomCom" __type__ = "hoster" - __version__ = "0.02" + __version__ = "0.03" __pattern__ = r'https?://(?:www\.)?fileom\.com/\w{12}' diff --git a/module/plugins/hoster/FilerioCom.py b/module/plugins/hoster/FilerioCom.py index e53f7b6d9..074d98aec 100644 --- a/module/plugins/hoster/FilerioCom.py +++ b/module/plugins/hoster/FilerioCom.py @@ -1,12 +1,12 @@ # -*- coding: utf-8 -*- -from module.plugins.hoster.XFSPHoster import XFSPHoster, create_getInfo +from module.plugins.internal.XFSPHoster import XFSPHoster, create_getInfo class FilerioCom(XFSPHoster): __name__ = "FilerioCom" __type__ = "hoster" - __version__ = "0.03" + __version__ = "0.04" __pattern__ = r'http://(?:www\.)?(filerio\.(in|com)|filekeen\.com)/\w{12}' diff --git a/module/plugins/hoster/HugefilesNet.py b/module/plugins/hoster/HugefilesNet.py index a4b6842d4..e287594a8 100644 --- a/module/plugins/hoster/HugefilesNet.py +++ b/module/plugins/hoster/HugefilesNet.py @@ -3,13 +3,13 @@ # Test links: # http://hugefiles.net/prthf9ya4w6s -from module.plugins.hoster.XFSPHoster import XFSPHoster, create_getInfo +from module.plugins.internal.XFSPHoster import XFSPHoster, create_getInfo class HugefilesNet(XFSPHoster): __name__ = "HugefilesNet" __type__ = "hoster" - __version__ = "0.02" + __version__ = "0.03" __pattern__ = r'http://(?:www\.)?hugefiles\.net/\w{12}' diff --git a/module/plugins/hoster/HundredEightyUploadCom.py b/module/plugins/hoster/HundredEightyUploadCom.py index 323916500..33199fd5c 100644 --- a/module/plugins/hoster/HundredEightyUploadCom.py +++ b/module/plugins/hoster/HundredEightyUploadCom.py @@ -3,13 +3,13 @@ # Test links: # http://180upload.com/js9qdm6kjnrs -from module.plugins.hoster.XFSPHoster import XFSPHoster, create_getInfo +from module.plugins.internal.XFSPHoster import XFSPHoster, create_getInfo class HundredEightyUploadCom(XFSPHoster): __name__ = "HundredEightyUploadCom" __type__ = "hoster" - __version__ = "0.02" + __version__ = "0.03" __pattern__ = r'http://(?:www\.)?180upload\.com/\w{12}' diff --git a/module/plugins/hoster/LomafileCom.py b/module/plugins/hoster/LomafileCom.py index 8a9c4e94b..ebb973cbd 100644 --- a/module/plugins/hoster/LomafileCom.py +++ b/module/plugins/hoster/LomafileCom.py @@ -1,12 +1,12 @@ # -*- coding: utf-8 -*- -from module.plugins.hoster.XFSPHoster import XFSPHoster, create_getInfo +from module.plugins.internal.XFSPHoster import XFSPHoster, create_getInfo class LomafileCom(XFSPHoster): __name__ = "LomafileCom" __type__ = "hoster" - __version__ = "0.4" + __version__ = "0.5" __pattern__ = r'http://lomafile\.com/\w{12}' diff --git a/module/plugins/hoster/MovReelCom.py b/module/plugins/hoster/MovReelCom.py index 4c6bc355c..9fd28385c 100644 --- a/module/plugins/hoster/MovReelCom.py +++ b/module/plugins/hoster/MovReelCom.py @@ -1,12 +1,12 @@ # -*- coding: utf-8 -*- -from module.plugins.hoster.XFSPHoster import XFSPHoster, create_getInfo +from module.plugins.internal.XFSPHoster import XFSPHoster, create_getInfo class MovReelCom(XFSPHoster): __name__ = "MovReelCom" __type__ = "hoster" - __version__ = "1.22" + __version__ = "1.23" __pattern__ = r'http://(?:www\.)?movreel\.com/\w{12}' diff --git a/module/plugins/hoster/NosuploadCom.py b/module/plugins/hoster/NosuploadCom.py index 4d76c93ee..e756c63f6 100644 --- a/module/plugins/hoster/NosuploadCom.py +++ b/module/plugins/hoster/NosuploadCom.py @@ -2,13 +2,13 @@ import re -from module.plugins.hoster.XFSPHoster import XFSPHoster, create_getInfo +from module.plugins.internal.XFSPHoster import XFSPHoster, create_getInfo class NosuploadCom(XFSPHoster): __name__ = "NosuploadCom" __type__ = "hoster" - __version__ = "0.2" + __version__ = "0.3" __pattern__ = r'http://(?:www\.)?nosupload\.com/\?d=\w{12}' diff --git a/module/plugins/hoster/NovafileCom.py b/module/plugins/hoster/NovafileCom.py index 19873a59f..958c10411 100644 --- a/module/plugins/hoster/NovafileCom.py +++ b/module/plugins/hoster/NovafileCom.py @@ -4,13 +4,13 @@ # http://novafile.com/vfun4z6o2cit # http://novafile.com/s6zrr5wemuz4 -from module.plugins.hoster.XFSPHoster import XFSPHoster, create_getInfo +from module.plugins.internal.XFSPHoster import XFSPHoster, create_getInfo class NovafileCom(XFSPHoster): __name__ = "NovafileCom" __type__ = "hoster" - __version__ = "0.03" + __version__ = "0.04" __pattern__ = r'http://(?:www\.)?novafile\.com/\w{12}' diff --git a/module/plugins/hoster/RarefileNet.py b/module/plugins/hoster/RarefileNet.py index 1c5f66b30..fab0f2aaf 100644 --- a/module/plugins/hoster/RarefileNet.py +++ b/module/plugins/hoster/RarefileNet.py @@ -2,14 +2,14 @@ import re -from module.plugins.hoster.XFSPHoster import XFSPHoster, create_getInfo +from module.plugins.internal.XFSPHoster import XFSPHoster, create_getInfo from module.utils import html_unescape class RarefileNet(XFSPHoster): __name__ = "RarefileNet" __type__ = "hoster" - __version__ = "0.04" + __version__ = "0.05" __pattern__ = r'http://(?:www\.)?rarefile\.net/\w{12}' diff --git a/module/plugins/hoster/RyushareCom.py b/module/plugins/hoster/RyushareCom.py index bb7e84e7f..92a7a22c2 100644 --- a/module/plugins/hoster/RyushareCom.py +++ b/module/plugins/hoster/RyushareCom.py @@ -5,14 +5,14 @@ import re -from module.plugins.hoster.XFSPHoster import XFSPHoster, create_getInfo +from module.plugins.internal.XFSPHoster import XFSPHoster, create_getInfo from module.plugins.internal.CaptchaService import SolveMedia class RyushareCom(XFSPHoster): __name__ = "RyushareCom" __type__ = "hoster" - __version__ = "0.17" + __version__ = "0.18" __pattern__ = r'http://(?:www\.)?ryushare\.com/\w+' diff --git a/module/plugins/hoster/SecureUploadEu.py b/module/plugins/hoster/SecureUploadEu.py index 240cb7f7a..59dc4d537 100644 --- a/module/plugins/hoster/SecureUploadEu.py +++ b/module/plugins/hoster/SecureUploadEu.py @@ -1,12 +1,12 @@ # -*- coding: utf-8 -*- -from module.plugins.hoster.XFSPHoster import XFSPHoster, create_getInfo +from module.plugins.internal.XFSPHoster import XFSPHoster, create_getInfo class SecureUploadEu(XFSPHoster): __name__ = "SecureUploadEu" __type__ = "hoster" - __version__ = "0.03" + __version__ = "0.04" __pattern__ = r'https?://(?:www\.)?secureupload\.eu/\w{12}' diff --git a/module/plugins/hoster/SendmywayCom.py b/module/plugins/hoster/SendmywayCom.py index f74ad8018..efb6c34c4 100644 --- a/module/plugins/hoster/SendmywayCom.py +++ b/module/plugins/hoster/SendmywayCom.py @@ -1,12 +1,12 @@ # -*- coding: utf-8 -*- -from module.plugins.hoster.XFSPHoster import XFSPHoster, create_getInfo +from module.plugins.internal.XFSPHoster import XFSPHoster, create_getInfo class SendmywayCom(XFSPHoster): __name__ = "SendmywayCom" __type__ = "hoster" - __version__ = "0.02" + __version__ = "0.03" __pattern__ = r'http://(?:www\.)?sendmyway\.com/\w{12}' diff --git a/module/plugins/hoster/StreamcloudEu.py b/module/plugins/hoster/StreamcloudEu.py index e61cb5dd2..6adace633 100644 --- a/module/plugins/hoster/StreamcloudEu.py +++ b/module/plugins/hoster/StreamcloudEu.py @@ -5,13 +5,13 @@ import re from time import sleep from module.network.HTTPRequest import HTTPRequest -from module.plugins.hoster.XFSPHoster import XFSPHoster, create_getInfo +from module.plugins.internal.XFSPHoster import XFSPHoster, create_getInfo class StreamcloudEu(XFSPHoster): __name__ = "StreamcloudEu" __type__ = "hoster" - __version__ = "0.05" + __version__ = "0.06" __pattern__ = r'http://(?:www\.)?streamcloud\.eu/\w{12}' diff --git a/module/plugins/hoster/TusfilesNet.py b/module/plugins/hoster/TusfilesNet.py index d7cc5b8be..b98dc885b 100644 --- a/module/plugins/hoster/TusfilesNet.py +++ b/module/plugins/hoster/TusfilesNet.py @@ -1,12 +1,12 @@ # -*- coding: utf-8 -*- -from module.plugins.hoster.XFSPHoster import XFSPHoster, create_getInfo +from module.plugins.internal.XFSPHoster import XFSPHoster, create_getInfo class TusfilesNet(XFSPHoster): __name__ = "TusfilesNet" __type__ = "hoster" - __version__ = "0.05" + __version__ = "0.06" __pattern__ = r'https?://(?:www\.)?tusfiles\.net/\w{12}' diff --git a/module/plugins/hoster/UptoboxCom.py b/module/plugins/hoster/UptoboxCom.py index e18a1e644..e69058e98 100644 --- a/module/plugins/hoster/UptoboxCom.py +++ b/module/plugins/hoster/UptoboxCom.py @@ -2,13 +2,13 @@ import re -from module.plugins.hoster.XFSPHoster import XFSPHoster, create_getInfo +from module.plugins.internal.XFSPHoster import XFSPHoster, create_getInfo class UptoboxCom(XFSPHoster): __name__ = "UptoboxCom" __type__ = "hoster" - __version__ = "0.11" + __version__ = "0.12" __pattern__ = r'https?://(?:www\.)?uptobox\.com/\w{12}' diff --git a/module/plugins/hoster/VidPlayNet.py b/module/plugins/hoster/VidPlayNet.py index d9c56965b..51bf66b24 100644 --- a/module/plugins/hoster/VidPlayNet.py +++ b/module/plugins/hoster/VidPlayNet.py @@ -3,13 +3,13 @@ # Test links: # BigBuckBunny_320x180.mp4 - 61.7 Mb - http://vidplay.net/38lkev0h3jv0 -from module.plugins.hoster.XFSPHoster import XFSPHoster, create_getInfo +from module.plugins.internal.XFSPHoster import XFSPHoster, create_getInfo class VidPlayNet(XFSPHoster): __name__ = "VidPlayNet" __type__ = "hoster" - __version__ = "0.02" + __version__ = "0.03" __pattern__ = r'https?://(?:www\.)?vidplay\.net/\w{12}' -- cgit v1.2.3 From ae7a7e66981456e5bbe2b54006d79b6f907be7a4 Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Wed, 8 Oct 2014 20:18:13 +0200 Subject: Add __license__ key attribute to plugins --- module/plugins/Account.py | 1 + module/plugins/Container.py | 1 + module/plugins/Crypter.py | 1 + module/plugins/Hook.py | 1 + module/plugins/Hoster.py | 1 + module/plugins/Plugin.py | 1 + module/plugins/accounts/AlldebridCom.py | 1 + module/plugins/accounts/BayfilesCom.py | 1 + module/plugins/accounts/BillionuploadsCom.py | 1 + module/plugins/accounts/BitshareCom.py | 1 + module/plugins/accounts/CramitIn.py | 1 + module/plugins/accounts/CzshareCom.py | 1 + module/plugins/accounts/DebridItaliaCom.py | 1 + module/plugins/accounts/DepositfilesCom.py | 1 + module/plugins/accounts/EasybytezCom.py | 1 + module/plugins/accounts/EuroshareEu.py | 1 + module/plugins/accounts/FastixRu.py | 1 + module/plugins/accounts/FastshareCz.py | 1 + module/plugins/accounts/File4safeCom.py | 1 + module/plugins/accounts/FileParadoxIn.py | 1 + module/plugins/accounts/FilecloudIo.py | 1 + module/plugins/accounts/FilefactoryCom.py | 1 + module/plugins/accounts/FilejungleCom.py | 1 + module/plugins/accounts/FileomCom.py | 1 + module/plugins/accounts/FilerNet.py | 1 + module/plugins/accounts/FilerioCom.py | 1 + module/plugins/accounts/FilesMailRu.py | 1 + module/plugins/accounts/FileserveCom.py | 1 + module/plugins/accounts/FourSharedCom.py | 1 + module/plugins/accounts/FreakshareCom.py | 1 + module/plugins/accounts/FreeWayMe.py | 1 + module/plugins/accounts/FshareVn.py | 1 + module/plugins/accounts/Ftp.py | 1 + module/plugins/accounts/HellshareCz.py | 1 + module/plugins/accounts/Http.py | 1 + module/plugins/accounts/HugefilesNet.py | 1 + module/plugins/accounts/HundredEightyUploadCom.py | 1 + module/plugins/accounts/LetitbitNet.py | 1 + module/plugins/accounts/LinksnappyCom.py | 1 + module/plugins/accounts/LomafileCom.py | 1 + module/plugins/accounts/MegaDebridEu.py | 1 + module/plugins/accounts/MegasharesCom.py | 1 + module/plugins/accounts/MovReelCom.py | 1 + module/plugins/accounts/MultishareCz.py | 1 + module/plugins/accounts/MyfastfileCom.py | 1 + module/plugins/accounts/NetloadIn.py | 1 + module/plugins/accounts/NosuploadCom.py | 1 + module/plugins/accounts/NovafileCom.py | 1 + module/plugins/accounts/OboomCom.py | 1 + module/plugins/accounts/OneFichierCom.py | 1 + module/plugins/accounts/OverLoadMe.py | 1 + module/plugins/accounts/PremiumTo.py | 1 + module/plugins/accounts/PremiumizeMe.py | 1 + module/plugins/accounts/QuickshareCz.py | 1 + module/plugins/accounts/RPNetBiz.py | 1 + module/plugins/accounts/RapidgatorNet.py | 1 + module/plugins/accounts/RapidshareCom.py | 1 + module/plugins/accounts/RarefileNet.py | 1 + module/plugins/accounts/RealdebridCom.py | 1 + module/plugins/accounts/RehostTo.py | 1 + module/plugins/accounts/RyushareCom.py | 1 + module/plugins/accounts/SecureUploadEu.py | 1 + module/plugins/accounts/SendmywayCom.py | 1 + module/plugins/accounts/ShareRapidCom.py | 1 + module/plugins/accounts/ShareonlineBiz.py | 1 + module/plugins/accounts/SimplyPremiumCom.py | 1 + module/plugins/accounts/SimplydebridCom.py | 1 + module/plugins/accounts/StahnuTo.py | 1 + module/plugins/accounts/StreamcloudEu.py | 1 + module/plugins/accounts/TurbobitNet.py | 1 + module/plugins/accounts/TusfilesNet.py | 1 + module/plugins/accounts/UlozTo.py | 1 + module/plugins/accounts/UnrestrictLi.py | 1 + module/plugins/accounts/UploadedTo.py | 1 + module/plugins/accounts/UploadheroCom.py | 1 + module/plugins/accounts/UploadingCom.py | 1 + module/plugins/accounts/UptoboxCom.py | 1 + module/plugins/accounts/VidPlayNet.py | 1 + module/plugins/accounts/YibaishiwuCom.py | 1 + module/plugins/accounts/ZeveraCom.py | 1 + module/plugins/captcha/GigasizeCom.py | 1 + module/plugins/captcha/LinksaveIn.py | 1 + module/plugins/captcha/NetloadIn.py | 1 + module/plugins/captcha/ShareonlineBiz.py | 1 + module/plugins/captcha/captcha.py | 1 + module/plugins/container/CCF.py | 1 + module/plugins/container/LinkList.py | 1 + module/plugins/container/RSDF.py | 1 + module/plugins/crypter/BitshareComFolder.py | 1 + module/plugins/crypter/C1neonCom.py | 1 + module/plugins/crypter/ChipDe.py | 1 + module/plugins/crypter/CrockoComFolder.py | 1 + module/plugins/crypter/CryptItCom.py | 1 + module/plugins/crypter/CzshareComFolder.py | 1 + module/plugins/crypter/DDLMusicOrg.py | 1 + module/plugins/crypter/DailymotionBatch.py | 1 + module/plugins/crypter/DataHuFolder.py | 1 + module/plugins/crypter/DdlstorageComFolder.py | 1 + module/plugins/crypter/DepositfilesComFolder.py | 1 + module/plugins/crypter/Dereferer.py | 1 + module/plugins/crypter/DevhostStFolder.py | 1 + module/plugins/crypter/DlProtectCom.py | 1 + module/plugins/crypter/DontKnowMe.py | 1 + module/plugins/crypter/DuckCryptInfo.py | 1 + module/plugins/crypter/DuploadOrgFolder.py | 1 + module/plugins/crypter/EasybytezComFolder.py | 1 + module/plugins/crypter/EmbeduploadCom.py | 1 + module/plugins/crypter/FilebeerInfoFolder.py | 1 + module/plugins/crypter/FilecloudIoFolder.py | 1 + module/plugins/crypter/FilefactoryComFolder.py | 1 + module/plugins/crypter/FilerNetFolder.py | 1 + module/plugins/crypter/FileserveComFolder.py | 1 + module/plugins/crypter/FilestubeCom.py | 1 + module/plugins/crypter/FiletramCom.py | 1 + module/plugins/crypter/FiredriveComFolder.py | 1 + module/plugins/crypter/FourChanOrg.py | 1 + module/plugins/crypter/FreakhareComFolder.py | 1 + module/plugins/crypter/FreetexthostCom.py | 1 + module/plugins/crypter/FshareVnFolder.py | 1 + module/plugins/crypter/GooGl.py | 1 + module/plugins/crypter/HoerbuchIn.py | 1 + module/plugins/crypter/HotfileFolderCom.py | 1 + module/plugins/crypter/ILoadTo.py | 1 + module/plugins/crypter/ImgurComAlbum.py | 1 + module/plugins/crypter/LetitbitNetFolder.py | 1 + module/plugins/crypter/LinkSaveIn.py | 1 + module/plugins/crypter/LinkdecrypterCom.py | 1 + module/plugins/crypter/LixIn.py | 1 + module/plugins/crypter/LofCc.py | 1 + module/plugins/crypter/MBLinkInfo.py | 1 + module/plugins/crypter/MediafireComFolder.py | 1 + module/plugins/crypter/Movie2kTo.py | 1 + module/plugins/crypter/MultiUpOrg.py | 1 + module/plugins/crypter/MultiloadCz.py | 1 + module/plugins/crypter/MultiuploadCom.py | 1 + module/plugins/crypter/NCryptIn.py | 1 + module/plugins/crypter/NetfolderIn.py | 1 + module/plugins/crypter/NosvideoCom.py | 1 + module/plugins/crypter/OneKhDe.py | 1 + module/plugins/crypter/OronComFolder.py | 1 + module/plugins/crypter/PastebinCom.py | 1 + module/plugins/crypter/QuickshareCzFolder.py | 1 + module/plugins/crypter/RSLayerCom.py | 1 + module/plugins/crypter/RelinkUs.py | 1 + module/plugins/crypter/SafelinkingNet.py | 1 + module/plugins/crypter/SecuredIn.py | 1 + module/plugins/crypter/ShareLinksBiz.py | 1 + module/plugins/crypter/ShareRapidComFolder.py | 1 + module/plugins/crypter/SpeedLoadOrgFolder.py | 1 + module/plugins/crypter/StealthTo.py | 1 + module/plugins/crypter/TnyCz.py | 1 + module/plugins/crypter/TrailerzoneInfo.py | 1 + module/plugins/crypter/TurbobitNetFolder.py | 1 + module/plugins/crypter/TusfilesNetFolder.py | 1 + module/plugins/crypter/UlozToFolder.py | 1 + module/plugins/crypter/UploadableChFolder.py | 1 + module/plugins/crypter/UploadedToFolder.py | 1 + module/plugins/crypter/WiiReloadedOrg.py | 1 + module/plugins/crypter/XupPl.py | 1 + module/plugins/crypter/YoutubeBatch.py | 1 + module/plugins/hooks/AlldebridCom.py | 1 + module/plugins/hooks/BypassCaptcha.py | 1 + module/plugins/hooks/Captcha9kw.py | 1 + module/plugins/hooks/CaptchaBrotherhood.py | 1 + module/plugins/hooks/Checksum.py | 1 + module/plugins/hooks/ClickAndLoad.py | 1 + module/plugins/hooks/DeathByCaptcha.py | 1 + module/plugins/hooks/DebridItaliaCom.py | 1 + module/plugins/hooks/DeleteFinished.py | 1 + module/plugins/hooks/DownloadScheduler.py | 1 + module/plugins/hooks/EasybytezCom.py | 1 + module/plugins/hooks/ExpertDecoders.py | 1 + module/plugins/hooks/ExternalScripts.py | 1 + module/plugins/hooks/ExtractArchive.py | 1 + module/plugins/hooks/FastixRu.py | 1 + module/plugins/hooks/FreeWayMe.py | 1 + module/plugins/hooks/HotFolder.py | 1 + module/plugins/hooks/IRCInterface.py | 1 + module/plugins/hooks/ImageTyperz.py | 1 + module/plugins/hooks/LinkdecrypterCom.py | 1 + module/plugins/hooks/LinksnappyCom.py | 1 + module/plugins/hooks/MegaDebridEu.py | 1 + module/plugins/hooks/MergeFiles.py | 1 + module/plugins/hooks/MultiHome.py | 1 + module/plugins/hooks/MultishareCz.py | 1 + module/plugins/hooks/MyfastfileCom.py | 1 + module/plugins/hooks/OverLoadMe.py | 1 + module/plugins/hooks/PremiumTo.py | 1 + module/plugins/hooks/PremiumizeMe.py | 1 + module/plugins/hooks/RPNetBiz.py | 1 + module/plugins/hooks/RealdebridCom.py | 1 + module/plugins/hooks/RehostTo.py | 1 + module/plugins/hooks/RestartFailed.py | 1 + module/plugins/hooks/SimplyPremiumCom.py | 1 + module/plugins/hooks/SimplydebridCom.py | 1 + module/plugins/hooks/UnSkipOnFail.py | 1 + module/plugins/hooks/UnrestrictLi.py | 1 + module/plugins/hooks/UpdateManager.py | 1 + module/plugins/hooks/WindowsPhoneToastNotify.py | 1 + module/plugins/hooks/XFileSharingPro.py | 1 + module/plugins/hooks/XMPPInterface.py | 1 + module/plugins/hooks/ZeveraCom.py | 1 + module/plugins/hoster/AlldebridCom.py | 1 + module/plugins/hoster/BasePlugin.py | 1 + module/plugins/hoster/BayfilesCom.py | 1 + module/plugins/hoster/BezvadataCz.py | 1 + module/plugins/hoster/BillionuploadsCom.py | 1 + module/plugins/hoster/BitshareCom.py | 1 + module/plugins/hoster/BoltsharingCom.py | 1 + module/plugins/hoster/CatShareNet.py | 1 + module/plugins/hoster/CloudzerNet.py | 1 + module/plugins/hoster/CramitIn.py | 1 + module/plugins/hoster/CrockoCom.py | 1 + module/plugins/hoster/CyberlockerCh.py | 1 + module/plugins/hoster/CzshareCom.py | 1 + module/plugins/hoster/DailymotionCom.py | 1 + module/plugins/hoster/DataHu.py | 1 + module/plugins/hoster/DataportCz.py | 1 + module/plugins/hoster/DateiTo.py | 1 + module/plugins/hoster/DdlstorageCom.py | 1 + module/plugins/hoster/DebridItaliaCom.py | 1 + module/plugins/hoster/DepositfilesCom.py | 1 + module/plugins/hoster/DevhostSt.py | 1 + module/plugins/hoster/DlFreeFr.py | 1 + module/plugins/hoster/DropboxCom.py | 1 + module/plugins/hoster/DuploadOrg.py | 1 + module/plugins/hoster/EasybytezCom.py | 1 + module/plugins/hoster/EdiskCz.py | 1 + module/plugins/hoster/EgoFilesCom.py | 1 + module/plugins/hoster/EpicShareNet.py | 1 + module/plugins/hoster/EuroshareEu.py | 1 + module/plugins/hoster/ExtabitCom.py | 1 + module/plugins/hoster/FastixRu.py | 1 + module/plugins/hoster/FastshareCz.py | 1 + module/plugins/hoster/File4safeCom.py | 1 + module/plugins/hoster/FileApeCom.py | 1 + module/plugins/hoster/FileParadoxIn.py | 1 + module/plugins/hoster/FileStoreTo.py | 1 + module/plugins/hoster/FilebeerInfo.py | 1 + module/plugins/hoster/FilecloudIo.py | 1 + module/plugins/hoster/FilefactoryCom.py | 1 + module/plugins/hoster/FilejungleCom.py | 1 + module/plugins/hoster/FileomCom.py | 1 + module/plugins/hoster/FilepostCom.py | 1 + module/plugins/hoster/FilepupNet.py | 1 + module/plugins/hoster/FilerNet.py | 1 + module/plugins/hoster/FilerioCom.py | 1 + module/plugins/hoster/FilesMailRu.py | 1 + module/plugins/hoster/FileserveCom.py | 1 + module/plugins/hoster/FileshareInUa.py | 1 + module/plugins/hoster/FilezyNet.py | 1 + module/plugins/hoster/FiredriveCom.py | 1 + module/plugins/hoster/FlyFilesNet.py | 1 + module/plugins/hoster/FourSharedCom.py | 1 + module/plugins/hoster/FreakshareCom.py | 1 + module/plugins/hoster/FreeWayMe.py | 1 + module/plugins/hoster/FreevideoCz.py | 1 + module/plugins/hoster/FshareVn.py | 1 + module/plugins/hoster/Ftp.py | 1 + module/plugins/hoster/GamefrontCom.py | 1 + module/plugins/hoster/GigapetaCom.py | 1 + module/plugins/hoster/GooIm.py | 1 + module/plugins/hoster/HellshareCz.py | 1 + module/plugins/hoster/HellspyCz.py | 1 + module/plugins/hoster/HotfileCom.py | 1 + module/plugins/hoster/HugefilesNet.py | 1 + module/plugins/hoster/HundredEightyUploadCom.py | 1 + module/plugins/hoster/IFileWs.py | 1 + module/plugins/hoster/IcyFilesCom.py | 1 + module/plugins/hoster/IfileIt.py | 1 + module/plugins/hoster/IfolderRu.py | 1 + module/plugins/hoster/JumbofilesCom.py | 1 + module/plugins/hoster/Keep2shareCC.py | 1 + module/plugins/hoster/KingfilesNet.py | 1 + module/plugins/hoster/LemUploadsCom.py | 1 + module/plugins/hoster/LetitbitNet.py | 1 + module/plugins/hoster/LinksnappyCom.py | 1 + module/plugins/hoster/LoadTo.py | 1 + module/plugins/hoster/LomafileCom.py | 1 + module/plugins/hoster/LuckyShareNet.py | 1 + module/plugins/hoster/MediafireCom.py | 1 + module/plugins/hoster/MegaDebridEu.py | 1 + module/plugins/hoster/MegaFilesSe.py | 1 + module/plugins/hoster/MegaNz.py | 1 + module/plugins/hoster/MegacrypterCom.py | 1 + module/plugins/hoster/MegareleaseOrg.py | 1 + module/plugins/hoster/MegasharesCom.py | 1 + module/plugins/hoster/MovReelCom.py | 1 + module/plugins/hoster/MultishareCz.py | 1 + module/plugins/hoster/MyfastfileCom.py | 1 + module/plugins/hoster/MyvideoDe.py | 1 + module/plugins/hoster/NarodRu.py | 1 + module/plugins/hoster/NetloadIn.py | 1 + module/plugins/hoster/NosuploadCom.py | 1 + module/plugins/hoster/NovafileCom.py | 1 + module/plugins/hoster/NowDownloadEu.py | 1 + module/plugins/hoster/OboomCom.py | 1 + module/plugins/hoster/OneFichierCom.py | 1 + module/plugins/hoster/OverLoadMe.py | 1 + module/plugins/hoster/PandaPlaNet.py | 1 + module/plugins/hoster/PornhostCom.py | 1 + module/plugins/hoster/PornhubCom.py | 1 + module/plugins/hoster/PotloadCom.py | 1 + module/plugins/hoster/PremiumTo.py | 1 + module/plugins/hoster/PremiumizeMe.py | 1 + module/plugins/hoster/PromptfileCom.py | 1 + module/plugins/hoster/QuickshareCz.py | 1 + module/plugins/hoster/RPNetBiz.py | 1 + module/plugins/hoster/RapidgatorNet.py | 1 + module/plugins/hoster/RapidshareCom.py | 1 + module/plugins/hoster/RarefileNet.py | 1 + module/plugins/hoster/RealdebridCom.py | 1 + module/plugins/hoster/RedtubeCom.py | 1 + module/plugins/hoster/RehostTo.py | 1 + module/plugins/hoster/RemixshareCom.py | 1 + module/plugins/hoster/RgHostNet.py | 1 + module/plugins/hoster/RyushareCom.py | 1 + module/plugins/hoster/SecureUploadEu.py | 1 + module/plugins/hoster/SendmywayCom.py | 1 + module/plugins/hoster/SendspaceCom.py | 1 + module/plugins/hoster/Share4webCom.py | 1 + module/plugins/hoster/Share76Com.py | 1 + module/plugins/hoster/ShareFilesCo.py | 1 + module/plugins/hoster/ShareRapidCom.py | 1 + module/plugins/hoster/SharebeesCom.py | 1 + module/plugins/hoster/ShareonlineBiz.py | 1 + module/plugins/hoster/ShareplaceCom.py | 1 + module/plugins/hoster/ShragleCom.py | 1 + module/plugins/hoster/SimplyPremiumCom.py | 1 + module/plugins/hoster/SimplydebridCom.py | 1 + module/plugins/hoster/SockshareCom.py | 1 + module/plugins/hoster/SoundcloudCom.py | 1 + module/plugins/hoster/SpeedLoadOrg.py | 1 + module/plugins/hoster/SpeedfileCz.py | 1 + module/plugins/hoster/SpeedyshareCom.py | 1 + module/plugins/hoster/StreamCz.py | 1 + module/plugins/hoster/StreamcloudEu.py | 1 + module/plugins/hoster/TurbobitNet.py | 1 + module/plugins/hoster/TurbouploadCom.py | 1 + module/plugins/hoster/TusfilesNet.py | 1 + module/plugins/hoster/TwoSharedCom.py | 1 + module/plugins/hoster/UlozTo.py | 1 + module/plugins/hoster/UloziskoSk.py | 1 + module/plugins/hoster/UnibytesCom.py | 1 + module/plugins/hoster/UnrestrictLi.py | 1 + module/plugins/hoster/UploadStationCom.py | 1 + module/plugins/hoster/UploadedTo.py | 1 + module/plugins/hoster/UploadheroCom.py | 1 + module/plugins/hoster/UploadingCom.py | 1 + module/plugins/hoster/UpstoreNet.py | 1 + module/plugins/hoster/UptoboxCom.py | 1 + module/plugins/hoster/VeehdCom.py | 1 + module/plugins/hoster/VeohCom.py | 1 + module/plugins/hoster/VidPlayNet.py | 1 + module/plugins/hoster/VimeoCom.py | 1 + module/plugins/hoster/Vipleech4uCom.py | 1 + module/plugins/hoster/WarserverCz.py | 1 + module/plugins/hoster/WebshareCz.py | 1 + module/plugins/hoster/WrzucTo.py | 1 + module/plugins/hoster/WuploadCom.py | 1 + module/plugins/hoster/X7To.py | 1 + module/plugins/hoster/XFileSharingPro.py | 1 + module/plugins/hoster/XHamsterCom.py | 1 + module/plugins/hoster/XVideosCom.py | 1 + module/plugins/hoster/Xdcc.py | 1 + module/plugins/hoster/YibaishiwuCom.py | 1 + module/plugins/hoster/YoupornCom.py | 1 + module/plugins/hoster/YourfilesTo.py | 1 + module/plugins/hoster/YoutubeCom.py | 1 + module/plugins/hoster/ZDF.py | 1 + module/plugins/hoster/ZeveraCom.py | 1 + module/plugins/hoster/ZippyshareCom.py | 1 + module/plugins/internal/AbstractExtractor.py | 1 + module/plugins/internal/CaptchaService.py | 4 ++++ module/plugins/internal/DeadCrypter.py | 1 + module/plugins/internal/DeadHoster.py | 1 + module/plugins/internal/MultiHoster.py | 1 + module/plugins/internal/SimpleCrypter.py | 1 + module/plugins/internal/SimpleHoster.py | 1 + module/plugins/internal/UnRar.py | 1 + module/plugins/internal/UnZip.py | 1 + module/plugins/internal/XFSPAccount.py | 1 + module/plugins/internal/XFSPHoster.py | 1 + 383 files changed, 386 insertions(+) (limited to 'module') diff --git a/module/plugins/Account.py b/module/plugins/Account.py index 28d9ffd68..1adba6af4 100644 --- a/module/plugins/Account.py +++ b/module/plugins/Account.py @@ -24,6 +24,7 @@ class Account(Base): __version__ = "0.3" __description__ = """Base account plugin""" + __license__ = "GPLv3" __authors__ = [("mkaay", "mkaay@mkaay.de")] diff --git a/module/plugins/Container.py b/module/plugins/Container.py index f19672587..f5a0fac14 100644 --- a/module/plugins/Container.py +++ b/module/plugins/Container.py @@ -17,6 +17,7 @@ class Container(Crypter): __pattern__ = None __description__ = """Base container decrypter plugin""" + __license__ = "GPLv3" __authors__ = [("mkaay", "mkaay@mkaay.de")] diff --git a/module/plugins/Crypter.py b/module/plugins/Crypter.py index 7cb54f5f3..d2c6c624c 100644 --- a/module/plugins/Crypter.py +++ b/module/plugins/Crypter.py @@ -11,6 +11,7 @@ class Crypter(Plugin): __pattern__ = None __description__ = """Base decrypter plugin""" + __license__ = "GPLv3" __authors__ = [("mkaay", "mkaay@mkaay.de")] diff --git a/module/plugins/Hook.py b/module/plugins/Hook.py index 407328dc8..1e4749cd5 100644 --- a/module/plugins/Hook.py +++ b/module/plugins/Hook.py @@ -32,6 +32,7 @@ class Hook(Base): __config__ = [("name", "type", "desc", "default")] __description__ = """Interface for hook""" + __license__ = "GPLv3" __authors__ = [("mkaay", "mkaay@mkaay.de"), ("RaNaN", "RaNaN@pyload.org")] diff --git a/module/plugins/Hoster.py b/module/plugins/Hoster.py index be05aaf32..535d7e3f2 100644 --- a/module/plugins/Hoster.py +++ b/module/plugins/Hoster.py @@ -16,4 +16,5 @@ class Hoster(Plugin): __pattern__ = None __description__ = """Base hoster plugin""" + __license__ = "GPLv3" __authors__ = [("mkaay", "mkaay@mkaay.de")] diff --git a/module/plugins/Plugin.py b/module/plugins/Plugin.py index 70da88312..fa1d2c3b1 100644 --- a/module/plugins/Plugin.py +++ b/module/plugins/Plugin.py @@ -133,6 +133,7 @@ class Plugin(Base): __config__ = [("name", "type", "desc", "default")] __description__ = """Base plugin""" + __license__ = "GPLv3" __authors__ = [("RaNaN", "RaNaN@pyload.org"), ("spoob", "spoob@pyload.org"), ("mkaay", "mkaay@mkaay.de")] diff --git a/module/plugins/accounts/AlldebridCom.py b/module/plugins/accounts/AlldebridCom.py index 06469847e..3ebdae629 100644 --- a/module/plugins/accounts/AlldebridCom.py +++ b/module/plugins/accounts/AlldebridCom.py @@ -17,6 +17,7 @@ class AlldebridCom(Account): __version__ = "0.22" __description__ = """AllDebrid.com account plugin""" + __license__ = "GPLv3" __authors__ = [("Andy Voigt", "spamsales@online.de")] diff --git a/module/plugins/accounts/BayfilesCom.py b/module/plugins/accounts/BayfilesCom.py index a678a3523..b1166b83a 100644 --- a/module/plugins/accounts/BayfilesCom.py +++ b/module/plugins/accounts/BayfilesCom.py @@ -12,6 +12,7 @@ class BayfilesCom(Account): __version__ = "0.03" __description__ = """Bayfiles.com account plugin""" + __license__ = "GPLv3" __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] diff --git a/module/plugins/accounts/BillionuploadsCom.py b/module/plugins/accounts/BillionuploadsCom.py index 440c7889a..54f0db1c6 100644 --- a/module/plugins/accounts/BillionuploadsCom.py +++ b/module/plugins/accounts/BillionuploadsCom.py @@ -9,6 +9,7 @@ class BillionuploadsCom(XFSPAccount): __version__ = "0.01" __description__ = """Billionuploads.com account plugin""" + __license__ = "GPLv3" __authors__ = [("Walter Purcaro", "vuolter@gmail.com")] diff --git a/module/plugins/accounts/BitshareCom.py b/module/plugins/accounts/BitshareCom.py index e5aef16b8..ea1cca53b 100644 --- a/module/plugins/accounts/BitshareCom.py +++ b/module/plugins/accounts/BitshareCom.py @@ -9,6 +9,7 @@ class BitshareCom(Account): __version__ = "0.12" __description__ = """Bitshare account plugin""" + __license__ = "GPLv3" __authors__ = [("Paul King", None)] diff --git a/module/plugins/accounts/CramitIn.py b/module/plugins/accounts/CramitIn.py index b84e7f8cc..5edc2dac0 100644 --- a/module/plugins/accounts/CramitIn.py +++ b/module/plugins/accounts/CramitIn.py @@ -9,6 +9,7 @@ class CramitIn(XFSPAccount): __version__ = "0.02" __description__ = """Cramit.in account plugin""" + __license__ = "GPLv3" __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] diff --git a/module/plugins/accounts/CzshareCom.py b/module/plugins/accounts/CzshareCom.py index ffe1c8285..c3c1bbcc8 100644 --- a/module/plugins/accounts/CzshareCom.py +++ b/module/plugins/accounts/CzshareCom.py @@ -12,6 +12,7 @@ class CzshareCom(Account): __version__ = "0.14" __description__ = """Czshare.com account plugin, now Sdilej.cz""" + __license__ = "GPLv3" __authors__ = [("zoidberg", "zoidberg@mujmail.cz"), ("stickell", "l.stickell@yahoo.it")] diff --git a/module/plugins/accounts/DebridItaliaCom.py b/module/plugins/accounts/DebridItaliaCom.py index c91a69945..c8bc89159 100644 --- a/module/plugins/accounts/DebridItaliaCom.py +++ b/module/plugins/accounts/DebridItaliaCom.py @@ -12,6 +12,7 @@ class DebridItaliaCom(Account): __version__ = "0.1" __description__ = """Debriditalia.com account plugin""" + __license__ = "GPLv3" __authors__ = [("stickell", "l.stickell@yahoo.it")] diff --git a/module/plugins/accounts/DepositfilesCom.py b/module/plugins/accounts/DepositfilesCom.py index 50499c1b2..e4ef4a578 100644 --- a/module/plugins/accounts/DepositfilesCom.py +++ b/module/plugins/accounts/DepositfilesCom.py @@ -13,6 +13,7 @@ class DepositfilesCom(Account): __version__ = "0.3" __description__ = """Depositfiles.com account plugin""" + __license__ = "GPLv3" __authors__ = [("mkaay", "mkaay@mkaay.de"), ("stickell", "l.stickell@yahoo.it"), ("Walter Purcaro", "vuolter@gmail.com")] diff --git a/module/plugins/accounts/EasybytezCom.py b/module/plugins/accounts/EasybytezCom.py index 1656b4387..00732c12d 100644 --- a/module/plugins/accounts/EasybytezCom.py +++ b/module/plugins/accounts/EasybytezCom.py @@ -14,6 +14,7 @@ class EasybytezCom(XFSPAccount): __version__ = "0.07" __description__ = """EasyBytez.com account plugin""" + __license__ = "GPLv3" __authors__ = [("zoidberg", "zoidberg@mujmail.cz"), ("guidobelix", "guidobelix@hotmail.it")] diff --git a/module/plugins/accounts/EuroshareEu.py b/module/plugins/accounts/EuroshareEu.py index dc64c9d43..984d429f4 100644 --- a/module/plugins/accounts/EuroshareEu.py +++ b/module/plugins/accounts/EuroshareEu.py @@ -12,6 +12,7 @@ class EuroshareEu(Account): __version__ = "0.01" __description__ = """Euroshare.eu account plugin""" + __license__ = "GPLv3" __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] diff --git a/module/plugins/accounts/FastixRu.py b/module/plugins/accounts/FastixRu.py index c69f73735..10328b840 100644 --- a/module/plugins/accounts/FastixRu.py +++ b/module/plugins/accounts/FastixRu.py @@ -10,6 +10,7 @@ class FastixRu(Account): __version__ = "0.02" __description__ = """Fastix account plugin""" + __license__ = "GPLv3" __authors__ = [("Massimo Rosamilia", "max@spiritix.eu")] diff --git a/module/plugins/accounts/FastshareCz.py b/module/plugins/accounts/FastshareCz.py index ed68cf500..62ea0ba7b 100644 --- a/module/plugins/accounts/FastshareCz.py +++ b/module/plugins/accounts/FastshareCz.py @@ -11,6 +11,7 @@ class FastshareCz(Account): __version__ = "0.03" __description__ = """Fastshare.cz account plugin""" + __license__ = "GPLv3" __authors__ = [("zoidberg", "zoidberg@mujmail.cz"), ("stickell", "l.stickell@yahoo.it")] diff --git a/module/plugins/accounts/File4safeCom.py b/module/plugins/accounts/File4safeCom.py index bcf48772f..0a930ed77 100644 --- a/module/plugins/accounts/File4safeCom.py +++ b/module/plugins/accounts/File4safeCom.py @@ -9,6 +9,7 @@ class File4safeCom(XFSPAccount): __version__ = "0.02" __description__ = """File4safe.com account plugin""" + __license__ = "GPLv3" __authors__ = [("stickell", "l.stickell@yahoo.it")] diff --git a/module/plugins/accounts/FileParadoxIn.py b/module/plugins/accounts/FileParadoxIn.py index 24c745e6a..6a10e213f 100644 --- a/module/plugins/accounts/FileParadoxIn.py +++ b/module/plugins/accounts/FileParadoxIn.py @@ -9,6 +9,7 @@ class FileParadoxIn(XFSPAccount): __version__ = "0.01" __description__ = """FileParadox.in account plugin""" + __license__ = "GPLv3" __authors__ = [("Walter Purcaro", "vuolter@gmail.com")] diff --git a/module/plugins/accounts/FilecloudIo.py b/module/plugins/accounts/FilecloudIo.py index ffc427bcd..364f349da 100644 --- a/module/plugins/accounts/FilecloudIo.py +++ b/module/plugins/accounts/FilecloudIo.py @@ -10,6 +10,7 @@ class FilecloudIo(Account): __version__ = "0.02" __description__ = """FilecloudIo account plugin""" + __license__ = "GPLv3" __authors__ = [("zoidberg", "zoidberg@mujmail.cz"), ("stickell", "l.stickell@yahoo.it")] diff --git a/module/plugins/accounts/FilefactoryCom.py b/module/plugins/accounts/FilefactoryCom.py index a116eb7c5..b46706b93 100644 --- a/module/plugins/accounts/FilefactoryCom.py +++ b/module/plugins/accounts/FilefactoryCom.py @@ -14,6 +14,7 @@ class FilefactoryCom(Account): __version__ = "0.14" __description__ = """Filefactory.com account plugin""" + __license__ = "GPLv3" __authors__ = [("zoidberg", "zoidberg@mujmail.cz"), ("stickell", "l.stickell@yahoo.it")] diff --git a/module/plugins/accounts/FilejungleCom.py b/module/plugins/accounts/FilejungleCom.py index e5f7e4235..2db3b1138 100644 --- a/module/plugins/accounts/FilejungleCom.py +++ b/module/plugins/accounts/FilejungleCom.py @@ -12,6 +12,7 @@ class FilejungleCom(Account): __version__ = "0.11" __description__ = """Filejungle.com account plugin""" + __license__ = "GPLv3" __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] diff --git a/module/plugins/accounts/FileomCom.py b/module/plugins/accounts/FileomCom.py index 536d40812..45bff8f92 100644 --- a/module/plugins/accounts/FileomCom.py +++ b/module/plugins/accounts/FileomCom.py @@ -9,6 +9,7 @@ class FileomCom(XFSPAccount): __version__ = "0.01" __description__ = """Fileom.com account plugin""" + __license__ = "GPLv3" __authors__ = [("Walter Purcaro", "vuolter@gmail.com")] diff --git a/module/plugins/accounts/FilerNet.py b/module/plugins/accounts/FilerNet.py index a26a45690..811d7c8a1 100644 --- a/module/plugins/accounts/FilerNet.py +++ b/module/plugins/accounts/FilerNet.py @@ -13,6 +13,7 @@ class FilerNet(Account): __version__ = "0.01" __description__ = """Filer.net account plugin""" + __license__ = "GPLv3" __authors__ = [("stickell", "l.stickell@yahoo.it")] diff --git a/module/plugins/accounts/FilerioCom.py b/module/plugins/accounts/FilerioCom.py index 4a77a66a0..51bf106ed 100644 --- a/module/plugins/accounts/FilerioCom.py +++ b/module/plugins/accounts/FilerioCom.py @@ -9,6 +9,7 @@ class FilerioCom(XFSPAccount): __version__ = "0.02" __description__ = """FileRio.in account plugin""" + __license__ = "GPLv3" __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] diff --git a/module/plugins/accounts/FilesMailRu.py b/module/plugins/accounts/FilesMailRu.py index 917fd3c48..93d4ff486 100644 --- a/module/plugins/accounts/FilesMailRu.py +++ b/module/plugins/accounts/FilesMailRu.py @@ -9,6 +9,7 @@ class FilesMailRu(Account): __version__ = "0.1" __description__ = """Filesmail.ru account plugin""" + __license__ = "GPLv3" __authors__ = [("RaNaN", "RaNaN@pyload.org")] diff --git a/module/plugins/accounts/FileserveCom.py b/module/plugins/accounts/FileserveCom.py index 4f9d03e3e..603ee3991 100644 --- a/module/plugins/accounts/FileserveCom.py +++ b/module/plugins/accounts/FileserveCom.py @@ -12,6 +12,7 @@ class FileserveCom(Account): __version__ = "0.2" __description__ = """Fileserve.com account plugin""" + __license__ = "GPLv3" __authors__ = [("mkaay", "mkaay@mkaay.de")] diff --git a/module/plugins/accounts/FourSharedCom.py b/module/plugins/accounts/FourSharedCom.py index 303185c6d..cd32fbca9 100644 --- a/module/plugins/accounts/FourSharedCom.py +++ b/module/plugins/accounts/FourSharedCom.py @@ -9,6 +9,7 @@ class FourSharedCom(Account): __type__ = "account" __version__ = "0.03" __description__ = """FourShared.com account plugin""" + __license__ = "GPLv3" __authors__ = [("zoidberg", "zoidberg@mujmail.cz"), ("stickell", "l.stickell@yahoo.it")] diff --git a/module/plugins/accounts/FreakshareCom.py b/module/plugins/accounts/FreakshareCom.py index 2b093167e..949e5a8ba 100644 --- a/module/plugins/accounts/FreakshareCom.py +++ b/module/plugins/accounts/FreakshareCom.py @@ -12,6 +12,7 @@ class FreakshareCom(Account): __version__ = "0.1" __description__ = """Freakshare.com account plugin""" + __license__ = "GPLv3" __authors__ = [("RaNaN", "RaNaN@pyload.org")] diff --git a/module/plugins/accounts/FreeWayMe.py b/module/plugins/accounts/FreeWayMe.py index 3f09f8706..333525d82 100644 --- a/module/plugins/accounts/FreeWayMe.py +++ b/module/plugins/accounts/FreeWayMe.py @@ -10,6 +10,7 @@ class FreeWayMe(Account): __version__ = "0.11" __description__ = """FreeWayMe account plugin""" + __license__ = "GPLv3" __authors__ = [("Nicolas Giese", "james@free-way.me")] diff --git a/module/plugins/accounts/FshareVn.py b/module/plugins/accounts/FshareVn.py index 9e3521a5f..11ad736f6 100644 --- a/module/plugins/accounts/FshareVn.py +++ b/module/plugins/accounts/FshareVn.py @@ -13,6 +13,7 @@ class FshareVn(Account): __version__ = "0.07" __description__ = """Fshare.vn account plugin""" + __license__ = "GPLv3" __authors__ = [("zoidberg", "zoidberg@mujmail.cz"), ("stickell", "l.stickell@yahoo.it")] diff --git a/module/plugins/accounts/Ftp.py b/module/plugins/accounts/Ftp.py index d2e040768..698051ede 100644 --- a/module/plugins/accounts/Ftp.py +++ b/module/plugins/accounts/Ftp.py @@ -9,6 +9,7 @@ class Ftp(Account): __version__ = "0.01" __description__ = """Ftp dummy account plugin""" + __license__ = "GPLv3" __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] diff --git a/module/plugins/accounts/HellshareCz.py b/module/plugins/accounts/HellshareCz.py index fc32bf188..33d4df7d3 100644 --- a/module/plugins/accounts/HellshareCz.py +++ b/module/plugins/accounts/HellshareCz.py @@ -12,6 +12,7 @@ class HellshareCz(Account): __version__ = "0.14" __description__ = """Hellshare.cz account plugin""" + __license__ = "GPLv3" __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] diff --git a/module/plugins/accounts/Http.py b/module/plugins/accounts/Http.py index 09c607c98..c7b03a668 100644 --- a/module/plugins/accounts/Http.py +++ b/module/plugins/accounts/Http.py @@ -9,6 +9,7 @@ class Http(Account): __version__ = "0.01" __description__ = """Http dummy account plugin""" + __license__ = "GPLv3" __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] diff --git a/module/plugins/accounts/HugefilesNet.py b/module/plugins/accounts/HugefilesNet.py index 296780b7c..0adc1e511 100644 --- a/module/plugins/accounts/HugefilesNet.py +++ b/module/plugins/accounts/HugefilesNet.py @@ -9,6 +9,7 @@ class HugefilesNet(XFSPAccount): __version__ = "0.01" __description__ = """Hugefiles.net account plugin""" + __license__ = "GPLv3" __authors__ = [("Walter Purcaro", "vuolter@gmail.com")] diff --git a/module/plugins/accounts/HundredEightyUploadCom.py b/module/plugins/accounts/HundredEightyUploadCom.py index 76e757222..1c78edfa4 100644 --- a/module/plugins/accounts/HundredEightyUploadCom.py +++ b/module/plugins/accounts/HundredEightyUploadCom.py @@ -9,6 +9,7 @@ class HundredEightyUploadCom(XFSPAccount): __version__ = "0.01" __description__ = """180upload.com account plugin""" + __license__ = "GPLv3" __authors__ = [("Walter Purcaro", "vuolter@gmail.com")] diff --git a/module/plugins/accounts/LetitbitNet.py b/module/plugins/accounts/LetitbitNet.py index c0441460b..ca6360068 100644 --- a/module/plugins/accounts/LetitbitNet.py +++ b/module/plugins/accounts/LetitbitNet.py @@ -10,6 +10,7 @@ class LetitbitNet(Account): __version__ = "0.01" __description__ = """Letitbit.net account plugin""" + __license__ = "GPLv3" __authors__ = [("stickell", "l.stickell@yahoo.it")] diff --git a/module/plugins/accounts/LinksnappyCom.py b/module/plugins/accounts/LinksnappyCom.py index 86bd203a4..e9ca91375 100644 --- a/module/plugins/accounts/LinksnappyCom.py +++ b/module/plugins/accounts/LinksnappyCom.py @@ -12,6 +12,7 @@ class LinksnappyCom(Account): __version__ = "0.02" __description__ = """Linksnappy.com account plugin""" + __license__ = "GPLv3" __authors__ = [("stickell", "l.stickell@yahoo.it")] diff --git a/module/plugins/accounts/LomafileCom.py b/module/plugins/accounts/LomafileCom.py index bddccdadc..c3e75b1d9 100644 --- a/module/plugins/accounts/LomafileCom.py +++ b/module/plugins/accounts/LomafileCom.py @@ -9,6 +9,7 @@ class LomafileCom(XFSPAccount): __version__ = "0.01" __description__ = """Lomafile.com account plugin""" + __license__ = "GPLv3" __authors__ = [("guidobelix", "guidobelix@hotmail.it")] diff --git a/module/plugins/accounts/MegaDebridEu.py b/module/plugins/accounts/MegaDebridEu.py index 59d5be580..e92bb4cb3 100644 --- a/module/plugins/accounts/MegaDebridEu.py +++ b/module/plugins/accounts/MegaDebridEu.py @@ -10,6 +10,7 @@ class MegaDebridEu(Account): __version__ = "0.2" __description__ = """mega-debrid.eu account plugin""" + __license__ = "GPLv3" __authors__ = [("D.Ducatel", "dducatel@je-geek.fr")] diff --git a/module/plugins/accounts/MegasharesCom.py b/module/plugins/accounts/MegasharesCom.py index 019dbc5b4..f1ef3fdd8 100644 --- a/module/plugins/accounts/MegasharesCom.py +++ b/module/plugins/accounts/MegasharesCom.py @@ -12,6 +12,7 @@ class MegasharesCom(Account): __version__ = "0.02" __description__ = """Megashares.com account plugin""" + __license__ = "GPLv3" __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] diff --git a/module/plugins/accounts/MovReelCom.py b/module/plugins/accounts/MovReelCom.py index 09e096922..3f641cf72 100644 --- a/module/plugins/accounts/MovReelCom.py +++ b/module/plugins/accounts/MovReelCom.py @@ -9,6 +9,7 @@ class MovReelCom(XFSPAccount): __version__ = "0.02" __description__ = """Movreel.com account plugin""" + __license__ = "GPLv3" __authors__ = [("t4skforce", "t4skforce1337[AT]gmail[DOT]com")] diff --git a/module/plugins/accounts/MultishareCz.py b/module/plugins/accounts/MultishareCz.py index 12d4c301b..851599e89 100644 --- a/module/plugins/accounts/MultishareCz.py +++ b/module/plugins/accounts/MultishareCz.py @@ -13,6 +13,7 @@ class MultishareCz(Account): __version__ = "0.02" __description__ = """Multishare.cz account plugin""" + __license__ = "GPLv3" __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] diff --git a/module/plugins/accounts/MyfastfileCom.py b/module/plugins/accounts/MyfastfileCom.py index ed17ac4f2..06e89c0c1 100644 --- a/module/plugins/accounts/MyfastfileCom.py +++ b/module/plugins/accounts/MyfastfileCom.py @@ -11,6 +11,7 @@ class MyfastfileCom(Account): __type__ = "account" __version__ = "0.02" __description__ = """Myfastfile.com account plugin""" + __license__ = "GPLv3" __authors__ = [("stickell", "l.stickell@yahoo.it")] diff --git a/module/plugins/accounts/NetloadIn.py b/module/plugins/accounts/NetloadIn.py index 1edcd3f2b..01d6f4476 100755 --- a/module/plugins/accounts/NetloadIn.py +++ b/module/plugins/accounts/NetloadIn.py @@ -12,6 +12,7 @@ class NetloadIn(Account): __version__ = "0.22" __description__ = """Netload.in account plugin""" + __license__ = "GPLv3" __authors__ = [("RaNaN", "RaNaN@pyload.org"), ("CryNickSystems", "webmaster@pcProfil.de")] diff --git a/module/plugins/accounts/NosuploadCom.py b/module/plugins/accounts/NosuploadCom.py index a75ca289f..3be5f110d 100644 --- a/module/plugins/accounts/NosuploadCom.py +++ b/module/plugins/accounts/NosuploadCom.py @@ -9,6 +9,7 @@ class NosuploadCom(XFSPAccount): __version__ = "0.01" __description__ = """Nosupload.com account plugin""" + __license__ = "GPLv3" __authors__ = [("Walter Purcaro", "vuolter@gmail.com")] diff --git a/module/plugins/accounts/NovafileCom.py b/module/plugins/accounts/NovafileCom.py index 34d3e25b5..823f486c7 100644 --- a/module/plugins/accounts/NovafileCom.py +++ b/module/plugins/accounts/NovafileCom.py @@ -9,6 +9,7 @@ class NovafileCom(XFSPAccount): __version__ = "0.01" __description__ = """Novafile.com account plugin""" + __license__ = "GPLv3" __authors__ = [("Walter Purcaro", "vuolter@gmail.com")] diff --git a/module/plugins/accounts/OboomCom.py b/module/plugins/accounts/OboomCom.py index ac2079f59..ba71fcbbd 100644 --- a/module/plugins/accounts/OboomCom.py +++ b/module/plugins/accounts/OboomCom.py @@ -14,6 +14,7 @@ class OboomCom(Account): __version__ = "0.2" __description__ = """Oboom.com account plugin""" + __license__ = "GPLv3" __authors__ = [("stanley", "stanley.foerster@gmail.com")] diff --git a/module/plugins/accounts/OneFichierCom.py b/module/plugins/accounts/OneFichierCom.py index 347aa0297..1e44ae2ca 100644 --- a/module/plugins/accounts/OneFichierCom.py +++ b/module/plugins/accounts/OneFichierCom.py @@ -13,6 +13,7 @@ class OneFichierCom(Account): __version__ = "0.1" __description__ = """1fichier.com account plugin""" + __license__ = "GPLv3" __authors__ = [("Elrick69", "elrick69[AT]rocketmail[DOT]com")] diff --git a/module/plugins/accounts/OverLoadMe.py b/module/plugins/accounts/OverLoadMe.py index e45f0127b..1d0bf3321 100644 --- a/module/plugins/accounts/OverLoadMe.py +++ b/module/plugins/accounts/OverLoadMe.py @@ -10,6 +10,7 @@ class OverLoadMe(Account): __version__ = "0.01" __description__ = """Over-Load.me account plugin""" + __license__ = "GPLv3" __authors__ = [("marley", "marley@over-load.me")] diff --git a/module/plugins/accounts/PremiumTo.py b/module/plugins/accounts/PremiumTo.py index 51dff2cc3..4ab107094 100644 --- a/module/plugins/accounts/PremiumTo.py +++ b/module/plugins/accounts/PremiumTo.py @@ -9,6 +9,7 @@ class PremiumTo(Account): __version__ = "0.04" __description__ = """Premium.to account plugin""" + __license__ = "GPLv3" __authors__ = [("RaNaN", "RaNaN@pyload.org"), ("zoidberg", "zoidberg@mujmail.cz"), ("stickell", "l.stickell@yahoo.it")] diff --git a/module/plugins/accounts/PremiumizeMe.py b/module/plugins/accounts/PremiumizeMe.py index abc4dd464..1f8790495 100644 --- a/module/plugins/accounts/PremiumizeMe.py +++ b/module/plugins/accounts/PremiumizeMe.py @@ -11,6 +11,7 @@ class PremiumizeMe(Account): __version__ = "0.11" __description__ = """Premiumize.me account plugin""" + __license__ = "GPLv3" __authors__ = [("Florian Franzen", "FlorianFranzen@gmail.com")] diff --git a/module/plugins/accounts/QuickshareCz.py b/module/plugins/accounts/QuickshareCz.py index 4c8050014..0681bab5b 100644 --- a/module/plugins/accounts/QuickshareCz.py +++ b/module/plugins/accounts/QuickshareCz.py @@ -11,6 +11,7 @@ class QuickshareCz(Account): __version__ = "0.01" __description__ = """Quickshare.cz account plugin""" + __license__ = "GPLv3" __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] diff --git a/module/plugins/accounts/RPNetBiz.py b/module/plugins/accounts/RPNetBiz.py index 83ef72bef..3dcab7d54 100644 --- a/module/plugins/accounts/RPNetBiz.py +++ b/module/plugins/accounts/RPNetBiz.py @@ -10,6 +10,7 @@ class RPNetBiz(Account): __version__ = "0.1" __description__ = """RPNet.biz account plugin""" + __license__ = "GPLv3" __authors__ = [("Dman", "dmanugm@gmail.com")] diff --git a/module/plugins/accounts/RapidgatorNet.py b/module/plugins/accounts/RapidgatorNet.py index ba7b2e676..ee44d4879 100644 --- a/module/plugins/accounts/RapidgatorNet.py +++ b/module/plugins/accounts/RapidgatorNet.py @@ -10,6 +10,7 @@ class RapidgatorNet(Account): __version__ = "0.04" __description__ = """Rapidgator.net account plugin""" + __license__ = "GPLv3" __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] diff --git a/module/plugins/accounts/RapidshareCom.py b/module/plugins/accounts/RapidshareCom.py index ce1470c09..c52706fe2 100644 --- a/module/plugins/accounts/RapidshareCom.py +++ b/module/plugins/accounts/RapidshareCom.py @@ -9,6 +9,7 @@ class RapidshareCom(Account): __version__ = "0.22" __description__ = """Rapidshare.com account plugin""" + __license__ = "GPLv3" __authors__ = [("mkaay", "mkaay@mkaay.de")] diff --git a/module/plugins/accounts/RarefileNet.py b/module/plugins/accounts/RarefileNet.py index 55f95f72d..303c38396 100644 --- a/module/plugins/accounts/RarefileNet.py +++ b/module/plugins/accounts/RarefileNet.py @@ -9,6 +9,7 @@ class RarefileNet(XFSPAccount): __version__ = "0.03" __description__ = """RareFile.net account plugin""" + __license__ = "GPLv3" __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] diff --git a/module/plugins/accounts/RealdebridCom.py b/module/plugins/accounts/RealdebridCom.py index b4724999b..b7212c8d3 100644 --- a/module/plugins/accounts/RealdebridCom.py +++ b/module/plugins/accounts/RealdebridCom.py @@ -11,6 +11,7 @@ class RealdebridCom(Account): __version__ = "0.43" __description__ = """Real-Debrid.com account plugin""" + __license__ = "GPLv3" __authors__ = [("Devirex Hazzard", "naibaf_11@yahoo.de")] diff --git a/module/plugins/accounts/RehostTo.py b/module/plugins/accounts/RehostTo.py index ed8147190..b71347a15 100644 --- a/module/plugins/accounts/RehostTo.py +++ b/module/plugins/accounts/RehostTo.py @@ -9,6 +9,7 @@ class RehostTo(Account): __version__ = "0.1" __description__ = """Rehost.to account plugin""" + __license__ = "GPLv3" __authors__ = [("RaNaN", "RaNaN@pyload.org")] diff --git a/module/plugins/accounts/RyushareCom.py b/module/plugins/accounts/RyushareCom.py index d6f2b2563..e2635277a 100644 --- a/module/plugins/accounts/RyushareCom.py +++ b/module/plugins/accounts/RyushareCom.py @@ -9,6 +9,7 @@ class RyushareCom(XFSPAccount): __version__ = "0.04" __description__ = """Ryushare.com account plugin""" + __license__ = "GPLv3" __authors__ = [("zoidberg", "zoidberg@mujmail.cz"), ("trance4us", None)] diff --git a/module/plugins/accounts/SecureUploadEu.py b/module/plugins/accounts/SecureUploadEu.py index a8cf38df2..11a13f383 100644 --- a/module/plugins/accounts/SecureUploadEu.py +++ b/module/plugins/accounts/SecureUploadEu.py @@ -9,6 +9,7 @@ class SecureUploadEu(XFSPAccount): __version__ = "0.01" __description__ = """SecureUpload.eu account plugin""" + __license__ = "GPLv3" __authors__ = [("Walter Purcaro", "vuolter@gmail.com")] diff --git a/module/plugins/accounts/SendmywayCom.py b/module/plugins/accounts/SendmywayCom.py index 9f6021774..fdc8b85d9 100644 --- a/module/plugins/accounts/SendmywayCom.py +++ b/module/plugins/accounts/SendmywayCom.py @@ -9,6 +9,7 @@ class SendmywayCom(XFSPAccount): __version__ = "0.01" __description__ = """Sendmyway.com account plugin""" + __license__ = "GPLv3" __authors__ = [("Walter Purcaro", "vuolter@gmail.com")] diff --git a/module/plugins/accounts/ShareRapidCom.py b/module/plugins/accounts/ShareRapidCom.py index 306e7a236..62a0067d5 100644 --- a/module/plugins/accounts/ShareRapidCom.py +++ b/module/plugins/accounts/ShareRapidCom.py @@ -12,6 +12,7 @@ class ShareRapidCom(Account): __version__ = "0.34" __description__ = """MegaRapid.cz account plugin""" + __license__ = "GPLv3" __authors__ = [("MikyWoW", "mikywow@seznam.cz"), ("zoidberg", "zoidberg@mujmail.cz")] diff --git a/module/plugins/accounts/ShareonlineBiz.py b/module/plugins/accounts/ShareonlineBiz.py index 54e23013b..d96dd2fe6 100644 --- a/module/plugins/accounts/ShareonlineBiz.py +++ b/module/plugins/accounts/ShareonlineBiz.py @@ -9,6 +9,7 @@ class ShareonlineBiz(Account): __version__ = "0.24" __description__ = """Share-online.biz account plugin""" + __license__ = "GPLv3" __authors__ = [("mkaay", "mkaay@mkaay.de"), ("zoidberg", "zoidberg@mujmail.cz")] diff --git a/module/plugins/accounts/SimplyPremiumCom.py b/module/plugins/accounts/SimplyPremiumCom.py index fd825a616..8f65fa677 100644 --- a/module/plugins/accounts/SimplyPremiumCom.py +++ b/module/plugins/accounts/SimplyPremiumCom.py @@ -10,6 +10,7 @@ class SimplyPremiumCom(Account): __version__ = "0.01" __description__ = """Simply-Premium.com account plugin""" + __license__ = "GPLv3" __authors__ = [("EvolutionClip", "evolutionclip@live.de")] diff --git a/module/plugins/accounts/SimplydebridCom.py b/module/plugins/accounts/SimplydebridCom.py index 6e3c46dcd..c77df7a52 100644 --- a/module/plugins/accounts/SimplydebridCom.py +++ b/module/plugins/accounts/SimplydebridCom.py @@ -11,6 +11,7 @@ class SimplydebridCom(Account): __version__ = "0.1" __description__ = """Simply-Debrid.com account plugin""" + __license__ = "GPLv3" __authors__ = [("Kagenoshin", "kagenoshin@gmx.ch")] diff --git a/module/plugins/accounts/StahnuTo.py b/module/plugins/accounts/StahnuTo.py index d49c4f7f7..1afb37791 100644 --- a/module/plugins/accounts/StahnuTo.py +++ b/module/plugins/accounts/StahnuTo.py @@ -12,6 +12,7 @@ class StahnuTo(Account): __version__ = "0.02" __description__ = """StahnuTo account plugin""" + __license__ = "GPLv3" __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] diff --git a/module/plugins/accounts/StreamcloudEu.py b/module/plugins/accounts/StreamcloudEu.py index 4a544b691..9e69a7ae4 100644 --- a/module/plugins/accounts/StreamcloudEu.py +++ b/module/plugins/accounts/StreamcloudEu.py @@ -9,6 +9,7 @@ class StreamcloudEu(XFSPAccount): __version__ = "0.01" __description__ = """Streamcloud.eu account plugin""" + __license__ = "GPLv3" __authors__ = [("Walter Purcaro", "vuolter@gmail.com")] diff --git a/module/plugins/accounts/TurbobitNet.py b/module/plugins/accounts/TurbobitNet.py index d66b37da3..2db1bfa14 100644 --- a/module/plugins/accounts/TurbobitNet.py +++ b/module/plugins/accounts/TurbobitNet.py @@ -12,6 +12,7 @@ class TurbobitNet(Account): __version__ = "0.01" __description__ = """TurbobitNet account plugin""" + __license__ = "GPLv3" __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] diff --git a/module/plugins/accounts/TusfilesNet.py b/module/plugins/accounts/TusfilesNet.py index eb244e7ea..704f70742 100644 --- a/module/plugins/accounts/TusfilesNet.py +++ b/module/plugins/accounts/TusfilesNet.py @@ -14,6 +14,7 @@ class TusfilesNet(XFSPAccount): __version__ = "0.02" __description__ = """ Tusfile.net account plugin """ + __license__ = "GPLv3" __authors__ = [("guidobelix", "guidobelix@hotmail.it")] diff --git a/module/plugins/accounts/UlozTo.py b/module/plugins/accounts/UlozTo.py index bb7f167e2..3663fb65d 100644 --- a/module/plugins/accounts/UlozTo.py +++ b/module/plugins/accounts/UlozTo.py @@ -11,6 +11,7 @@ class UlozTo(Account): __version__ = "0.06" __description__ = """Uloz.to account plugin""" + __license__ = "GPLv3" __authors__ = [("zoidberg", "zoidberg@mujmail.cz"), ("pulpe", None)] diff --git a/module/plugins/accounts/UnrestrictLi.py b/module/plugins/accounts/UnrestrictLi.py index 3a6f36e88..e3da5e913 100644 --- a/module/plugins/accounts/UnrestrictLi.py +++ b/module/plugins/accounts/UnrestrictLi.py @@ -10,6 +10,7 @@ class UnrestrictLi(Account): __version__ = "0.03" __description__ = """Unrestrict.li account plugin""" + __license__ = "GPLv3" __authors__ = [("stickell", "l.stickell@yahoo.it")] diff --git a/module/plugins/accounts/UploadedTo.py b/module/plugins/accounts/UploadedTo.py index 2ae727447..be4f9f47c 100644 --- a/module/plugins/accounts/UploadedTo.py +++ b/module/plugins/accounts/UploadedTo.py @@ -12,6 +12,7 @@ class UploadedTo(Account): __version__ = "0.26" __description__ = """Uploaded.to account plugin""" + __license__ = "GPLv3" __authors__ = [("mkaay", "mkaay@mkaay.de")] diff --git a/module/plugins/accounts/UploadheroCom.py b/module/plugins/accounts/UploadheroCom.py index cd8afb621..868e51e98 100644 --- a/module/plugins/accounts/UploadheroCom.py +++ b/module/plugins/accounts/UploadheroCom.py @@ -13,6 +13,7 @@ class UploadheroCom(Account): __version__ = "0.2" __description__ = """Uploadhero.co account plugin""" + __license__ = "GPLv3" __authors__ = [("mcmyst", "mcmyst@hotmail.fr")] diff --git a/module/plugins/accounts/UploadingCom.py b/module/plugins/accounts/UploadingCom.py index 04f0a58fb..544391ea3 100644 --- a/module/plugins/accounts/UploadingCom.py +++ b/module/plugins/accounts/UploadingCom.py @@ -12,6 +12,7 @@ class UploadingCom(Account): __version__ = "0.1" __description__ = """Uploading.com account plugin""" + __license__ = "GPLv3" __authors__ = [("mkaay", "mkaay@mkaay.de")] diff --git a/module/plugins/accounts/UptoboxCom.py b/module/plugins/accounts/UptoboxCom.py index f9bd0f542..090cc85df 100644 --- a/module/plugins/accounts/UptoboxCom.py +++ b/module/plugins/accounts/UptoboxCom.py @@ -9,6 +9,7 @@ class UptoboxCom(XFSPAccount): __version__ = "0.03" __description__ = """DDLStorage.com account plugin""" + __license__ = "GPLv3" __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] diff --git a/module/plugins/accounts/VidPlayNet.py b/module/plugins/accounts/VidPlayNet.py index 4c542024e..904041939 100644 --- a/module/plugins/accounts/VidPlayNet.py +++ b/module/plugins/accounts/VidPlayNet.py @@ -9,6 +9,7 @@ class VidPlayNet(XFSPAccount): __version__ = "0.01" __description__ = """VidPlay.net account plugin""" + __license__ = "GPLv3" __authors__ = [("Walter Purcaro", "vuolter@gmail.com")] diff --git a/module/plugins/accounts/YibaishiwuCom.py b/module/plugins/accounts/YibaishiwuCom.py index 5aabf362c..f7f5d3e7a 100644 --- a/module/plugins/accounts/YibaishiwuCom.py +++ b/module/plugins/accounts/YibaishiwuCom.py @@ -11,6 +11,7 @@ class YibaishiwuCom(Account): __version__ = "0.01" __description__ = """115.com account plugin""" + __license__ = "GPLv3" __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] diff --git a/module/plugins/accounts/ZeveraCom.py b/module/plugins/accounts/ZeveraCom.py index 83015079b..72c6c7348 100644 --- a/module/plugins/accounts/ZeveraCom.py +++ b/module/plugins/accounts/ZeveraCom.py @@ -11,6 +11,7 @@ class ZeveraCom(Account): __version__ = "0.21" __description__ = """Zevera.com account plugin""" + __license__ = "GPLv3" __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] diff --git a/module/plugins/captcha/GigasizeCom.py b/module/plugins/captcha/GigasizeCom.py index c5ab08f14..8fe67c0d0 100644 --- a/module/plugins/captcha/GigasizeCom.py +++ b/module/plugins/captcha/GigasizeCom.py @@ -9,6 +9,7 @@ class GigasizeCom(OCR): __version__ = "0.1" __description__ = """Gigasize.com ocr plugin""" + __license__ = "GPLv3" __authors__ = [("pyLoad Team", "admin@pyload.org")] diff --git a/module/plugins/captcha/LinksaveIn.py b/module/plugins/captcha/LinksaveIn.py index 1414e06ac..e8487c387 100644 --- a/module/plugins/captcha/LinksaveIn.py +++ b/module/plugins/captcha/LinksaveIn.py @@ -18,6 +18,7 @@ class LinksaveIn(OCR): __version__ = "0.1" __description__ = """Linksave.in ocr plugin""" + __license__ = "GPLv3" __authors__ = [("pyLoad Team", "admin@pyload.org")] diff --git a/module/plugins/captcha/NetloadIn.py b/module/plugins/captcha/NetloadIn.py index 3f5a7f2d7..514cb259f 100644 --- a/module/plugins/captcha/NetloadIn.py +++ b/module/plugins/captcha/NetloadIn.py @@ -9,6 +9,7 @@ class NetloadIn(OCR): __version__ = "0.1" __description__ = """Netload.in ocr plugin""" + __license__ = "GPLv3" __authors__ = [("pyLoad Team", "admin@pyload.org")] diff --git a/module/plugins/captcha/ShareonlineBiz.py b/module/plugins/captcha/ShareonlineBiz.py index 3973e7f7f..7435710d5 100644 --- a/module/plugins/captcha/ShareonlineBiz.py +++ b/module/plugins/captcha/ShareonlineBiz.py @@ -9,6 +9,7 @@ class ShareonlineBiz(OCR): __version__ = "0.1" __description__ = """Shareonline.biz ocr plugin""" + __license__ = "GPLv3" __authors__ = [("RaNaN", "RaNaN@pyload.org")] diff --git a/module/plugins/captcha/captcha.py b/module/plugins/captcha/captcha.py index 17ba0f12f..b3d4bd57e 100644 --- a/module/plugins/captcha/captcha.py +++ b/module/plugins/captcha/captcha.py @@ -21,6 +21,7 @@ class OCR(object): __version__ = "0.1" __description__ = """OCR base plugin""" + __license__ = "GPLv3" __authors__ = [("pyLoad Team", "admin@pyload.org")] diff --git a/module/plugins/container/CCF.py b/module/plugins/container/CCF.py index ce307848c..7a90ddf1c 100644 --- a/module/plugins/container/CCF.py +++ b/module/plugins/container/CCF.py @@ -19,6 +19,7 @@ class CCF(Container): __pattern__ = r'.+\.ccf' __description__ = """CCF container decrypter plugin""" + __license__ = "GPLv3" __authors__ = [("Willnix", "Willnix@pyload.org")] diff --git a/module/plugins/container/LinkList.py b/module/plugins/container/LinkList.py index 934ee96cd..9fc900100 100644 --- a/module/plugins/container/LinkList.py +++ b/module/plugins/container/LinkList.py @@ -15,6 +15,7 @@ class LinkList(Container): ("encoding", "string", "File encoding (default utf-8)", "")] __description__ = """Read link lists in txt format""" + __license__ = "GPLv3" __authors__ = [("spoob", "spoob@pyload.org"), ("jeix", "jeix@hasnomail.com")] diff --git a/module/plugins/container/RSDF.py b/module/plugins/container/RSDF.py index 6c3271750..4b9e3119a 100644 --- a/module/plugins/container/RSDF.py +++ b/module/plugins/container/RSDF.py @@ -14,6 +14,7 @@ class RSDF(Container): __pattern__ = r'.+\.rsdf' __description__ = """RSDF container decrypter plugin""" + __license__ = "GPLv3" __authors__ = [("RaNaN", "RaNaN@pyload.org"), ("spoob", "spoob@pyload.org")] diff --git a/module/plugins/crypter/BitshareComFolder.py b/module/plugins/crypter/BitshareComFolder.py index 59226b7bb..40458b3ff 100644 --- a/module/plugins/crypter/BitshareComFolder.py +++ b/module/plugins/crypter/BitshareComFolder.py @@ -11,6 +11,7 @@ class BitshareComFolder(SimpleCrypter): __pattern__ = r'http://(?:www\.)?bitshare\.com/\?d=\w+' __description__ = """Bitshare.com folder decrypter plugin""" + __license__ = "GPLv3" __authors__ = [("stickell", "l.stickell@yahoo.it")] diff --git a/module/plugins/crypter/C1neonCom.py b/module/plugins/crypter/C1neonCom.py index 40692d0d1..a314f2ad1 100644 --- a/module/plugins/crypter/C1neonCom.py +++ b/module/plugins/crypter/C1neonCom.py @@ -11,4 +11,5 @@ class C1neonCom(DeadCrypter): __pattern__ = r'http://(?:www\.)?c1neon.com/.*?' __description__ = """C1neon.com decrypter plugin""" + __license__ = "GPLv3" __authors__ = [("godofdream", "soilfiction@gmail.com")] diff --git a/module/plugins/crypter/ChipDe.py b/module/plugins/crypter/ChipDe.py index 9aac1efa4..7752ee3bb 100644 --- a/module/plugins/crypter/ChipDe.py +++ b/module/plugins/crypter/ChipDe.py @@ -12,6 +12,7 @@ class ChipDe(Crypter): __pattern__ = r'http://(?:www\.)?chip.de/video/.*\.html' __description__ = """Chip.de decrypter plugin""" + __license__ = "GPLv3" __authors__ = [("4Christopher", "4Christopher@gmx.de")] diff --git a/module/plugins/crypter/CrockoComFolder.py b/module/plugins/crypter/CrockoComFolder.py index dae536dd0..e921fc1fa 100644 --- a/module/plugins/crypter/CrockoComFolder.py +++ b/module/plugins/crypter/CrockoComFolder.py @@ -11,6 +11,7 @@ class CrockoComFolder(SimpleCrypter): __pattern__ = r'http://(?:www\.)?crocko.com/f/.*' __description__ = """Crocko.com folder decrypter plugin""" + __license__ = "GPLv3" __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] diff --git a/module/plugins/crypter/CryptItCom.py b/module/plugins/crypter/CryptItCom.py index a248a92d1..58f0d77b6 100644 --- a/module/plugins/crypter/CryptItCom.py +++ b/module/plugins/crypter/CryptItCom.py @@ -11,4 +11,5 @@ class CryptItCom(DeadCrypter): __pattern__ = r'http://(?:www\.)?crypt-it\.com/(s|e|d|c)/[\w]+' __description__ = """Crypt-it.com decrypter plugin""" + __license__ = "GPLv3" __authors__ = [("jeix", "jeix@hasnomail.de")] diff --git a/module/plugins/crypter/CzshareComFolder.py b/module/plugins/crypter/CzshareComFolder.py index 3762cbf10..9a3881617 100644 --- a/module/plugins/crypter/CzshareComFolder.py +++ b/module/plugins/crypter/CzshareComFolder.py @@ -12,6 +12,7 @@ class CzshareComFolder(Crypter): __pattern__ = r'http://(?:www\.)?(czshare|sdilej)\.(com|cz)/folders/.*' __description__ = """Czshare.com folder decrypter plugin, now Sdilej.cz""" + __license__ = "GPLv3" __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] diff --git a/module/plugins/crypter/DDLMusicOrg.py b/module/plugins/crypter/DDLMusicOrg.py index c0b137992..c224ee732 100644 --- a/module/plugins/crypter/DDLMusicOrg.py +++ b/module/plugins/crypter/DDLMusicOrg.py @@ -15,6 +15,7 @@ class DDLMusicOrg(Crypter): __pattern__ = r'http://(?:www\.)?ddl-music\.org/captcha/ddlm_cr\d\.php\?\d+\?\d+' __description__ = """Ddl-music.org decrypter plugin""" + __license__ = "GPLv3" __authors__ = [("mkaay", "mkaay@mkaay.de")] diff --git a/module/plugins/crypter/DailymotionBatch.py b/module/plugins/crypter/DailymotionBatch.py index cc97910af..a0ed0e80f 100644 --- a/module/plugins/crypter/DailymotionBatch.py +++ b/module/plugins/crypter/DailymotionBatch.py @@ -17,6 +17,7 @@ class DailymotionBatch(Crypter): __pattern__ = r'https?://(?:www\.)?dailymotion\.com/((playlists/)?(?Pplaylist|user)/)?(?P[\w^_]+)(?(TYPE)|#)' __description__ = """Dailymotion.com channel & playlist decrypter""" + __license__ = "GPLv3" __authors__ = [("Walter Purcaro", "vuolter@gmail.com")] diff --git a/module/plugins/crypter/DataHuFolder.py b/module/plugins/crypter/DataHuFolder.py index 405945f58..a80be34d2 100644 --- a/module/plugins/crypter/DataHuFolder.py +++ b/module/plugins/crypter/DataHuFolder.py @@ -13,6 +13,7 @@ class DataHuFolder(SimpleCrypter): __pattern__ = r'http://(?:www\.)?data.hu/dir/\w+' __description__ = """Data.hu folder decrypter plugin""" + __license__ = "GPLv3" __authors__ = [("crash", None), ("stickell", "l.stickell@yahoo.it")] diff --git a/module/plugins/crypter/DdlstorageComFolder.py b/module/plugins/crypter/DdlstorageComFolder.py index 87719cb26..e3fd88084 100644 --- a/module/plugins/crypter/DdlstorageComFolder.py +++ b/module/plugins/crypter/DdlstorageComFolder.py @@ -11,6 +11,7 @@ class DdlstorageComFolder(DeadCrypter): __pattern__ = r'https?://(?:www\.)?ddlstorage\.com/folder/\w+' __description__ = """DDLStorage.com folder decrypter plugin""" + __license__ = "GPLv3" __authors__ = [("godofdream", "soilfiction@gmail.com"), ("stickell", "l.stickell@yahoo.it")] diff --git a/module/plugins/crypter/DepositfilesComFolder.py b/module/plugins/crypter/DepositfilesComFolder.py index 3c4a95a38..7e32457ac 100644 --- a/module/plugins/crypter/DepositfilesComFolder.py +++ b/module/plugins/crypter/DepositfilesComFolder.py @@ -11,6 +11,7 @@ class DepositfilesComFolder(SimpleCrypter): __pattern__ = r'http://(?:www\.)?depositfiles.com/folders/\w+' __description__ = """Depositfiles.com folder decrypter plugin""" + __license__ = "GPLv3" __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] diff --git a/module/plugins/crypter/Dereferer.py b/module/plugins/crypter/Dereferer.py index 215fb52fa..b6e269000 100644 --- a/module/plugins/crypter/Dereferer.py +++ b/module/plugins/crypter/Dereferer.py @@ -15,6 +15,7 @@ class Dereferer(Crypter): __pattern__ = r'https?://([^/]+)/.*?(?P(ht|f)tps?(://|%3A%2F%2F).*)' __description__ = """Crypter for dereferers""" + __license__ = "GPLv3" __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] diff --git a/module/plugins/crypter/DevhostStFolder.py b/module/plugins/crypter/DevhostStFolder.py index b79d9f264..1839257e0 100644 --- a/module/plugins/crypter/DevhostStFolder.py +++ b/module/plugins/crypter/DevhostStFolder.py @@ -18,6 +18,7 @@ class DevhostStFolder(SimpleCrypter): __pattern__ = r'http://(?:www\.)?d-h\.st/users/(?P\w+)(/\?fld_id=(?P\d+))?' __description__ = """d-h.st folder decrypter plugin""" + __license__ = "GPLv3" __authors__ = [("zapp-brannigan", "fuerst.reinje@web.de"), ("Walter Purcaro", "vuolter@gmail.com")] diff --git a/module/plugins/crypter/DlProtectCom.py b/module/plugins/crypter/DlProtectCom.py index f748b5e62..e31c62185 100644 --- a/module/plugins/crypter/DlProtectCom.py +++ b/module/plugins/crypter/DlProtectCom.py @@ -16,6 +16,7 @@ class DlProtectCom(SimpleCrypter): __pattern__ = r'http://(?:www\.)?dl-protect\.com/((en|fr)/)?(?P\w+)' __description__ = """Dl-protect.com decrypter plugin""" + __license__ = "GPLv3" __authors__ = [("Walter Purcaro", "vuolter@gmail.com")] diff --git a/module/plugins/crypter/DontKnowMe.py b/module/plugins/crypter/DontKnowMe.py index 4f2b70aaf..961f0c6e0 100644 --- a/module/plugins/crypter/DontKnowMe.py +++ b/module/plugins/crypter/DontKnowMe.py @@ -15,6 +15,7 @@ class DontKnowMe(Crypter): __pattern__ = r'http://(?:www\.)?dontknow.me/at/\?.+$' __description__ = """DontKnow.me decrypter plugin""" + __license__ = "GPLv3" __authors__ = [("selaux", None)] diff --git a/module/plugins/crypter/DuckCryptInfo.py b/module/plugins/crypter/DuckCryptInfo.py index 8c5c344f6..5815b624c 100644 --- a/module/plugins/crypter/DuckCryptInfo.py +++ b/module/plugins/crypter/DuckCryptInfo.py @@ -15,6 +15,7 @@ class DuckCryptInfo(Crypter): __pattern__ = r'http://(?:www\.)?duckcrypt.info/(folder|wait|link)/(\w+)/?(\w*)' __description__ = """DuckCrypt.info decrypter plugin""" + __license__ = "GPLv3" __authors__ = [("godofdream", "soilfiction@gmail.com")] diff --git a/module/plugins/crypter/DuploadOrgFolder.py b/module/plugins/crypter/DuploadOrgFolder.py index 406a7a850..d7d009b56 100644 --- a/module/plugins/crypter/DuploadOrgFolder.py +++ b/module/plugins/crypter/DuploadOrgFolder.py @@ -11,6 +11,7 @@ class DuploadOrgFolder(SimpleCrypter): __pattern__ = r'http://(?:www\.)?dupload\.org/folder/\d+/' __description__ = """Dupload.org folder decrypter plugin""" + __license__ = "GPLv3" __authors__ = [("stickell", "l.stickell@yahoo.it")] diff --git a/module/plugins/crypter/EasybytezComFolder.py b/module/plugins/crypter/EasybytezComFolder.py index 565ee0745..0b73a10ae 100644 --- a/module/plugins/crypter/EasybytezComFolder.py +++ b/module/plugins/crypter/EasybytezComFolder.py @@ -11,6 +11,7 @@ class EasybytezComFolder(SimpleCrypter): __pattern__ = r'http://(?:www\.)?easybytez\.com/users/(?P\d+/\d+)' __description__ = """Easybytez.com folder decrypter plugin""" + __license__ = "GPLv3" __authors__ = [("stickell", "l.stickell@yahoo.it")] diff --git a/module/plugins/crypter/EmbeduploadCom.py b/module/plugins/crypter/EmbeduploadCom.py index f23ae5101..8f1d60ee3 100644 --- a/module/plugins/crypter/EmbeduploadCom.py +++ b/module/plugins/crypter/EmbeduploadCom.py @@ -15,6 +15,7 @@ class EmbeduploadCom(Crypter): ("ignoredHoster", "str", "Ignored hoster list (bar-separated) ", "")] __description__ = """EmbedUpload.com decrypter plugin""" + __license__ = "GPLv3" __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] diff --git a/module/plugins/crypter/FilebeerInfoFolder.py b/module/plugins/crypter/FilebeerInfoFolder.py index 9c0599742..833616747 100644 --- a/module/plugins/crypter/FilebeerInfoFolder.py +++ b/module/plugins/crypter/FilebeerInfoFolder.py @@ -11,4 +11,5 @@ class FilebeerInfoFolder(DeadCrypter): __pattern__ = r'http://(?:www\.)?filebeer\.info/(\d+~f).*' __description__ = """Filebeer.info folder decrypter plugin""" + __license__ = "GPLv3" __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] diff --git a/module/plugins/crypter/FilecloudIoFolder.py b/module/plugins/crypter/FilecloudIoFolder.py index eccf293d7..d6a1929a3 100644 --- a/module/plugins/crypter/FilecloudIoFolder.py +++ b/module/plugins/crypter/FilecloudIoFolder.py @@ -11,6 +11,7 @@ class FilecloudIoFolder(SimpleCrypter): __pattern__ = r'https?://(?:www\.)?(filecloud\.io|ifile\.it)/_\w+' __description__ = """Filecloud.io folder decrypter plugin""" + __license__ = "GPLv3" __authors__ = [("Walter Purcaro", "vuolter@gmail.com")] diff --git a/module/plugins/crypter/FilefactoryComFolder.py b/module/plugins/crypter/FilefactoryComFolder.py index a17451941..438ed533b 100644 --- a/module/plugins/crypter/FilefactoryComFolder.py +++ b/module/plugins/crypter/FilefactoryComFolder.py @@ -11,6 +11,7 @@ class FilefactoryComFolder(SimpleCrypter): __pattern__ = r'https?://(?:www\.)?filefactory\.com/(?:f|folder)/\w+' __description__ = """Filefactory.com folder decrypter plugin""" + __license__ = "GPLv3" __authors__ = [("stickell", "l.stickell@yahoo.it")] diff --git a/module/plugins/crypter/FilerNetFolder.py b/module/plugins/crypter/FilerNetFolder.py index b5f59677d..fc9623d40 100644 --- a/module/plugins/crypter/FilerNetFolder.py +++ b/module/plugins/crypter/FilerNetFolder.py @@ -11,6 +11,7 @@ class FilerNetFolder(SimpleCrypter): __pattern__ = r'https?://filer\.net/folder/\w{16}' __description__ = """Filer.net decrypter plugin""" + __license__ = "GPLv3" __authors__ = [("nath_schwarz", "nathan.notwhite@gmail.com"), ("stickell", "l.stickell@yahoo.it")] diff --git a/module/plugins/crypter/FileserveComFolder.py b/module/plugins/crypter/FileserveComFolder.py index 1fac3eeee..63de97fec 100644 --- a/module/plugins/crypter/FileserveComFolder.py +++ b/module/plugins/crypter/FileserveComFolder.py @@ -13,6 +13,7 @@ class FileserveComFolder(Crypter): __pattern__ = r'http://(?:www\.)?fileserve.com/list/\w+' __description__ = """FileServe.com folder decrypter plugin""" + __license__ = "GPLv3" __authors__ = [("fionnc", "fionnc@gmail.com")] diff --git a/module/plugins/crypter/FilestubeCom.py b/module/plugins/crypter/FilestubeCom.py index 6bd081894..097655316 100644 --- a/module/plugins/crypter/FilestubeCom.py +++ b/module/plugins/crypter/FilestubeCom.py @@ -11,6 +11,7 @@ class FilestubeCom(SimpleCrypter): __pattern__ = r'http://(?:www\.)?filestube\.(?:com|to)/\w+' __description__ = """Filestube.com decrypter plugin""" + __license__ = "GPLv3" __authors__ = [("stickell", "l.stickell@yahoo.it")] diff --git a/module/plugins/crypter/FiletramCom.py b/module/plugins/crypter/FiletramCom.py index 5717df47e..e99419039 100644 --- a/module/plugins/crypter/FiletramCom.py +++ b/module/plugins/crypter/FiletramCom.py @@ -11,6 +11,7 @@ class FiletramCom(SimpleCrypter): __pattern__ = r'http://(?:www\.)?filetram.com/[^/]+/.+' __description__ = """Filetram.com decrypter plugin""" + __license__ = "GPLv3" __authors__ = [("igel", "igelkun@myopera.com"), ("stickell", "l.stickell@yahoo.it")] diff --git a/module/plugins/crypter/FiredriveComFolder.py b/module/plugins/crypter/FiredriveComFolder.py index c41c2f933..f297854f1 100644 --- a/module/plugins/crypter/FiredriveComFolder.py +++ b/module/plugins/crypter/FiredriveComFolder.py @@ -13,6 +13,7 @@ class FiredriveComFolder(SimpleCrypter): __pattern__ = r'https?://(?:www\.)?(firedrive|putlocker)\.com/share/.+' __description__ = """Firedrive.com folder decrypter plugin""" + __license__ = "GPLv3" __authors__ = [("Walter Purcaro", "vuolter@gmail.com")] diff --git a/module/plugins/crypter/FourChanOrg.py b/module/plugins/crypter/FourChanOrg.py index 8b2c74b44..4a0aa13d9 100644 --- a/module/plugins/crypter/FourChanOrg.py +++ b/module/plugins/crypter/FourChanOrg.py @@ -15,6 +15,7 @@ class FourChanOrg(Crypter): __pattern__ = r'http://(?:www\.)?boards\.4chan.org/\w+/res/(\d+)' __description__ = """4chan.org folder decrypter plugin""" + __license__ = "GPLv3" __authors__ = [] diff --git a/module/plugins/crypter/FreakhareComFolder.py b/module/plugins/crypter/FreakhareComFolder.py index 34b64bc4a..19079f5f2 100644 --- a/module/plugins/crypter/FreakhareComFolder.py +++ b/module/plugins/crypter/FreakhareComFolder.py @@ -13,6 +13,7 @@ class FreakhareComFolder(SimpleCrypter): __pattern__ = r'http://(?:www\.)?freakshare\.com/folder/.+' __description__ = """Freakhare.com folder decrypter plugin""" + __license__ = "GPLv3" __authors__ = [("stickell", "l.stickell@yahoo.it")] diff --git a/module/plugins/crypter/FreetexthostCom.py b/module/plugins/crypter/FreetexthostCom.py index c91ee6d10..35ee7791c 100644 --- a/module/plugins/crypter/FreetexthostCom.py +++ b/module/plugins/crypter/FreetexthostCom.py @@ -13,6 +13,7 @@ class FreetexthostCom(SimpleCrypter): __pattern__ = r'http://(?:www\.)?freetexthost\.com/\w+' __description__ = """Freetexthost.com decrypter plugin""" + __license__ = "GPLv3" __authors__ = [("stickell", "l.stickell@yahoo.it")] diff --git a/module/plugins/crypter/FshareVnFolder.py b/module/plugins/crypter/FshareVnFolder.py index 1aa8bb3ea..f7c59050c 100644 --- a/module/plugins/crypter/FshareVnFolder.py +++ b/module/plugins/crypter/FshareVnFolder.py @@ -11,6 +11,7 @@ class FshareVnFolder(SimpleCrypter): __pattern__ = r'http://(?:www\.)?fshare.vn/folder/.*' __description__ = """Fshare.vn folder decrypter plugin""" + __license__ = "GPLv3" __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] diff --git a/module/plugins/crypter/GooGl.py b/module/plugins/crypter/GooGl.py index 8b0c2ac91..29c5a5f5e 100644 --- a/module/plugins/crypter/GooGl.py +++ b/module/plugins/crypter/GooGl.py @@ -12,6 +12,7 @@ class GooGl(Crypter): __pattern__ = r'https?://(?:www\.)?goo\.gl/\w+' __description__ = """Goo.gl decrypter plugin""" + __license__ = "GPLv3" __authors__ = [("stickell", "l.stickell@yahoo.it")] diff --git a/module/plugins/crypter/HoerbuchIn.py b/module/plugins/crypter/HoerbuchIn.py index 6774cd72e..9b7d9f384 100644 --- a/module/plugins/crypter/HoerbuchIn.py +++ b/module/plugins/crypter/HoerbuchIn.py @@ -15,6 +15,7 @@ class HoerbuchIn(Crypter): __pattern__ = r'http://(?:www\.)?hoerbuch\.in/(wp/horbucher/\d+/.+/|tp/out.php\?.+|protection/folder_\d+\.html)' __description__ = """Hoerbuch.in decrypter plugin""" + __license__ = "GPLv3" __authors__ = [("spoob", "spoob@pyload.org"), ("mkaay", "mkaay@mkaay.de")] diff --git a/module/plugins/crypter/HotfileFolderCom.py b/module/plugins/crypter/HotfileFolderCom.py index e97d2ca91..d9e4e4c39 100644 --- a/module/plugins/crypter/HotfileFolderCom.py +++ b/module/plugins/crypter/HotfileFolderCom.py @@ -11,4 +11,5 @@ class HotfileFolderCom(DeadCrypter): __pattern__ = r'https?://(?:www\.)?hotfile\.com/list/\w+/\w+' __description__ = """Hotfile.com folder decrypter plugin""" + __license__ = "GPLv3" __authors__ = [("RaNaN", "RaNaN@pyload.org")] diff --git a/module/plugins/crypter/ILoadTo.py b/module/plugins/crypter/ILoadTo.py index c1dbab836..638d15191 100644 --- a/module/plugins/crypter/ILoadTo.py +++ b/module/plugins/crypter/ILoadTo.py @@ -11,4 +11,5 @@ class ILoadTo(DeadCrypter): __pattern__ = r'http://(?:www\.)?iload\.to/go/\d+-[\w\.-]+/' __description__ = """Iload.to decrypter plugin""" + __license__ = "GPLv3" __authors__ = [("hzpz", None)] diff --git a/module/plugins/crypter/ImgurComAlbum.py b/module/plugins/crypter/ImgurComAlbum.py index d4e6b13ab..3fd8b9b21 100644 --- a/module/plugins/crypter/ImgurComAlbum.py +++ b/module/plugins/crypter/ImgurComAlbum.py @@ -12,6 +12,7 @@ class ImgurComAlbum(SimpleCrypter): __pattern__ = r'https?://(?:www\.|m\.)?imgur\.com/(a|gallery|)/?\w{5,7}' __description__ = """Imgur.com decrypter plugin""" + __license__ = "GPLv3" __authors__ = [("nath_schwarz", "nathan.notwhite@gmail.com")] diff --git a/module/plugins/crypter/LetitbitNetFolder.py b/module/plugins/crypter/LetitbitNetFolder.py index 3ca24195d..18e79ad8a 100644 --- a/module/plugins/crypter/LetitbitNetFolder.py +++ b/module/plugins/crypter/LetitbitNetFolder.py @@ -12,6 +12,7 @@ class LetitbitNetFolder(Crypter): __pattern__ = r'http://(?:www\.)?letitbit.net/folder/\w+' __description__ = """Letitbit.net folder decrypter plugin""" + __license__ = "GPLv3" __authors__ = [("DHMH", "webmaster@pcProfil.de"), ("z00nx", "z00nx0@gmail.com")] diff --git a/module/plugins/crypter/LinkSaveIn.py b/module/plugins/crypter/LinkSaveIn.py index 9c0bbdeac..b4691d70b 100644 --- a/module/plugins/crypter/LinkSaveIn.py +++ b/module/plugins/crypter/LinkSaveIn.py @@ -21,6 +21,7 @@ class LinkSaveIn(SimpleCrypter): __pattern__ = r'http://(?:www\.)?linksave.in/(?P\w+)$' __description__ = """LinkSave.in decrypter plugin""" + __license__ = "GPLv3" __authors__ = [("fragonib", "fragonib[AT]yahoo[DOT]es")] diff --git a/module/plugins/crypter/LinkdecrypterCom.py b/module/plugins/crypter/LinkdecrypterCom.py index cc688cd8e..c72092a5f 100644 --- a/module/plugins/crypter/LinkdecrypterCom.py +++ b/module/plugins/crypter/LinkdecrypterCom.py @@ -12,6 +12,7 @@ class LinkdecrypterCom(Crypter): __pattern__ = None __description__ = """Linkdecrypter.com""" + __license__ = "GPLv3" __authors__ = [("zoidberg", "zoidberg@mujmail.cz"), ("flowlee", None)] diff --git a/module/plugins/crypter/LixIn.py b/module/plugins/crypter/LixIn.py index af4f182b4..df32eed55 100644 --- a/module/plugins/crypter/LixIn.py +++ b/module/plugins/crypter/LixIn.py @@ -13,6 +13,7 @@ class LixIn(Crypter): __pattern__ = r'http://(?:www\.)?lix\.in/(?P.+)' __description__ = """Lix.in decrypter plugin""" + __license__ = "GPLv3" __authors__ = [("spoob", "spoob@pyload.org")] diff --git a/module/plugins/crypter/LofCc.py b/module/plugins/crypter/LofCc.py index 5fc04000f..b3eef6fe9 100644 --- a/module/plugins/crypter/LofCc.py +++ b/module/plugins/crypter/LofCc.py @@ -11,4 +11,5 @@ class LofCc(DeadCrypter): __pattern__ = r'http://(?:www\.)?lof.cc/(.*)' __description__ = """Lof.cc decrypter plugin""" + __license__ = "GPLv3" __authors__ = [("mkaay", "mkaay@mkaay.de")] diff --git a/module/plugins/crypter/MBLinkInfo.py b/module/plugins/crypter/MBLinkInfo.py index edd846cf9..3d03e6e13 100644 --- a/module/plugins/crypter/MBLinkInfo.py +++ b/module/plugins/crypter/MBLinkInfo.py @@ -11,5 +11,6 @@ class MBLinkInfo(DeadCrypter): __pattern__ = r'http://(?:www\.)?mblink\.info/?\?id=(\d+)' __description__ = """MBLink.info decrypter plugin""" + __license__ = "GPLv3" __authors__ = [("Gummibaer", "Gummibaer@wiki-bierkiste.de"), ("stickell", "l.stickell@yahoo.it")] diff --git a/module/plugins/crypter/MediafireComFolder.py b/module/plugins/crypter/MediafireComFolder.py index 2a4de5272..568b4a985 100644 --- a/module/plugins/crypter/MediafireComFolder.py +++ b/module/plugins/crypter/MediafireComFolder.py @@ -14,6 +14,7 @@ class MediafireComFolder(Crypter): __pattern__ = r'http://(?:www\.)?mediafire\.com/(folder/|\?sharekey=|\?\w{13}($|[/#]))' __description__ = """Mediafire.com folder decrypter plugin""" + __license__ = "GPLv3" __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] diff --git a/module/plugins/crypter/Movie2kTo.py b/module/plugins/crypter/Movie2kTo.py index 3a1701923..019105428 100644 --- a/module/plugins/crypter/Movie2kTo.py +++ b/module/plugins/crypter/Movie2kTo.py @@ -11,4 +11,5 @@ class Movie2kTo(DeadCrypter): __pattern__ = r'http://(?:www\.)?movie2k\.to/(.*)\.html' __description__ = """Movie2k.to decrypter plugin""" + __license__ = "GPLv3" __authors__ = [("4Christopher", "4Christopher@gmx.de")] diff --git a/module/plugins/crypter/MultiUpOrg.py b/module/plugins/crypter/MultiUpOrg.py index 0cb3048aa..bf0e49a4c 100644 --- a/module/plugins/crypter/MultiUpOrg.py +++ b/module/plugins/crypter/MultiUpOrg.py @@ -14,6 +14,7 @@ class MultiUpOrg(SimpleCrypter): __pattern__ = r'http://(?:www\.)?multiup\.org/(en|fr)/(?Pproject|download|miror)/\w+(/\w+)?' __description__ = """MultiUp.org crypter plugin""" + __license__ = "GPLv3" __authors__ = [("Walter Purcaro", "vuolter@gmail.com")] diff --git a/module/plugins/crypter/MultiloadCz.py b/module/plugins/crypter/MultiloadCz.py index 8f43e5796..a24fba576 100644 --- a/module/plugins/crypter/MultiloadCz.py +++ b/module/plugins/crypter/MultiloadCz.py @@ -14,6 +14,7 @@ class MultiloadCz(Crypter): ("ignoredHoster", "str", "Ignored hoster list (bar-separated) ", "")] __description__ = """Multiload.cz decrypter plugin""" + __license__ = "GPLv3" __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] diff --git a/module/plugins/crypter/MultiuploadCom.py b/module/plugins/crypter/MultiuploadCom.py index 653c9a169..0701a50ff 100644 --- a/module/plugins/crypter/MultiuploadCom.py +++ b/module/plugins/crypter/MultiuploadCom.py @@ -11,4 +11,5 @@ class MultiuploadCom(DeadCrypter): __pattern__ = r'http://(?:www\.)?multiupload\.(com|nl)/\w+' __description__ = """ MultiUpload.com decrypter plugin """ + __license__ = "GPLv3" __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] diff --git a/module/plugins/crypter/NCryptIn.py b/module/plugins/crypter/NCryptIn.py index 1a6757006..22d496913 100644 --- a/module/plugins/crypter/NCryptIn.py +++ b/module/plugins/crypter/NCryptIn.py @@ -18,6 +18,7 @@ class NCryptIn(Crypter): __pattern__ = r'http://(?:www\.)?ncrypt.in/(?Pfolder|link|frame)-([^/\?]+)' __description__ = """NCrypt.in decrypter plugin""" + __license__ = "GPLv3" __authors__ = [("fragonib", "fragonib[AT]yahoo[DOT]es"), ("stickell", "l.stickell@yahoo.it")] diff --git a/module/plugins/crypter/NetfolderIn.py b/module/plugins/crypter/NetfolderIn.py index 1e60fa583..72f3ff0b9 100644 --- a/module/plugins/crypter/NetfolderIn.py +++ b/module/plugins/crypter/NetfolderIn.py @@ -13,6 +13,7 @@ class NetfolderIn(SimpleCrypter): __pattern__ = r'http://(?:www\.)?netfolder.in/((?P\w+)/\w+|folder.php\?folder_id=(?P\w+))' __description__ = """NetFolder.in decrypter plugin""" + __license__ = "GPLv3" __authors__ = [("RaNaN", "RaNaN@pyload.org"), ("fragonib", "fragonib[AT]yahoo[DOT]es")] diff --git a/module/plugins/crypter/NosvideoCom.py b/module/plugins/crypter/NosvideoCom.py index fd065d571..de37010e9 100644 --- a/module/plugins/crypter/NosvideoCom.py +++ b/module/plugins/crypter/NosvideoCom.py @@ -11,6 +11,7 @@ class NosvideoCom(SimpleCrypter): __pattern__ = r'http://(?:www\.)?nosvideo\.com/\?v=\w+' __description__ = """Nosvideo.com decrypter plugin""" + __license__ = "GPLv3" __authors__ = [("igel", "igelkun@myopera.com")] diff --git a/module/plugins/crypter/OneKhDe.py b/module/plugins/crypter/OneKhDe.py index 2e6daf25d..e631b135b 100644 --- a/module/plugins/crypter/OneKhDe.py +++ b/module/plugins/crypter/OneKhDe.py @@ -14,6 +14,7 @@ class OneKhDe(Crypter): __pattern__ = r'http://(?:www\.)?1kh.de/f/' __description__ = """1kh.de decrypter plugin""" + __license__ = "GPLv3" __authors__ = [("spoob", "spoob@pyload.org")] diff --git a/module/plugins/crypter/OronComFolder.py b/module/plugins/crypter/OronComFolder.py index b651c0041..99edb02c1 100755 --- a/module/plugins/crypter/OronComFolder.py +++ b/module/plugins/crypter/OronComFolder.py @@ -11,4 +11,5 @@ class OronComFolder(DeadCrypter): __pattern__ = r'http://(?:www\.)?oron.com/folder/\w+' __description__ = """Oron.com folder decrypter plugin""" + __license__ = "GPLv3" __authors__ = [("DHMH", "webmaster@pcProfil.de")] diff --git a/module/plugins/crypter/PastebinCom.py b/module/plugins/crypter/PastebinCom.py index 285110138..375b84f50 100644 --- a/module/plugins/crypter/PastebinCom.py +++ b/module/plugins/crypter/PastebinCom.py @@ -11,6 +11,7 @@ class PastebinCom(SimpleCrypter): __pattern__ = r'http://(?:www\.)?pastebin\.com/\w+' __description__ = """Pastebin.com decrypter plugin""" + __license__ = "GPLv3" __authors__ = [("stickell", "l.stickell@yahoo.it")] diff --git a/module/plugins/crypter/QuickshareCzFolder.py b/module/plugins/crypter/QuickshareCzFolder.py index a74772641..9bf95f079 100644 --- a/module/plugins/crypter/QuickshareCzFolder.py +++ b/module/plugins/crypter/QuickshareCzFolder.py @@ -12,6 +12,7 @@ class QuickshareCzFolder(Crypter): __pattern__ = r'http://(?:www\.)?quickshare.cz/slozka-\d+.*' __description__ = """Quickshare.cz folder decrypter plugin""" + __license__ = "GPLv3" __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] diff --git a/module/plugins/crypter/RSLayerCom.py b/module/plugins/crypter/RSLayerCom.py index 0013b7b6d..28c82dd8c 100644 --- a/module/plugins/crypter/RSLayerCom.py +++ b/module/plugins/crypter/RSLayerCom.py @@ -11,4 +11,5 @@ class RSLayerCom(DeadCrypter): __pattern__ = r'http://(?:www\.)?rs-layer.com/directory-' __description__ = """RS-Layer.com decrypter plugin""" + __license__ = "GPLv3" __authors__ = [("hzpz", None)] diff --git a/module/plugins/crypter/RelinkUs.py b/module/plugins/crypter/RelinkUs.py index 4d0132ac4..25cc9ada1 100644 --- a/module/plugins/crypter/RelinkUs.py +++ b/module/plugins/crypter/RelinkUs.py @@ -17,6 +17,7 @@ class RelinkUs(Crypter): __pattern__ = r'http://(?:www\.)?relink.us/(f/|((view|go).php\?id=))(?P.+)' __description__ = """Relink.us decrypter plugin""" + __license__ = "GPLv3" __authors__ = [("fragonib", "fragonib[AT]yahoo[DOT]es")] diff --git a/module/plugins/crypter/SafelinkingNet.py b/module/plugins/crypter/SafelinkingNet.py index ca21fe907..a496812d2 100644 --- a/module/plugins/crypter/SafelinkingNet.py +++ b/module/plugins/crypter/SafelinkingNet.py @@ -19,6 +19,7 @@ class SafelinkingNet(Crypter): __pattern__ = r'https?://(?:www\.)?safelinking.net/([pd])/\w+' __description__ = """Safelinking.net decrypter plugin""" + __license__ = "GPLv3" __authors__ = [("quareevo", "quareevo@arcor.de")] diff --git a/module/plugins/crypter/SecuredIn.py b/module/plugins/crypter/SecuredIn.py index f94fae700..701c4843a 100644 --- a/module/plugins/crypter/SecuredIn.py +++ b/module/plugins/crypter/SecuredIn.py @@ -11,4 +11,5 @@ class SecuredIn(DeadCrypter): __pattern__ = r'http://(?:www\.)?secured\.in/download-[\d]+-[\w]{8}\.html' __description__ = """Secured.in decrypter plugin""" + __license__ = "GPLv3" __authors__ = [("mkaay", "mkaay@mkaay.de")] diff --git a/module/plugins/crypter/ShareLinksBiz.py b/module/plugins/crypter/ShareLinksBiz.py index e8615d8bc..af2e5245f 100644 --- a/module/plugins/crypter/ShareLinksBiz.py +++ b/module/plugins/crypter/ShareLinksBiz.py @@ -16,6 +16,7 @@ class ShareLinksBiz(Crypter): __pattern__ = r'http://(?:www\.)?(share-links|s2l)\.biz/(?P_?\w+)' __description__ = """Share-Links.biz decrypter plugin""" + __license__ = "GPLv3" __authors__ = [("fragonib", "fragonib[AT]yahoo[DOT]es")] diff --git a/module/plugins/crypter/ShareRapidComFolder.py b/module/plugins/crypter/ShareRapidComFolder.py index 43814bccb..605a63a1f 100644 --- a/module/plugins/crypter/ShareRapidComFolder.py +++ b/module/plugins/crypter/ShareRapidComFolder.py @@ -11,6 +11,7 @@ class ShareRapidComFolder(SimpleCrypter): __pattern__ = r'http://(?:www\.)?((share(-?rapid\.(biz|com|cz|info|eu|net|org|pl|sk)|-(central|credit|free|net)\.cz|-ms\.net)|(s-?rapid|rapids)\.(cz|sk))|(e-stahuj|mediatack|premium-rapidshare|rapidshare-premium|qiuck)\.cz|kadzet\.com|stahuj-zdarma\.eu|strelci\.net|universal-share\.com)/(slozka/.+)' __description__ = """Share-Rapid.com folder decrypter plugin""" + __license__ = "GPLv3" __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] diff --git a/module/plugins/crypter/SpeedLoadOrgFolder.py b/module/plugins/crypter/SpeedLoadOrgFolder.py index 79b79308d..4b77b8f22 100644 --- a/module/plugins/crypter/SpeedLoadOrgFolder.py +++ b/module/plugins/crypter/SpeedLoadOrgFolder.py @@ -11,4 +11,5 @@ class SpeedLoadOrgFolder(DeadCrypter): __pattern__ = r'http://(?:www\.)?speedload\.org/(\d+~f$|folder/\d+/)' __description__ = """Speedload decrypter plugin""" + __license__ = "GPLv3" __authors__ = [("stickell", "l.stickell@yahoo.it")] diff --git a/module/plugins/crypter/StealthTo.py b/module/plugins/crypter/StealthTo.py index a2f7b04af..50a7d561f 100644 --- a/module/plugins/crypter/StealthTo.py +++ b/module/plugins/crypter/StealthTo.py @@ -11,4 +11,5 @@ class StealthTo(DeadCrypter): __pattern__ = r'http://(?:www\.)?stealth\.to/folder/.+' __description__ = """Stealth.to decrypter plugin""" + __license__ = "GPLv3" __authors__ = [("spoob", "spoob@pyload.org")] diff --git a/module/plugins/crypter/TnyCz.py b/module/plugins/crypter/TnyCz.py index 1e406072d..b3e049a37 100644 --- a/module/plugins/crypter/TnyCz.py +++ b/module/plugins/crypter/TnyCz.py @@ -13,6 +13,7 @@ class TnyCz(SimpleCrypter): __pattern__ = r'http://(?:www\.)?tny\.cz/\w+' __description__ = """Tny.cz decrypter plugin""" + __license__ = "GPLv3" __authors__ = [("Walter Purcaro", "vuolter@gmail.com")] diff --git a/module/plugins/crypter/TrailerzoneInfo.py b/module/plugins/crypter/TrailerzoneInfo.py index 4ed08a634..c96e3947d 100644 --- a/module/plugins/crypter/TrailerzoneInfo.py +++ b/module/plugins/crypter/TrailerzoneInfo.py @@ -11,4 +11,5 @@ class TrailerzoneInfo(DeadCrypter): __pattern__ = r'http://(?:www\.)?trailerzone.info/.*?' __description__ = """TrailerZone.info decrypter plugin""" + __license__ = "GPLv3" __authors__ = [("godofdream", "soilfiction@gmail.com")] diff --git a/module/plugins/crypter/TurbobitNetFolder.py b/module/plugins/crypter/TurbobitNetFolder.py index d0b42ab2a..b0f341209 100644 --- a/module/plugins/crypter/TurbobitNetFolder.py +++ b/module/plugins/crypter/TurbobitNetFolder.py @@ -14,6 +14,7 @@ class TurbobitNetFolder(SimpleCrypter): __pattern__ = r'http://(?:www\.)?turbobit\.net/download/folder/(?P\w+)' __description__ = """Turbobit.net folder decrypter plugin""" + __license__ = "GPLv3" __authors__ = [("stickell", "l.stickell@yahoo.it"), ("Walter Purcaro", "vuolter@gmail.com")] diff --git a/module/plugins/crypter/TusfilesNetFolder.py b/module/plugins/crypter/TusfilesNetFolder.py index a295189fd..a6e76adb8 100644 --- a/module/plugins/crypter/TusfilesNetFolder.py +++ b/module/plugins/crypter/TusfilesNetFolder.py @@ -15,6 +15,7 @@ class TusfilesNetFolder(SimpleCrypter): __pattern__ = r'https?://(?:www\.)?tusfiles\.net/go/(?P\w+)/?' __description__ = """Tusfiles.net folder decrypter plugin""" + __license__ = "GPLv3" __authors__ = [("Walter Purcaro", "vuolter@gmail.com"), ("stickell", "l.stickell@yahoo.it")] diff --git a/module/plugins/crypter/UlozToFolder.py b/module/plugins/crypter/UlozToFolder.py index 0977addcd..03d415a77 100644 --- a/module/plugins/crypter/UlozToFolder.py +++ b/module/plugins/crypter/UlozToFolder.py @@ -12,6 +12,7 @@ class UlozToFolder(Crypter): __pattern__ = r'http://(?:www\.)?(uloz\.to|ulozto\.(cz|sk|net)|bagruj.cz|zachowajto.pl)/(m|soubory)/.*' __description__ = """Uloz.to folder decrypter plugin""" + __license__ = "GPLv3" __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] diff --git a/module/plugins/crypter/UploadableChFolder.py b/module/plugins/crypter/UploadableChFolder.py index 0d672acf5..9e1e3aba8 100644 --- a/module/plugins/crypter/UploadableChFolder.py +++ b/module/plugins/crypter/UploadableChFolder.py @@ -11,6 +11,7 @@ class UploadableChFolder(SimpleCrypter): __pattern__ = r'http://(?:www\.)?uploadable\.ch/list/\w+' __description__ = """ Uploadable.ch folder decrypter plugin """ + __license__ = "GPLv3" __authors__ = [("guidobelix", "guidobelix@hotmail.it"), ("Walter Purcaro", "vuolter@gmail.com")] diff --git a/module/plugins/crypter/UploadedToFolder.py b/module/plugins/crypter/UploadedToFolder.py index b58162dd3..a2ceccc68 100644 --- a/module/plugins/crypter/UploadedToFolder.py +++ b/module/plugins/crypter/UploadedToFolder.py @@ -13,6 +13,7 @@ class UploadedToFolder(SimpleCrypter): __pattern__ = r'http://(?:www\.)?(uploaded|ul)\.(to|net)/(f|folder|list)/(?P\w+)' __description__ = """UploadedTo decrypter plugin""" + __license__ = "GPLv3" __authors__ = [("stickell", "l.stickell@yahoo.it")] diff --git a/module/plugins/crypter/WiiReloadedOrg.py b/module/plugins/crypter/WiiReloadedOrg.py index 12863cf75..3b28faf4f 100644 --- a/module/plugins/crypter/WiiReloadedOrg.py +++ b/module/plugins/crypter/WiiReloadedOrg.py @@ -11,4 +11,5 @@ class WiiReloadedOrg(DeadCrypter): __pattern__ = r'http://(?:www\.)?wii-reloaded\.org/protect/get\.php\?i=.+' __description__ = """Wii-Reloaded.org decrypter plugin""" + __license__ = "GPLv3" __authors__ = [("hzpz", None)] diff --git a/module/plugins/crypter/XupPl.py b/module/plugins/crypter/XupPl.py index e24c242e4..5a42a1d1e 100644 --- a/module/plugins/crypter/XupPl.py +++ b/module/plugins/crypter/XupPl.py @@ -11,6 +11,7 @@ class XupPl(Crypter): __pattern__ = r'https?://(?:[^/]*\.)?xup\.pl/.*' __description__ = """Xup.pl decrypter plugin""" + __license__ = "GPLv3" __authors__ = [("z00nx", "z00nx0@gmail.com")] diff --git a/module/plugins/crypter/YoutubeBatch.py b/module/plugins/crypter/YoutubeBatch.py index b33554673..6ffb6b48e 100644 --- a/module/plugins/crypter/YoutubeBatch.py +++ b/module/plugins/crypter/YoutubeBatch.py @@ -22,6 +22,7 @@ class YoutubeBatch(Crypter): ("uploads", "bool", "Grab channel unplaylisted videos", True)] __description__ = """Youtube.com channel & playlist decrypter plugin""" + __license__ = "GPLv3" __authors__ = [("Walter Purcaro", "vuolter@gmail.com")] diff --git a/module/plugins/hooks/AlldebridCom.py b/module/plugins/hooks/AlldebridCom.py index 9eddb6f56..e2e044526 100644 --- a/module/plugins/hooks/AlldebridCom.py +++ b/module/plugins/hooks/AlldebridCom.py @@ -17,6 +17,7 @@ class AlldebridCom(MultiHoster): ("interval", "int", "Reload interval in hours (0 to disable)", 24)] __description__ = """Alldebrid.com hook plugin""" + __license__ = "GPLv3" __authors__ = [("Andy Voigt", "spamsales@online.de")] diff --git a/module/plugins/hooks/BypassCaptcha.py b/module/plugins/hooks/BypassCaptcha.py index a56fcf9bc..984aac919 100644 --- a/module/plugins/hooks/BypassCaptcha.py +++ b/module/plugins/hooks/BypassCaptcha.py @@ -33,6 +33,7 @@ class BypassCaptcha(Hook): ("passkey", "password", "Passkey", "")] __description__ = """Send captchas to BypassCaptcha.com""" + __license__ = "GPLv3" __authors__ = [("RaNaN", "RaNaN@pyload.org"), ("Godofdream", "soilfcition@gmail.com"), ("zoidberg", "zoidberg@mujmail.cz")] diff --git a/module/plugins/hooks/Captcha9kw.py b/module/plugins/hooks/Captcha9kw.py index bef5c6b01..7c1fa40fd 100755 --- a/module/plugins/hooks/Captcha9kw.py +++ b/module/plugins/hooks/Captcha9kw.py @@ -30,6 +30,7 @@ class Captcha9kw(Hook): ("passkey", "password", "API key", "")] __description__ = """Send captchas to 9kw.eu""" + __license__ = "GPLv3" __authors__ = [("RaNaN", "RaNaN@pyload.org")] diff --git a/module/plugins/hooks/CaptchaBrotherhood.py b/module/plugins/hooks/CaptchaBrotherhood.py index 130ec128e..3157fead8 100644 --- a/module/plugins/hooks/CaptchaBrotherhood.py +++ b/module/plugins/hooks/CaptchaBrotherhood.py @@ -44,6 +44,7 @@ class CaptchaBrotherhood(Hook): ("passkey", "password", "Password", "")] __description__ = """Send captchas to CaptchaBrotherhood.com""" + __license__ = "GPLv3" __authors__ = [("RaNaN", "RaNaN@pyload.org"), ("zoidberg", "zoidberg@mujmail.cz")] diff --git a/module/plugins/hooks/Checksum.py b/module/plugins/hooks/Checksum.py index dddae5ed0..32597beeb 100644 --- a/module/plugins/hooks/Checksum.py +++ b/module/plugins/hooks/Checksum.py @@ -50,6 +50,7 @@ class Checksum(Hook): ("wait_time", "int", "Time to wait before each retry (seconds)", 1)] __description__ = """Verify downloaded file size and checksum""" + __license__ = "GPLv3" __authors__ = [("zoidberg", "zoidberg@mujmail.cz"), ("Walter Purcaro", "vuolter@gmail.com"), ("stickell", "l.stickell@yahoo.it")] diff --git a/module/plugins/hooks/ClickAndLoad.py b/module/plugins/hooks/ClickAndLoad.py index f40a6d999..304cb9233 100644 --- a/module/plugins/hooks/ClickAndLoad.py +++ b/module/plugins/hooks/ClickAndLoad.py @@ -15,6 +15,7 @@ class ClickAndLoad(Hook): ("extern", "bool", "Allow external link adding", False)] __description__ = """Gives abillity to use jd's click and load. depends on webinterface""" + __license__ = "GPLv3" __authors__ = [("RaNaN", "RaNaN@pyload.de"), ("mkaay", "mkaay@mkaay.de")] diff --git a/module/plugins/hooks/DeathByCaptcha.py b/module/plugins/hooks/DeathByCaptcha.py index 48b3a3b44..d58da9a88 100644 --- a/module/plugins/hooks/DeathByCaptcha.py +++ b/module/plugins/hooks/DeathByCaptcha.py @@ -55,6 +55,7 @@ class DeathByCaptcha(Hook): ("force", "bool", "Force DBC even if client is connected", False)] __description__ = """Send captchas to DeathByCaptcha.com""" + __license__ = "GPLv3" __authors__ = [("RaNaN", "RaNaN@pyload.org"), ("zoidberg", "zoidberg@mujmail.cz")] diff --git a/module/plugins/hooks/DebridItaliaCom.py b/module/plugins/hooks/DebridItaliaCom.py index 2cb7d0fe1..667e78b97 100644 --- a/module/plugins/hooks/DebridItaliaCom.py +++ b/module/plugins/hooks/DebridItaliaCom.py @@ -15,6 +15,7 @@ class DebridItaliaCom(MultiHoster): ("interval", "int", "Reload interval in hours (0 to disable)", 24)] __description__ = """Debriditalia.com hook plugin""" + __license__ = "GPLv3" __authors__ = [("stickell", "l.stickell@yahoo.it")] diff --git a/module/plugins/hooks/DeleteFinished.py b/module/plugins/hooks/DeleteFinished.py index c17399bf4..2ca5bfb4a 100644 --- a/module/plugins/hooks/DeleteFinished.py +++ b/module/plugins/hooks/DeleteFinished.py @@ -14,6 +14,7 @@ class DeleteFinished(Hook): ('deloffline', 'bool', 'Delete packages with offline links', 'False')] __description__ = """Automatically delete all finished packages from queue""" + __license__ = "GPLv3" __authors__ = [("Walter Purcaro", "vuolter@gmail.com")] diff --git a/module/plugins/hooks/DownloadScheduler.py b/module/plugins/hooks/DownloadScheduler.py index 262019ee9..c7a0155dd 100644 --- a/module/plugins/hooks/DownloadScheduler.py +++ b/module/plugins/hooks/DownloadScheduler.py @@ -18,6 +18,7 @@ class DownloadScheduler(Hook): ("abort", "bool", "Abort active downloads when start period with speed 0", False)] __description__ = """Download Scheduler""" + __license__ = "GPLv3" __authors__ = [("zoidberg", "zoidberg@mujmail.cz"), ("stickell", "l.stickell@yahoo.it")] diff --git a/module/plugins/hooks/EasybytezCom.py b/module/plugins/hooks/EasybytezCom.py index 6dfda3d2e..5489dd6ac 100644 --- a/module/plugins/hooks/EasybytezCom.py +++ b/module/plugins/hooks/EasybytezCom.py @@ -15,6 +15,7 @@ class EasybytezCom(MultiHoster): ("hosterList", "str", "Hoster list (comma separated)", "")] __description__ = """EasyBytez.com hook plugin""" + __license__ = "GPLv3" __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] diff --git a/module/plugins/hooks/ExpertDecoders.py b/module/plugins/hooks/ExpertDecoders.py index 1941cecba..712b19677 100644 --- a/module/plugins/hooks/ExpertDecoders.py +++ b/module/plugins/hooks/ExpertDecoders.py @@ -22,6 +22,7 @@ class ExpertDecoders(Hook): ("passkey", "password", "Access key", "")] __description__ = """Send captchas to expertdecoders.com""" + __license__ = "GPLv3" __authors__ = [("RaNaN", "RaNaN@pyload.org"), ("zoidberg", "zoidberg@mujmail.cz")] diff --git a/module/plugins/hooks/ExternalScripts.py b/module/plugins/hooks/ExternalScripts.py index 1f1b4e21e..55182cf84 100644 --- a/module/plugins/hooks/ExternalScripts.py +++ b/module/plugins/hooks/ExternalScripts.py @@ -18,6 +18,7 @@ class ExternalScripts(Hook): __config__ = [("activated", "bool", "Activated", True)] __description__ = """Run external scripts""" + __license__ = "GPLv3" __authors__ = [("mkaay", "mkaay@mkaay.de"), ("RaNaN", "ranan@pyload.org"), ("spoob", "spoob@pyload.org"), diff --git a/module/plugins/hooks/ExtractArchive.py b/module/plugins/hooks/ExtractArchive.py index 191b3f1e8..f6958941e 100644 --- a/module/plugins/hooks/ExtractArchive.py +++ b/module/plugins/hooks/ExtractArchive.py @@ -70,6 +70,7 @@ class ExtractArchive(Hook): ("renice", "int", "CPU Priority", 0)] __description__ = """Extract different kind of archives""" + __license__ = "GPLv3" __authors__ = [("RaNaN", "ranan@pyload.org"), ("AndroKev", None), ("Walter Purcaro", "vuolter@gmail.com")] diff --git a/module/plugins/hooks/FastixRu.py b/module/plugins/hooks/FastixRu.py index 8cb6bbabf..a6c94a66a 100644 --- a/module/plugins/hooks/FastixRu.py +++ b/module/plugins/hooks/FastixRu.py @@ -16,6 +16,7 @@ class FastixRu(MultiHoster): ("interval", "int", "Reload interval in hours (0 to disable)", 24)] __description__ = """Fastix.ru hook plugin""" + __license__ = "GPLv3" __authors__ = [("Massimo Rosamilia", "max@spiritix.eu")] diff --git a/module/plugins/hooks/FreeWayMe.py b/module/plugins/hooks/FreeWayMe.py index 58a9de18e..110f371c2 100644 --- a/module/plugins/hooks/FreeWayMe.py +++ b/module/plugins/hooks/FreeWayMe.py @@ -16,6 +16,7 @@ class FreeWayMe(MultiHoster): ("interval", "int", "Reload interval in hours (0 to disable)", 24)] __description__ = """FreeWay.me hook plugin""" + __license__ = "GPLv3" __authors__ = [("Nicolas Giese", "james@free-way.me")] diff --git a/module/plugins/hooks/HotFolder.py b/module/plugins/hooks/HotFolder.py index d38e240ca..34a9ff49b 100644 --- a/module/plugins/hooks/HotFolder.py +++ b/module/plugins/hooks/HotFolder.py @@ -21,6 +21,7 @@ class HotFolder(Hook): ("file", "str", "Link file", "links.txt")] __description__ = """Observe folder and file for changes and add container and links""" + __license__ = "GPLv3" __authors__ = [("RaNaN", "RaNaN@pyload.de")] diff --git a/module/plugins/hooks/IRCInterface.py b/module/plugins/hooks/IRCInterface.py index ec76fbf68..d648db7cf 100644 --- a/module/plugins/hooks/IRCInterface.py +++ b/module/plugins/hooks/IRCInterface.py @@ -33,6 +33,7 @@ class IRCInterface(Thread, Hook): ("captcha", "bool", "Send captcha requests", True)] __description__ = """Connect to irc and let owner perform different tasks""" + __license__ = "GPLv3" __authors__ = [("Jeix", "Jeix@hasnomail.com")] diff --git a/module/plugins/hooks/ImageTyperz.py b/module/plugins/hooks/ImageTyperz.py index 6e63b8a0d..aaa3c7bbd 100644 --- a/module/plugins/hooks/ImageTyperz.py +++ b/module/plugins/hooks/ImageTyperz.py @@ -38,6 +38,7 @@ class ImageTyperz(Hook): ("force", "bool", "Force IT even if client is connected", False)] __description__ = """Send captchas to ImageTyperz.com""" + __license__ = "GPLv3" __authors__ = [("RaNaN", "RaNaN@pyload.org"), ("zoidberg", "zoidberg@mujmail.cz")] diff --git a/module/plugins/hooks/LinkdecrypterCom.py b/module/plugins/hooks/LinkdecrypterCom.py index 0117938b1..df1fbee9a 100644 --- a/module/plugins/hooks/LinkdecrypterCom.py +++ b/module/plugins/hooks/LinkdecrypterCom.py @@ -15,6 +15,7 @@ class LinkdecrypterCom(Hook): __config__ = [("activated", "bool", "Activated", False)] __description__ = """Linkdecrypter.com hook plugin""" + __license__ = "GPLv3" __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] diff --git a/module/plugins/hooks/LinksnappyCom.py b/module/plugins/hooks/LinksnappyCom.py index 1cf4afaa0..bfd85f6b5 100644 --- a/module/plugins/hooks/LinksnappyCom.py +++ b/module/plugins/hooks/LinksnappyCom.py @@ -17,6 +17,7 @@ class LinksnappyCom(MultiHoster): ("interval", "int", "Reload interval in hours (0 to disable)", 24)] __description__ = """Linksnappy.com hook plugin""" + __license__ = "GPLv3" __authors__ = [("stickell", "l.stickell@yahoo.it")] diff --git a/module/plugins/hooks/MegaDebridEu.py b/module/plugins/hooks/MegaDebridEu.py index bfdea202f..0d16e04d2 100644 --- a/module/plugins/hooks/MegaDebridEu.py +++ b/module/plugins/hooks/MegaDebridEu.py @@ -14,6 +14,7 @@ class MegaDebridEu(MultiHoster): ("unloadFailing", "bool", "Revert to standard download if download fails", False)] __description__ = """mega-debrid.eu hook plugin""" + __license__ = "GPLv3" __authors__ = [("D.Ducatel", "dducatel@je-geek.fr")] diff --git a/module/plugins/hooks/MergeFiles.py b/module/plugins/hooks/MergeFiles.py index 61cef415e..627a9ec3c 100644 --- a/module/plugins/hooks/MergeFiles.py +++ b/module/plugins/hooks/MergeFiles.py @@ -16,6 +16,7 @@ class MergeFiles(Hook): __config__ = [("activated", "bool", "Activated", False)] __description__ = """Merges parts splitted with hjsplit""" + __license__ = "GPLv3" __authors__ = [("and9000", "me@has-no-mail.com")] diff --git a/module/plugins/hooks/MultiHome.py b/module/plugins/hooks/MultiHome.py index 7f223d2b0..5cda53bd7 100644 --- a/module/plugins/hooks/MultiHome.py +++ b/module/plugins/hooks/MultiHome.py @@ -14,6 +14,7 @@ class MultiHome(Hook): ("interfaces", "str", "Interfaces", "None")] __description__ = """Ip address changer""" + __license__ = "GPLv3" __authors__ = [("mkaay", "mkaay@mkaay.de")] diff --git a/module/plugins/hooks/MultishareCz.py b/module/plugins/hooks/MultishareCz.py index 446b6bc5f..b7c69b3dc 100644 --- a/module/plugins/hooks/MultishareCz.py +++ b/module/plugins/hooks/MultishareCz.py @@ -16,6 +16,7 @@ class MultishareCz(MultiHoster): ("hosterList", "str", "Hoster list (comma separated)", "uloz.to")] __description__ = """MultiShare.cz hook plugin""" + __license__ = "GPLv3" __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] diff --git a/module/plugins/hooks/MyfastfileCom.py b/module/plugins/hooks/MyfastfileCom.py index b7d2ca1bb..80751c6b4 100644 --- a/module/plugins/hooks/MyfastfileCom.py +++ b/module/plugins/hooks/MyfastfileCom.py @@ -15,6 +15,7 @@ class MyfastfileCom(MultiHoster): ("unloadFailing", "bool", "Revert to standard download if download fails", False), ("interval", "int", "Reload interval in hours (0 to disable)", 24)] __description__ = """Myfastfile.com hook plugin""" + __license__ = "GPLv3" __authors__ = [("stickell", "l.stickell@yahoo.it")] diff --git a/module/plugins/hooks/OverLoadMe.py b/module/plugins/hooks/OverLoadMe.py index 8e4c8f4c6..fcb9a647a 100644 --- a/module/plugins/hooks/OverLoadMe.py +++ b/module/plugins/hooks/OverLoadMe.py @@ -17,6 +17,7 @@ class OverLoadMe(MultiHoster): ("interval", "int", "Reload interval in hours (0 to disable)", 12)] __description__ = """Over-Load.me hook plugin""" + __license__ = "GPLv3" __authors__ = [("marley", "marley@over-load.me")] diff --git a/module/plugins/hooks/PremiumTo.py b/module/plugins/hooks/PremiumTo.py index 700ef0fac..e783bac8f 100644 --- a/module/plugins/hooks/PremiumTo.py +++ b/module/plugins/hooks/PremiumTo.py @@ -14,6 +14,7 @@ class PremiumTo(MultiHoster): ("hosterList", "str", "Hoster list (comma separated)", "")] __description__ = """Premium.to hook plugin""" + __license__ = "GPLv3" __authors__ = [("RaNaN", "RaNaN@pyload.org"), ("zoidberg", "zoidberg@mujmail.cz"), ("stickell", "l.stickell@yahoo.it")] diff --git a/module/plugins/hooks/PremiumizeMe.py b/module/plugins/hooks/PremiumizeMe.py index c11bd3ced..c1a7866c4 100644 --- a/module/plugins/hooks/PremiumizeMe.py +++ b/module/plugins/hooks/PremiumizeMe.py @@ -17,6 +17,7 @@ class PremiumizeMe(MultiHoster): ("interval", "int", "Reload interval in hours (0 to disable)", 24)] __description__ = """Premiumize.me hook plugin""" + __license__ = "GPLv3" __authors__ = [("Florian Franzen", "FlorianFranzen@gmail.com")] diff --git a/module/plugins/hooks/RPNetBiz.py b/module/plugins/hooks/RPNetBiz.py index 6d60b1b98..f0231d0e7 100644 --- a/module/plugins/hooks/RPNetBiz.py +++ b/module/plugins/hooks/RPNetBiz.py @@ -17,6 +17,7 @@ class RPNetBiz(MultiHoster): ("interval", "int", "Reload interval in hours (0 to disable)", 24)] __description__ = """RPNet.biz hook plugin""" + __license__ = "GPLv3" __authors__ = [("Dman", "dmanugm@gmail.com")] diff --git a/module/plugins/hooks/RealdebridCom.py b/module/plugins/hooks/RealdebridCom.py index 9833de7d0..f206c9319 100644 --- a/module/plugins/hooks/RealdebridCom.py +++ b/module/plugins/hooks/RealdebridCom.py @@ -17,6 +17,7 @@ class RealdebridCom(MultiHoster): ("interval", "int", "Reload interval in hours (0 to disable)", 24)] __description__ = """Real-Debrid.com hook plugin""" + __license__ = "GPLv3" __authors__ = [("Devirex Hazzard", "naibaf_11@yahoo.de")] diff --git a/module/plugins/hooks/RehostTo.py b/module/plugins/hooks/RehostTo.py index 423f465a8..f3e1465ee 100644 --- a/module/plugins/hooks/RehostTo.py +++ b/module/plugins/hooks/RehostTo.py @@ -16,6 +16,7 @@ class RehostTo(MultiHoster): ("interval", "int", "Reload interval in hours (0 to disable)", 24)] __description__ = """Rehost.to hook plugin""" + __license__ = "GPLv3" __authors__ = [("RaNaN", "RaNaN@pyload.org")] diff --git a/module/plugins/hooks/RestartFailed.py b/module/plugins/hooks/RestartFailed.py index 8e01ee0f1..6724ceaa8 100644 --- a/module/plugins/hooks/RestartFailed.py +++ b/module/plugins/hooks/RestartFailed.py @@ -12,6 +12,7 @@ class RestartFailed(Hook): ("interval", "int", "Check interval in minutes", 90)] __description__ = """Periodically restart all failed downloads in queue""" + __license__ = "GPLv3" __authors__ = [("Walter Purcaro", "vuolter@gmail.com")] diff --git a/module/plugins/hooks/SimplyPremiumCom.py b/module/plugins/hooks/SimplyPremiumCom.py index 0bdd40f51..3a2586b94 100644 --- a/module/plugins/hooks/SimplyPremiumCom.py +++ b/module/plugins/hooks/SimplyPremiumCom.py @@ -17,6 +17,7 @@ class SimplyPremiumCom(MultiHoster): ("interval", "int", "Reload interval in hours (0 to disable)", "24")] __description__ = """Simply-Premium.com hook plugin""" + __license__ = "GPLv3" __authors__ = [("EvolutionClip", "evolutionclip@live.de")] diff --git a/module/plugins/hooks/SimplydebridCom.py b/module/plugins/hooks/SimplydebridCom.py index 0d8105356..14be2a032 100644 --- a/module/plugins/hooks/SimplydebridCom.py +++ b/module/plugins/hooks/SimplydebridCom.py @@ -14,6 +14,7 @@ class SimplydebridCom(MultiHoster): ("hosterList", "str", "Hoster list (comma separated)", "")] __description__ = """Simply-Debrid.com hook plugin""" + __license__ = "GPLv3" __authors__ = [("Kagenoshin", "kagenoshin@gmx.ch")] diff --git a/module/plugins/hooks/UnSkipOnFail.py b/module/plugins/hooks/UnSkipOnFail.py index 983eb21fa..f29383b32 100644 --- a/module/plugins/hooks/UnSkipOnFail.py +++ b/module/plugins/hooks/UnSkipOnFail.py @@ -15,6 +15,7 @@ class UnSkipOnFail(Hook): __config__ = [("activated", "bool", "Activated", True)] __description__ = """When a download fails, restart skipped duplicates""" + __license__ = "GPLv3" __authors__ = [("hagg", None)] diff --git a/module/plugins/hooks/UnrestrictLi.py b/module/plugins/hooks/UnrestrictLi.py index 9dc417bf9..28f0289c7 100644 --- a/module/plugins/hooks/UnrestrictLi.py +++ b/module/plugins/hooks/UnrestrictLi.py @@ -18,6 +18,7 @@ class UnrestrictLi(MultiHoster): ("history", "bool", "Delete History", False)] __description__ = """Unrestrict.li hook plugin""" + __license__ = "GPLv3" __authors__ = [("stickell", "l.stickell@yahoo.it")] diff --git a/module/plugins/hooks/UpdateManager.py b/module/plugins/hooks/UpdateManager.py index 65a7f92e2..fe5808789 100644 --- a/module/plugins/hooks/UpdateManager.py +++ b/module/plugins/hooks/UpdateManager.py @@ -23,6 +23,7 @@ class UpdateManager(Hook): ("nodebugupdate", "bool", "Don't check for updates in debug mode", True)] __description__ = """ Check for updates """ + __license__ = "GPLv3" __authors__ = [("Walter Purcaro", "vuolter@gmail.com")] diff --git a/module/plugins/hooks/WindowsPhoneToastNotify.py b/module/plugins/hooks/WindowsPhoneToastNotify.py index bf18d01c0..eed61adbd 100644 --- a/module/plugins/hooks/WindowsPhoneToastNotify.py +++ b/module/plugins/hooks/WindowsPhoneToastNotify.py @@ -18,6 +18,7 @@ class WindowsPhoneToastNotify(Hook): ("pushTimeout", "int", "Timeout between notifications in seconds", 0)] __description__ = """Send push notifications to Windows Phone""" + __license__ = "GPLv3" __authors__ = [("Andy Voigt", "phone-support@hotmail.de")] diff --git a/module/plugins/hooks/XFileSharingPro.py b/module/plugins/hooks/XFileSharingPro.py index 4b431f813..46c693cf6 100644 --- a/module/plugins/hooks/XFileSharingPro.py +++ b/module/plugins/hooks/XFileSharingPro.py @@ -16,6 +16,7 @@ class XFileSharingPro(Hook): ("exclude_hosters", "str", "Exclude hosters (comma separated)", "")] __description__ = """XFileSharingPro hook plugin""" + __license__ = "GPLv3" __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] diff --git a/module/plugins/hooks/XMPPInterface.py b/module/plugins/hooks/XMPPInterface.py index d6334d8d0..b32eeb40b 100644 --- a/module/plugins/hooks/XMPPInterface.py +++ b/module/plugins/hooks/XMPPInterface.py @@ -24,6 +24,7 @@ class XMPPInterface(IRCInterface, JabberClient): ("captcha", "bool", "Send captcha requests", True)] __description__ = """Connect to jabber and let owner perform different tasks""" + __license__ = "GPLv3" __authors__ = [("RaNaN", "RaNaN@pyload.org")] diff --git a/module/plugins/hooks/ZeveraCom.py b/module/plugins/hooks/ZeveraCom.py index 2c4d9d049..c474756a7 100644 --- a/module/plugins/hooks/ZeveraCom.py +++ b/module/plugins/hooks/ZeveraCom.py @@ -14,6 +14,7 @@ class ZeveraCom(MultiHoster): ("hosterList", "str", "Hoster list (comma separated)", "")] __description__ = """Real-Debrid.com hook plugin""" + __license__ = "GPLv3" __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] diff --git a/module/plugins/hoster/AlldebridCom.py b/module/plugins/hoster/AlldebridCom.py index 49aed9330..74509110c 100644 --- a/module/plugins/hoster/AlldebridCom.py +++ b/module/plugins/hoster/AlldebridCom.py @@ -18,6 +18,7 @@ class AlldebridCom(Hoster): __pattern__ = r'https?://(?:[^/]*\.)?alldebrid\..*' __description__ = """Alldebrid.com hoster plugin""" + __license__ = "GPLv3" __authors__ = [("Andy Voigt", "spamsales@online.de")] diff --git a/module/plugins/hoster/BasePlugin.py b/module/plugins/hoster/BasePlugin.py index 41569db1d..ffc1a66af 100644 --- a/module/plugins/hoster/BasePlugin.py +++ b/module/plugins/hoster/BasePlugin.py @@ -18,6 +18,7 @@ class BasePlugin(Hoster): __pattern__ = r'^unmatchable$' __description__ = """Base Plugin when any other didnt fit""" + __license__ = "GPLv3" __authors__ = [("RaNaN", "RaNaN@pyload.org")] diff --git a/module/plugins/hoster/BayfilesCom.py b/module/plugins/hoster/BayfilesCom.py index 4c6308b10..3d4306df5 100644 --- a/module/plugins/hoster/BayfilesCom.py +++ b/module/plugins/hoster/BayfilesCom.py @@ -16,6 +16,7 @@ class BayfilesCom(SimpleHoster): __pattern__ = r'https?://(?:www\.)?bayfiles\.(com|net)/file/(?P[a-zA-Z0-9]+/[a-zA-Z0-9]+/[^/]+)' __description__ = """Bayfiles.com hoster plugin""" + __license__ = "GPLv3" __authors__ = [("zoidberg", "zoidberg@mujmail.cz"), ("Walter Purcaro", "vuolter@gmail.com")] diff --git a/module/plugins/hoster/BezvadataCz.py b/module/plugins/hoster/BezvadataCz.py index 7c095cbd7..8c4e17630 100644 --- a/module/plugins/hoster/BezvadataCz.py +++ b/module/plugins/hoster/BezvadataCz.py @@ -13,6 +13,7 @@ class BezvadataCz(SimpleHoster): __pattern__ = r'http://(?:www\.)?bezvadata.cz/stahnout/.*' __description__ = """BezvaData.cz hoster plugin""" + __license__ = "GPLv3" __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] diff --git a/module/plugins/hoster/BillionuploadsCom.py b/module/plugins/hoster/BillionuploadsCom.py index 854dec008..3065ef6cd 100644 --- a/module/plugins/hoster/BillionuploadsCom.py +++ b/module/plugins/hoster/BillionuploadsCom.py @@ -11,6 +11,7 @@ class BillionuploadsCom(XFSPHoster): __pattern__ = r'http://(?:www\.)?billionuploads\.com/\w{12}' __description__ = """Billionuploads.com hoster plugin""" + __license__ = "GPLv3" __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] diff --git a/module/plugins/hoster/BitshareCom.py b/module/plugins/hoster/BitshareCom.py index a9d9e78cb..2a0b0fa9b 100644 --- a/module/plugins/hoster/BitshareCom.py +++ b/module/plugins/hoster/BitshareCom.py @@ -16,6 +16,7 @@ class BitshareCom(SimpleHoster): __pattern__ = r'http://(?:www\.)?bitshare\.com/(files/(?P[a-zA-Z0-9]+)(/(?P.*?)\.html)?|\?f=(?P[a-zA-Z0-9]+))' __description__ = """Bitshare.com hoster plugin""" + __license__ = "GPLv3" __authors__ = [("Paul King", None), ("fragonib", "fragonib[AT]yahoo[DOT]es")] diff --git a/module/plugins/hoster/BoltsharingCom.py b/module/plugins/hoster/BoltsharingCom.py index a7d6b525d..8862e38a2 100644 --- a/module/plugins/hoster/BoltsharingCom.py +++ b/module/plugins/hoster/BoltsharingCom.py @@ -11,6 +11,7 @@ class BoltsharingCom(DeadHoster): __pattern__ = r'http://(?:www\.)?boltsharing.com/\w{12}' __description__ = """Boltsharing.com hoster plugin""" + __license__ = "GPLv3" __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] diff --git a/module/plugins/hoster/CatShareNet.py b/module/plugins/hoster/CatShareNet.py index c0c934211..c50632ac3 100644 --- a/module/plugins/hoster/CatShareNet.py +++ b/module/plugins/hoster/CatShareNet.py @@ -14,6 +14,7 @@ class CatShareNet(SimpleHoster): __pattern__ = r'http://(?:www\.)?catshare\.net/\w{16}' __description__ = """CatShare.net hoster plugin""" + __license__ = "GPLv3" __authors__ = [("z00nx", "z00nx0@gmail.com"), ("prOq", None), ("Walter Purcaro", "vuolter@gmail.com")] diff --git a/module/plugins/hoster/CloudzerNet.py b/module/plugins/hoster/CloudzerNet.py index c7e49e9fc..915437919 100644 --- a/module/plugins/hoster/CloudzerNet.py +++ b/module/plugins/hoster/CloudzerNet.py @@ -11,6 +11,7 @@ class CloudzerNet(DeadHoster): __pattern__ = r'https?://(?:www\.)?(cloudzer\.net/file/|clz\.to/(file/)?)\w+' __description__ = """Cloudzer.net hoster plugin""" + __license__ = "GPLv3" __authors__ = [("gs", "I-_-I-_-I@web.de"), ("z00nx", "z00nx0@gmail.com"), ("stickell", "l.stickell@yahoo.it")] diff --git a/module/plugins/hoster/CramitIn.py b/module/plugins/hoster/CramitIn.py index aaaaebaaf..10a9d68c2 100644 --- a/module/plugins/hoster/CramitIn.py +++ b/module/plugins/hoster/CramitIn.py @@ -11,6 +11,7 @@ class CramitIn(XFSPHoster): __pattern__ = r'http://(?:www\.)?cramit\.in/\w{12}' __description__ = """Cramit.in hoster plugin""" + __license__ = "GPLv3" __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] diff --git a/module/plugins/hoster/CrockoCom.py b/module/plugins/hoster/CrockoCom.py index f5b883143..bf69dea53 100644 --- a/module/plugins/hoster/CrockoCom.py +++ b/module/plugins/hoster/CrockoCom.py @@ -14,6 +14,7 @@ class CrockoCom(SimpleHoster): __pattern__ = r'http://(?:www\.)?(crocko|easy-share).com/\w+' __description__ = """Crocko hoster plugin""" + __license__ = "GPLv3" __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] diff --git a/module/plugins/hoster/CyberlockerCh.py b/module/plugins/hoster/CyberlockerCh.py index 89b3b9f1e..0866d604f 100644 --- a/module/plugins/hoster/CyberlockerCh.py +++ b/module/plugins/hoster/CyberlockerCh.py @@ -11,6 +11,7 @@ class CyberlockerCh(DeadHoster): __pattern__ = r'http://(?:www\.)?cyberlocker\.ch/\w+' __description__ = """Cyberlocker.ch hoster plugin""" + __license__ = "GPLv3" __authors__ = [("stickell", "l.stickell@yahoo.it")] diff --git a/module/plugins/hoster/CzshareCom.py b/module/plugins/hoster/CzshareCom.py index fd06f246b..9e965b972 100644 --- a/module/plugins/hoster/CzshareCom.py +++ b/module/plugins/hoster/CzshareCom.py @@ -17,6 +17,7 @@ class CzshareCom(SimpleHoster): __pattern__ = r'http://(?:www\.)?(czshare|sdilej)\.(com|cz)/(\d+/|download.php\?).*' __description__ = """CZshare.com hoster plugin, now Sdilej.cz""" + __license__ = "GPLv3" __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] diff --git a/module/plugins/hoster/DailymotionCom.py b/module/plugins/hoster/DailymotionCom.py index d8e56f761..726663ca6 100644 --- a/module/plugins/hoster/DailymotionCom.py +++ b/module/plugins/hoster/DailymotionCom.py @@ -47,6 +47,7 @@ class DailymotionCom(Hoster): __config__ = [("quality", "Lowest;LD 144p;LD 240p;SD 384p;HQ 480p;HD 720p;HD 1080p;Highest", "Quality", "Highest")] __description__ = """Dailymotion.com hoster plugin""" + __license__ = "GPLv3" __authors__ = [("Walter Purcaro", "vuolter@gmail.com")] diff --git a/module/plugins/hoster/DataHu.py b/module/plugins/hoster/DataHu.py index c90b994c7..691c4ec37 100644 --- a/module/plugins/hoster/DataHu.py +++ b/module/plugins/hoster/DataHu.py @@ -16,6 +16,7 @@ class DataHu(SimpleHoster): __pattern__ = r'http://(?:www\.)?data.hu/get/\w+' __description__ = """Data.hu hoster plugin""" + __license__ = "GPLv3" __authors__ = [("crash", None), ("stickell", "l.stickell@yahoo.it")] diff --git a/module/plugins/hoster/DataportCz.py b/module/plugins/hoster/DataportCz.py index 5cf022d3f..2d4029734 100644 --- a/module/plugins/hoster/DataportCz.py +++ b/module/plugins/hoster/DataportCz.py @@ -11,6 +11,7 @@ class DataportCz(SimpleHoster): __pattern__ = r'http://(?:www\.)?dataport.cz/file/(.*)' __description__ = """Dataport.cz hoster plugin""" + __license__ = "GPLv3" __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] diff --git a/module/plugins/hoster/DateiTo.py b/module/plugins/hoster/DateiTo.py index 79de07089..400fa416f 100644 --- a/module/plugins/hoster/DateiTo.py +++ b/module/plugins/hoster/DateiTo.py @@ -14,6 +14,7 @@ class DateiTo(SimpleHoster): __pattern__ = r'http://(?:www\.)?datei\.to/datei/(?P\w+)\.html' __description__ = """Datei.to hoster plugin""" + __license__ = "GPLv3" __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] diff --git a/module/plugins/hoster/DdlstorageCom.py b/module/plugins/hoster/DdlstorageCom.py index 14accd4cb..68c71715e 100644 --- a/module/plugins/hoster/DdlstorageCom.py +++ b/module/plugins/hoster/DdlstorageCom.py @@ -11,6 +11,7 @@ class DdlstorageCom(DeadHoster): __pattern__ = r'https?://(?:www\.)?ddlstorage\.com/\w+' __description__ = """DDLStorage.com hoster plugin""" + __license__ = "GPLv3" __authors__ = [("zoidberg", "zoidberg@mujmail.cz"), ("stickell", "l.stickell@yahoo.it")] diff --git a/module/plugins/hoster/DebridItaliaCom.py b/module/plugins/hoster/DebridItaliaCom.py index 04dd910f6..4e961fa9f 100644 --- a/module/plugins/hoster/DebridItaliaCom.py +++ b/module/plugins/hoster/DebridItaliaCom.py @@ -13,6 +13,7 @@ class DebridItaliaCom(Hoster): __pattern__ = r'https?://(?:[^/]*\.)?debriditalia\.com' __description__ = """Debriditalia.com hoster plugin""" + __license__ = "GPLv3" __authors__ = [("stickell", "l.stickell@yahoo.it")] diff --git a/module/plugins/hoster/DepositfilesCom.py b/module/plugins/hoster/DepositfilesCom.py index b3330ec80..54ceabb6c 100644 --- a/module/plugins/hoster/DepositfilesCom.py +++ b/module/plugins/hoster/DepositfilesCom.py @@ -16,6 +16,7 @@ class DepositfilesCom(SimpleHoster): __pattern__ = r'https?://(?:www\.)?(depositfiles\.com|dfiles\.(eu|ru))(/\w{1,3})?/files/(?P\w+)' __description__ = """Depositfiles.com hoster plugin""" + __license__ = "GPLv3" __authors__ = [("spoob", "spoob@pyload.org"), ("zoidberg", "zoidberg@mujmail.cz"), ("Walter Purcaro", "vuolter@gmail.com")] diff --git a/module/plugins/hoster/DevhostSt.py b/module/plugins/hoster/DevhostSt.py index d4b227ea1..07a94f7ec 100644 --- a/module/plugins/hoster/DevhostSt.py +++ b/module/plugins/hoster/DevhostSt.py @@ -16,6 +16,7 @@ class DevhostSt(SimpleHoster): __pattern__ = r'http://(?:www\.)?d-h\.st/(?!users/)\w{3}' __description__ = """d-h.st hoster plugin""" + __license__ = "GPLv3" __authors__ = [("zapp-brannigan", "fuerst.reinje@web.de")] diff --git a/module/plugins/hoster/DlFreeFr.py b/module/plugins/hoster/DlFreeFr.py index 3ce8423a6..1938d112e 100644 --- a/module/plugins/hoster/DlFreeFr.py +++ b/module/plugins/hoster/DlFreeFr.py @@ -117,6 +117,7 @@ class DlFreeFr(SimpleHoster): __pattern__ = r'http://(?:www\.)?dl\.free\.fr/([a-zA-Z0-9]+|getfile\.pl\?file=/[a-zA-Z0-9]+)' __description__ = """Dl.free.fr hoster plugin""" + __license__ = "GPLv3" __authors__ = [("the-razer", "daniel_ AT gmx DOT net"), ("zoidberg", "zoidberg@mujmail.cz"), ("Toilal", "toilal.dev@gmail.com")] diff --git a/module/plugins/hoster/DropboxCom.py b/module/plugins/hoster/DropboxCom.py index 58a0e44bd..f664e3726 100644 --- a/module/plugins/hoster/DropboxCom.py +++ b/module/plugins/hoster/DropboxCom.py @@ -13,6 +13,7 @@ class DropboxCom(SimpleHoster): __pattern__ = r'https?://(?:www\.)?dropbox\.com/.+' __description__ = """Dropbox.com hoster plugin""" + __license__ = "GPLv3" __authors__ = [("zapp-brannigan", "fuerst.reinje@web.de")] diff --git a/module/plugins/hoster/DuploadOrg.py b/module/plugins/hoster/DuploadOrg.py index 02df654c2..a62677eb5 100644 --- a/module/plugins/hoster/DuploadOrg.py +++ b/module/plugins/hoster/DuploadOrg.py @@ -11,6 +11,7 @@ class DuploadOrg(DeadHoster): __pattern__ = r'http://(?:www\.)?dupload\.org/\w{12}' __description__ = """Dupload.grg hoster plugin""" + __license__ = "GPLv3" __authors__ = [("stickell", "l.stickell@yahoo.it")] diff --git a/module/plugins/hoster/EasybytezCom.py b/module/plugins/hoster/EasybytezCom.py index 3364dadef..1f5682310 100644 --- a/module/plugins/hoster/EasybytezCom.py +++ b/module/plugins/hoster/EasybytezCom.py @@ -11,6 +11,7 @@ class EasybytezCom(XFSPHoster): __pattern__ = r'http://(?:www\.)?easybytez\.com/\w{12}' __description__ = """Easybytez.com hoster plugin""" + __license__ = "GPLv3" __authors__ = [("zoidberg", "zoidberg@mujmail.cz"), ("stickell", "l.stickell@yahoo.it")] diff --git a/module/plugins/hoster/EdiskCz.py b/module/plugins/hoster/EdiskCz.py index 2c65436e6..4855247a1 100644 --- a/module/plugins/hoster/EdiskCz.py +++ b/module/plugins/hoster/EdiskCz.py @@ -13,6 +13,7 @@ class EdiskCz(SimpleHoster): __pattern__ = r'http://(?:www\.)?edisk.(cz|sk|eu)/(stahni|sk/stahni|en/download)/.*' __description__ = """Edisk.cz hoster plugin""" + __license__ = "GPLv3" __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] diff --git a/module/plugins/hoster/EgoFilesCom.py b/module/plugins/hoster/EgoFilesCom.py index 35cdd17b3..835d7994a 100644 --- a/module/plugins/hoster/EgoFilesCom.py +++ b/module/plugins/hoster/EgoFilesCom.py @@ -11,6 +11,7 @@ class EgoFilesCom(DeadHoster): __pattern__ = r'https?://(?:www\.)?egofiles\.com/\w+' __description__ = """Egofiles.com hoster plugin""" + __license__ = "GPLv3" __authors__ = [("stickell", "l.stickell@yahoo.it")] diff --git a/module/plugins/hoster/EpicShareNet.py b/module/plugins/hoster/EpicShareNet.py index f0fe766f5..8380204bb 100644 --- a/module/plugins/hoster/EpicShareNet.py +++ b/module/plugins/hoster/EpicShareNet.py @@ -11,6 +11,7 @@ class EpicShareNet(DeadHoster): __pattern__ = r'https?://(?:www\.)?epicshare\.net/\w{12}' __description__ = """EpicShare.net hoster plugin""" + __license__ = "GPLv3" __authors__ = [("t4skforce", "t4skforce1337[AT]gmail[DOT]com")] diff --git a/module/plugins/hoster/EuroshareEu.py b/module/plugins/hoster/EuroshareEu.py index 85f254840..c4811de24 100644 --- a/module/plugins/hoster/EuroshareEu.py +++ b/module/plugins/hoster/EuroshareEu.py @@ -13,6 +13,7 @@ class EuroshareEu(SimpleHoster): __pattern__ = r'http://(?:www\.)?euroshare.(eu|sk|cz|hu|pl)/file/.*' __description__ = """Euroshare.eu hoster plugin""" + __license__ = "GPLv3" __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] diff --git a/module/plugins/hoster/ExtabitCom.py b/module/plugins/hoster/ExtabitCom.py index 64538f65f..808ff712c 100644 --- a/module/plugins/hoster/ExtabitCom.py +++ b/module/plugins/hoster/ExtabitCom.py @@ -17,6 +17,7 @@ class ExtabitCom(SimpleHoster): __pattern__ = r'http://(?:www\.)?extabit\.com/(file|go|fid)/(?P\w+)' __description__ = """Extabit.com hoster plugin""" + __license__ = "GPLv3" __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] diff --git a/module/plugins/hoster/FastixRu.py b/module/plugins/hoster/FastixRu.py index 87b5234c5..ca22638f1 100644 --- a/module/plugins/hoster/FastixRu.py +++ b/module/plugins/hoster/FastixRu.py @@ -17,6 +17,7 @@ class FastixRu(Hoster): __pattern__ = r'http://(?:www\.)?fastix\.(ru|it)/file/(?P[a-zA-Z0-9]{24})' __description__ = """Fastix hoster plugin""" + __license__ = "GPLv3" __authors__ = [("Massimo Rosamilia", "max@spiritix.eu")] diff --git a/module/plugins/hoster/FastshareCz.py b/module/plugins/hoster/FastshareCz.py index 58fc16946..db85ae0ed 100644 --- a/module/plugins/hoster/FastshareCz.py +++ b/module/plugins/hoster/FastshareCz.py @@ -18,6 +18,7 @@ class FastshareCz(SimpleHoster): __pattern__ = r'http://(?:www\.)?fastshare\.cz/\d+/.+' __description__ = """FastShare.cz hoster plugin""" + __license__ = "GPLv3" __authors__ = [("zoidberg", "zoidberg@mujmail.cz"), ("stickell", "l.stickell@yahoo.it"), ("Walter Purcaro", "vuolter@gmail.com")] diff --git a/module/plugins/hoster/File4safeCom.py b/module/plugins/hoster/File4safeCom.py index ca116ef64..e5927dd69 100644 --- a/module/plugins/hoster/File4safeCom.py +++ b/module/plugins/hoster/File4safeCom.py @@ -15,6 +15,7 @@ class File4safeCom(XFSPHoster): __pattern__ = r'https?://(?:www\.)?file4safe\.com/\w{12}' __description__ = """File4safe.com hoster plugin""" + __license__ = "GPLv3" __authors__ = [("stickell", "l.stickell@yahoo.it")] diff --git a/module/plugins/hoster/FileApeCom.py b/module/plugins/hoster/FileApeCom.py index 0cb7ca7f5..a68ab9305 100644 --- a/module/plugins/hoster/FileApeCom.py +++ b/module/plugins/hoster/FileApeCom.py @@ -11,6 +11,7 @@ class FileApeCom(DeadHoster): __pattern__ = r'http://(?:www\.)?fileape\.com/(index\.php\?act=download\&id=|dl/)\w+' __description__ = """FileApe.com hoster plugin""" + __license__ = "GPLv3" __authors__ = [("espes", None)] diff --git a/module/plugins/hoster/FileParadoxIn.py b/module/plugins/hoster/FileParadoxIn.py index 00bec1084..e72399cfe 100644 --- a/module/plugins/hoster/FileParadoxIn.py +++ b/module/plugins/hoster/FileParadoxIn.py @@ -13,6 +13,7 @@ class FileParadoxIn(XFSPHoster): __pattern__ = r'https?://(?:www\.)?fileparadox\.in/\w{12}' __description__ = """FileParadox.in hoster plugin""" + __license__ = "GPLv3" __authors__ = [("RazorWing", "muppetuk1@hotmail.com")] diff --git a/module/plugins/hoster/FileStoreTo.py b/module/plugins/hoster/FileStoreTo.py index 6db7322f9..4333f800b 100644 --- a/module/plugins/hoster/FileStoreTo.py +++ b/module/plugins/hoster/FileStoreTo.py @@ -13,6 +13,7 @@ class FileStoreTo(SimpleHoster): __pattern__ = r'http://(?:www\.)?filestore\.to/\?d=(?P\w+)' __description__ = """FileStore.to hoster plugin""" + __license__ = "GPLv3" __authors__ = [("Walter Purcaro", "vuolter@gmail.com"), ("stickell", "l.stickell@yahoo.it")] diff --git a/module/plugins/hoster/FilebeerInfo.py b/module/plugins/hoster/FilebeerInfo.py index aaecb7654..05b7bb2d2 100644 --- a/module/plugins/hoster/FilebeerInfo.py +++ b/module/plugins/hoster/FilebeerInfo.py @@ -11,6 +11,7 @@ class FilebeerInfo(DeadHoster): __pattern__ = r'http://(?:www\.)?filebeer\.info/(?!\d*~f)(?P\w+).*' __description__ = """Filebeer.info plugin""" + __license__ = "GPLv3" __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] diff --git a/module/plugins/hoster/FilecloudIo.py b/module/plugins/hoster/FilecloudIo.py index dd53422b4..a3cc47bf0 100644 --- a/module/plugins/hoster/FilecloudIo.py +++ b/module/plugins/hoster/FilecloudIo.py @@ -15,6 +15,7 @@ class FilecloudIo(SimpleHoster): __pattern__ = r'http://(?:www\.)?(?:filecloud\.io|ifile\.it|mihd\.net)/(?P\w+).*' __description__ = """Filecloud.io hoster plugin""" + __license__ = "GPLv3" __authors__ = [("zoidberg", "zoidberg@mujmail.cz"), ("stickell", "l.stickell@yahoo.it")] diff --git a/module/plugins/hoster/FilefactoryCom.py b/module/plugins/hoster/FilefactoryCom.py index 9cddd4eef..a9fbdaff1 100644 --- a/module/plugins/hoster/FilefactoryCom.py +++ b/module/plugins/hoster/FilefactoryCom.py @@ -25,6 +25,7 @@ class FilefactoryCom(SimpleHoster): __pattern__ = r'https?://(?:www\.)?filefactory\.com/file/(?P[a-zA-Z0-9]+)' __description__ = """Filefactory.com hoster plugin""" + __license__ = "GPLv3" __authors__ = [("stickell", "l.stickell@yahoo.it")] diff --git a/module/plugins/hoster/FilejungleCom.py b/module/plugins/hoster/FilejungleCom.py index c5c61ea3c..aa7896db4 100644 --- a/module/plugins/hoster/FilejungleCom.py +++ b/module/plugins/hoster/FilejungleCom.py @@ -12,6 +12,7 @@ class FilejungleCom(FileserveCom): __pattern__ = r'http://(?:www\.)?filejungle\.com/f/(?P[^/]+).*' __description__ = """Filejungle.com hoster plugin""" + __license__ = "GPLv3" __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] diff --git a/module/plugins/hoster/FileomCom.py b/module/plugins/hoster/FileomCom.py index 22b0dc985..ec767c1e8 100644 --- a/module/plugins/hoster/FileomCom.py +++ b/module/plugins/hoster/FileomCom.py @@ -14,6 +14,7 @@ class FileomCom(XFSPHoster): __pattern__ = r'https?://(?:www\.)?fileom\.com/\w{12}' __description__ = """Fileom.com hoster plugin""" + __license__ = "GPLv3" __authors__ = [("Walter Purcaro", "vuolter@gmail.com")] diff --git a/module/plugins/hoster/FilepostCom.py b/module/plugins/hoster/FilepostCom.py index 9c33a79ef..11afb4afb 100644 --- a/module/plugins/hoster/FilepostCom.py +++ b/module/plugins/hoster/FilepostCom.py @@ -17,6 +17,7 @@ class FilepostCom(SimpleHoster): __pattern__ = r'https?://(?:www\.)?(?:filepost\.com/files|fp.io)/([^/]+).*' __description__ = """Filepost.com hoster plugin""" + __license__ = "GPLv3" __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] diff --git a/module/plugins/hoster/FilepupNet.py b/module/plugins/hoster/FilepupNet.py index 12b2f7798..8866fe240 100644 --- a/module/plugins/hoster/FilepupNet.py +++ b/module/plugins/hoster/FilepupNet.py @@ -17,6 +17,7 @@ class FilepupNet(SimpleHoster): __pattern__ = r'http://(?:www\.)?filepup\.net/files/\w+' __description__ = """Filepup.net hoster plugin""" + __license__ = "GPLv3" __authors__ = [("zapp-brannigan", "fuerst.reinje@web.de"), ("Walter Purcaro", "vuolter@gmail.com")] diff --git a/module/plugins/hoster/FilerNet.py b/module/plugins/hoster/FilerNet.py index fedf76072..31bb7082a 100644 --- a/module/plugins/hoster/FilerNet.py +++ b/module/plugins/hoster/FilerNet.py @@ -21,6 +21,7 @@ class FilerNet(SimpleHoster): __pattern__ = r'https?://(?:www\.)?filer\.net/get/(\w+)' __description__ = """Filer.net hoster plugin""" + __license__ = "GPLv3" __authors__ = [("stickell", "l.stickell@yahoo.it")] diff --git a/module/plugins/hoster/FilerioCom.py b/module/plugins/hoster/FilerioCom.py index 074d98aec..350694646 100644 --- a/module/plugins/hoster/FilerioCom.py +++ b/module/plugins/hoster/FilerioCom.py @@ -11,6 +11,7 @@ class FilerioCom(XFSPHoster): __pattern__ = r'http://(?:www\.)?(filerio\.(in|com)|filekeen\.com)/\w{12}' __description__ = """FileRio.in hoster plugin""" + __license__ = "GPLv3" __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] diff --git a/module/plugins/hoster/FilesMailRu.py b/module/plugins/hoster/FilesMailRu.py index d3ec8f908..2889e0565 100644 --- a/module/plugins/hoster/FilesMailRu.py +++ b/module/plugins/hoster/FilesMailRu.py @@ -37,6 +37,7 @@ class FilesMailRu(Hoster): __pattern__ = r'http://(?:www\.)?files\.mail\.ru/.*' __description__ = """Files.mail.ru hoster plugin""" + __license__ = "GPLv3" __authors__ = [("oZiRiz", "ich@oziriz.de")] diff --git a/module/plugins/hoster/FileserveCom.py b/module/plugins/hoster/FileserveCom.py index bc1a52377..ff7d4f608 100644 --- a/module/plugins/hoster/FileserveCom.py +++ b/module/plugins/hoster/FileserveCom.py @@ -38,6 +38,7 @@ class FileserveCom(Hoster): __pattern__ = r'http://(?:www\.)?fileserve\.com/file/(?P[^/]+).*' __description__ = """Fileserve.com hoster plugin""" + __license__ = "GPLv3" __authors__ = [("jeix", "jeix@hasnomail.de"), ("mkaay", "mkaay@mkaay.de"), ("Paul King", None), diff --git a/module/plugins/hoster/FileshareInUa.py b/module/plugins/hoster/FileshareInUa.py index c6ed6a95c..d6ccc9e3e 100644 --- a/module/plugins/hoster/FileshareInUa.py +++ b/module/plugins/hoster/FileshareInUa.py @@ -15,6 +15,7 @@ class FileshareInUa(Hoster): __pattern__ = r'http://(?:www\.)?fileshare.in.ua/[A-Za-z0-9]+' __description__ = """Fileshare.in.ua hoster plugin""" + __license__ = "GPLv3" __authors__ = [("fwannmacher", "felipe@warhammerproject.com")] diff --git a/module/plugins/hoster/FilezyNet.py b/module/plugins/hoster/FilezyNet.py index 2e4146529..1e76a7026 100644 --- a/module/plugins/hoster/FilezyNet.py +++ b/module/plugins/hoster/FilezyNet.py @@ -11,6 +11,7 @@ class FilezyNet(DeadHoster): __pattern__ = r'http://(?:www\.)?filezy\.net/\w{12}' __description__ = """Filezy.net hoster plugin""" + __license__ = "GPLv3" __authors__ = [] diff --git a/module/plugins/hoster/FiredriveCom.py b/module/plugins/hoster/FiredriveCom.py index 95dd55caa..b68868a66 100644 --- a/module/plugins/hoster/FiredriveCom.py +++ b/module/plugins/hoster/FiredriveCom.py @@ -13,6 +13,7 @@ class FiredriveCom(SimpleHoster): __pattern__ = r'https?://(?:www\.)?(firedrive|putlocker)\.com/(mobile/)?(file|embed)/(?P\w+)' __description__ = """Firedrive.com hoster plugin""" + __license__ = "GPLv3" __authors__ = [("Walter Purcaro", "vuolter@gmail.com")] diff --git a/module/plugins/hoster/FlyFilesNet.py b/module/plugins/hoster/FlyFilesNet.py index 126b3a1c6..6aa5ecf28 100644 --- a/module/plugins/hoster/FlyFilesNet.py +++ b/module/plugins/hoster/FlyFilesNet.py @@ -16,6 +16,7 @@ class FlyFilesNet(SimpleHoster): __pattern__ = r'http://(?:www\.)?flyfiles\.net/.*' __description__ = """FlyFiles.net hoster plugin""" + __license__ = "GPLv3" __authors__ = [] SESSION_PATTERN = r'flyfiles\.net/(.*)/.*' diff --git a/module/plugins/hoster/FourSharedCom.py b/module/plugins/hoster/FourSharedCom.py index 960a772ef..596173b88 100644 --- a/module/plugins/hoster/FourSharedCom.py +++ b/module/plugins/hoster/FourSharedCom.py @@ -13,6 +13,7 @@ class FourSharedCom(SimpleHoster): __pattern__ = r'https?://(?:www\.)?4shared(\-china)?\.com/(account/)?(download|get|file|document|photo|video|audio|mp3|office|rar|zip|archive|music)/.+?/.*' __description__ = """4Shared.com hoster plugin""" + __license__ = "GPLv3" __authors__ = [("jeix", "jeix@hasnomail.de"), ("zoidberg", "zoidberg@mujmail.cz")] diff --git a/module/plugins/hoster/FreakshareCom.py b/module/plugins/hoster/FreakshareCom.py index 51c1b5907..808ca1ab0 100644 --- a/module/plugins/hoster/FreakshareCom.py +++ b/module/plugins/hoster/FreakshareCom.py @@ -15,6 +15,7 @@ class FreakshareCom(Hoster): __pattern__ = r'http://(?:www\.)?freakshare\.(net|com)/files/\S*?/' __description__ = """Freakshare.com hoster plugin""" + __license__ = "GPLv3" __authors__ = [("sitacuisses", "sitacuisses@yahoo.de"), ("spoob", "spoob@pyload.org"), ("mkaay", "mkaay@mkaay.de"), diff --git a/module/plugins/hoster/FreeWayMe.py b/module/plugins/hoster/FreeWayMe.py index 7decbc646..17f1a5768 100644 --- a/module/plugins/hoster/FreeWayMe.py +++ b/module/plugins/hoster/FreeWayMe.py @@ -11,6 +11,7 @@ class FreeWayMe(Hoster): __pattern__ = r'https://(?:www\.)?free-way.me/.*' __description__ = """FreeWayMe hoster plugin""" + __license__ = "GPLv3" __authors__ = [("Nicolas Giese", "james@free-way.me")] diff --git a/module/plugins/hoster/FreevideoCz.py b/module/plugins/hoster/FreevideoCz.py index d686928b9..217db19c3 100644 --- a/module/plugins/hoster/FreevideoCz.py +++ b/module/plugins/hoster/FreevideoCz.py @@ -11,6 +11,7 @@ class FreevideoCz(DeadHoster): __pattern__ = r'http://(?:www\.)?freevideo\.cz/vase-videa/.+' __description__ = """Freevideo.cz hoster plugin""" + __license__ = "GPLv3" __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] diff --git a/module/plugins/hoster/FshareVn.py b/module/plugins/hoster/FshareVn.py index a90724bcd..500d4648a 100644 --- a/module/plugins/hoster/FshareVn.py +++ b/module/plugins/hoster/FshareVn.py @@ -32,6 +32,7 @@ class FshareVn(SimpleHoster): __pattern__ = r'http://(?:www\.)?fshare.vn/file/.*' __description__ = """FshareVn hoster plugin""" + __license__ = "GPLv3" __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] diff --git a/module/plugins/hoster/Ftp.py b/module/plugins/hoster/Ftp.py index 02c98c7b6..c880302f4 100644 --- a/module/plugins/hoster/Ftp.py +++ b/module/plugins/hoster/Ftp.py @@ -15,6 +15,7 @@ class Ftp(Hoster): __version__ = "0.42" __pattern__ = r'(ftps?|sftp)://(.*?:.*?@)?.*?/.*' # ftp://user:password@ftp.server.org/path/to/file __description__ = """Download from ftp directory""" + __license__ = "GPLv3" __authors__ = [("jeix", "jeix@hasnomail.com"), ("mkaay", "mkaay@mkaay.de"), ("zoidberg", "zoidberg@mujmail.cz")] diff --git a/module/plugins/hoster/GamefrontCom.py b/module/plugins/hoster/GamefrontCom.py index 9acd12060..da16b0eb5 100644 --- a/module/plugins/hoster/GamefrontCom.py +++ b/module/plugins/hoster/GamefrontCom.py @@ -15,6 +15,7 @@ class GamefrontCom(Hoster): __pattern__ = r'http://(?:www\.)?gamefront.com/files/[A-Za-z0-9]+' __description__ = """Gamefront.com hoster plugin""" + __license__ = "GPLv3" __authors__ = [("fwannmacher", "felipe@warhammerproject.com")] diff --git a/module/plugins/hoster/GigapetaCom.py b/module/plugins/hoster/GigapetaCom.py index ee1240ea7..efec11079 100644 --- a/module/plugins/hoster/GigapetaCom.py +++ b/module/plugins/hoster/GigapetaCom.py @@ -16,6 +16,7 @@ class GigapetaCom(SimpleHoster): __pattern__ = r'http://(?:www\.)?gigapeta\.com/dl/\w+' __description__ = """GigaPeta.com hoster plugin""" + __license__ = "GPLv3" __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] diff --git a/module/plugins/hoster/GooIm.py b/module/plugins/hoster/GooIm.py index c30bd3280..d27b38f1f 100644 --- a/module/plugins/hoster/GooIm.py +++ b/module/plugins/hoster/GooIm.py @@ -16,6 +16,7 @@ class GooIm(SimpleHoster): __pattern__ = r'https?://(?:www\.)?goo\.im/.+' __description__ = """Goo.im hoster plugin""" + __license__ = "GPLv3" __authors__ = [("zapp-brannigan", "fuerst.reinje@web.de")] diff --git a/module/plugins/hoster/HellshareCz.py b/module/plugins/hoster/HellshareCz.py index 28df168c2..0661ea70c 100644 --- a/module/plugins/hoster/HellshareCz.py +++ b/module/plugins/hoster/HellshareCz.py @@ -13,6 +13,7 @@ class HellshareCz(SimpleHoster): __pattern__ = r'(http://(?:www\.)?hellshare\.(?:cz|com|sk|hu|pl)/[^?]*/\d+).*' __description__ = """Hellshare.cz hoster plugin""" + __license__ = "GPLv3" __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] diff --git a/module/plugins/hoster/HellspyCz.py b/module/plugins/hoster/HellspyCz.py index 1d41efefb..4be162dff 100644 --- a/module/plugins/hoster/HellspyCz.py +++ b/module/plugins/hoster/HellspyCz.py @@ -11,6 +11,7 @@ class HellspyCz(DeadHoster): __pattern__ = r'http://(?:www\.)?(?:hellspy\.(?:cz|com|sk|hu|pl)|sciagaj.pl)(/\S+/\d+)/?.*' __description__ = """HellSpy.cz hoster plugin""" + __license__ = "GPLv3" __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] diff --git a/module/plugins/hoster/HotfileCom.py b/module/plugins/hoster/HotfileCom.py index d4f034c07..e152b04c3 100644 --- a/module/plugins/hoster/HotfileCom.py +++ b/module/plugins/hoster/HotfileCom.py @@ -11,6 +11,7 @@ class HotfileCom(DeadHoster): __pattern__ = r'https?://(?:www\.)?hotfile\.com/dl/\d+/\w+' __description__ = """Hotfile.com hoster plugin""" + __license__ = "GPLv3" __authors__ = [("sitacuisses", "sitacuisses@yhoo.de"), ("spoob", "spoob@pyload.org"), ("mkaay", "mkaay@mkaay.de"), diff --git a/module/plugins/hoster/HugefilesNet.py b/module/plugins/hoster/HugefilesNet.py index e287594a8..528114601 100644 --- a/module/plugins/hoster/HugefilesNet.py +++ b/module/plugins/hoster/HugefilesNet.py @@ -14,6 +14,7 @@ class HugefilesNet(XFSPHoster): __pattern__ = r'http://(?:www\.)?hugefiles\.net/\w{12}' __description__ = """Hugefiles.net hoster plugin""" + __license__ = "GPLv3" __authors__ = [("stickell", "l.stickell@yahoo.it")] diff --git a/module/plugins/hoster/HundredEightyUploadCom.py b/module/plugins/hoster/HundredEightyUploadCom.py index 33199fd5c..02cfe219d 100644 --- a/module/plugins/hoster/HundredEightyUploadCom.py +++ b/module/plugins/hoster/HundredEightyUploadCom.py @@ -14,6 +14,7 @@ class HundredEightyUploadCom(XFSPHoster): __pattern__ = r'http://(?:www\.)?180upload\.com/\w{12}' __description__ = """180upload.com hoster plugin""" + __license__ = "GPLv3" __authors__ = [("stickell", "l.stickell@yahoo.it")] diff --git a/module/plugins/hoster/IFileWs.py b/module/plugins/hoster/IFileWs.py index cadbfa0ca..5b8eb7d97 100644 --- a/module/plugins/hoster/IFileWs.py +++ b/module/plugins/hoster/IFileWs.py @@ -11,6 +11,7 @@ class IFileWs(DeadHoster): __pattern__ = r'http://(?:www\.)?ifile\.ws/\w{12}' __description__ = """Ifile.ws hoster plugin""" + __license__ = "GPLv3" __authors__ = [("z00nx", "z00nx0@gmail.com")] diff --git a/module/plugins/hoster/IcyFilesCom.py b/module/plugins/hoster/IcyFilesCom.py index 5b7713199..c4eb8cce2 100644 --- a/module/plugins/hoster/IcyFilesCom.py +++ b/module/plugins/hoster/IcyFilesCom.py @@ -11,6 +11,7 @@ class IcyFilesCom(DeadHoster): __pattern__ = r'http://(?:www\.)?icyfiles\.com/(.*)' __description__ = """IcyFiles.com hoster plugin""" + __license__ = "GPLv3" __authors__ = [("godofdream", "soilfiction@gmail.com")] diff --git a/module/plugins/hoster/IfileIt.py b/module/plugins/hoster/IfileIt.py index 9be7c5933..2c228ee8e 100644 --- a/module/plugins/hoster/IfileIt.py +++ b/module/plugins/hoster/IfileIt.py @@ -15,6 +15,7 @@ class IfileIt(SimpleHoster): __pattern__ = r'^unmatchable$' __description__ = """Ifile.it""" + __license__ = "GPLv3" __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] diff --git a/module/plugins/hoster/IfolderRu.py b/module/plugins/hoster/IfolderRu.py index 3cff7e211..6ed69f95e 100644 --- a/module/plugins/hoster/IfolderRu.py +++ b/module/plugins/hoster/IfolderRu.py @@ -13,6 +13,7 @@ class IfolderRu(SimpleHoster): __pattern__ = r'http://(?:www\.)?(?:ifolder\.ru|rusfolder\.(?:com|net|ru))/(?:files/)?(?P\d+).*' __description__ = """Ifolder.ru hoster plugin""" + __license__ = "GPLv3" __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] diff --git a/module/plugins/hoster/JumbofilesCom.py b/module/plugins/hoster/JumbofilesCom.py index 7986c20fa..842c31f2a 100644 --- a/module/plugins/hoster/JumbofilesCom.py +++ b/module/plugins/hoster/JumbofilesCom.py @@ -13,6 +13,7 @@ class JumbofilesCom(SimpleHoster): __pattern__ = r'http://(?:www\.)?jumbofiles.com/(\w{12}).*' __description__ = """JumboFiles.com hoster plugin""" + __license__ = "GPLv3" __authors__ = [("godofdream", "soilfiction@gmail.com")] diff --git a/module/plugins/hoster/Keep2shareCC.py b/module/plugins/hoster/Keep2shareCC.py index 191d26139..a9d4145d1 100644 --- a/module/plugins/hoster/Keep2shareCC.py +++ b/module/plugins/hoster/Keep2shareCC.py @@ -16,6 +16,7 @@ class Keep2shareCC(SimpleHoster): __pattern__ = r'https?://(?:www\.)?(keep2share|k2s|keep2s)\.cc/file/(?P\w+)' __description__ = """Keep2share.cc hoster plugin""" + __license__ = "GPLv3" __authors__ = [("stickell", "l.stickell@yahoo.it")] diff --git a/module/plugins/hoster/KingfilesNet.py b/module/plugins/hoster/KingfilesNet.py index 82bbd735f..bf2cb2ace 100644 --- a/module/plugins/hoster/KingfilesNet.py +++ b/module/plugins/hoster/KingfilesNet.py @@ -14,6 +14,7 @@ class KingfilesNet(SimpleHoster): __pattern__ = r'http://(?:www\.)?kingfiles\.net/(?P\w{12})' __description__ = """Kingfiles.net hoster plugin""" + __license__ = "GPLv3" __authors__ = [("zapp-brannigan", "fuerst.reinje@web.de"), ("Walter Purcaro", "vuolter@gmail.com")] diff --git a/module/plugins/hoster/LemUploadsCom.py b/module/plugins/hoster/LemUploadsCom.py index 2c77f3106..21a1da0c4 100644 --- a/module/plugins/hoster/LemUploadsCom.py +++ b/module/plugins/hoster/LemUploadsCom.py @@ -11,6 +11,7 @@ class LemUploadsCom(DeadHoster): __pattern__ = r'https?://(?:www\.)?lemuploads\.com/\w{12}' __description__ = """LemUploads.com hoster plugin""" + __license__ = "GPLv3" __authors__ = [("t4skforce", "t4skforce1337[AT]gmail[DOT]com")] diff --git a/module/plugins/hoster/LetitbitNet.py b/module/plugins/hoster/LetitbitNet.py index a9f41b795..cae7fdf67 100644 --- a/module/plugins/hoster/LetitbitNet.py +++ b/module/plugins/hoster/LetitbitNet.py @@ -41,6 +41,7 @@ class LetitbitNet(SimpleHoster): __pattern__ = r'http://(?:www\.)?(letitbit|shareflare).net/download/.*' __description__ = """Letitbit.net hoster plugin""" + __license__ = "GPLv3" __authors__ = [("zoidberg", "zoidberg@mujmail.cz"), ("z00nx", "z00nx0@gmail.com")] diff --git a/module/plugins/hoster/LinksnappyCom.py b/module/plugins/hoster/LinksnappyCom.py index 3685fb238..3372a505d 100644 --- a/module/plugins/hoster/LinksnappyCom.py +++ b/module/plugins/hoster/LinksnappyCom.py @@ -16,6 +16,7 @@ class LinksnappyCom(Hoster): __pattern__ = r'https?://(?:[^/]*\.)?linksnappy\.com' __description__ = """Linksnappy.com hoster plugin""" + __license__ = "GPLv3" __authors__ = [("stickell", "l.stickell@yahoo.it")] diff --git a/module/plugins/hoster/LoadTo.py b/module/plugins/hoster/LoadTo.py index 74b892c9a..dfd18b6ef 100644 --- a/module/plugins/hoster/LoadTo.py +++ b/module/plugins/hoster/LoadTo.py @@ -18,6 +18,7 @@ class LoadTo(SimpleHoster): __pattern__ = r'http://(?:www\.)?load\.to/\w+' __description__ = """ Load.to hoster plugin """ + __license__ = "GPLv3" __authors__ = [("halfman", "Pulpan3@gmail.com"), ("stickell", "l.stickell@yahoo.it")] diff --git a/module/plugins/hoster/LomafileCom.py b/module/plugins/hoster/LomafileCom.py index ebb973cbd..9589318cc 100644 --- a/module/plugins/hoster/LomafileCom.py +++ b/module/plugins/hoster/LomafileCom.py @@ -11,6 +11,7 @@ class LomafileCom(XFSPHoster): __pattern__ = r'http://lomafile\.com/\w{12}' __description__ = """Lomafile.com hoster plugin""" + __license__ = "GPLv3" __authors__ = [("nath_schwarz", "nathan.notwhite@gmail.com"), ("guidobelix", "guidobelix@hotmail.it")] diff --git a/module/plugins/hoster/LuckyShareNet.py b/module/plugins/hoster/LuckyShareNet.py index 8449310b0..2b702986e 100644 --- a/module/plugins/hoster/LuckyShareNet.py +++ b/module/plugins/hoster/LuckyShareNet.py @@ -16,6 +16,7 @@ class LuckyShareNet(SimpleHoster): __pattern__ = r'https?://(?:www\.)?luckyshare.net/(?P\d{10,})' __description__ = """LuckyShare.net hoster plugin""" + __license__ = "GPLv3" __authors__ = [("stickell", "l.stickell@yahoo.it")] diff --git a/module/plugins/hoster/MediafireCom.py b/module/plugins/hoster/MediafireCom.py index 840bbccc3..684f7ff13 100644 --- a/module/plugins/hoster/MediafireCom.py +++ b/module/plugins/hoster/MediafireCom.py @@ -52,6 +52,7 @@ class MediafireCom(SimpleHoster): __pattern__ = r'http://(?:www\.)?mediafire\.com/(file/|(view/?|download.php)?\?)(\w{11}|\w{15})($|/)' __description__ = """Mediafire.com hoster plugin""" + __license__ = "GPLv3" __authors__ = [("zoidberg", "zoidberg@mujmail.cz"), ("stickell", "l.stickell@yahoo.it")] diff --git a/module/plugins/hoster/MegaDebridEu.py b/module/plugins/hoster/MegaDebridEu.py index f46ea6c65..f45a0ed96 100644 --- a/module/plugins/hoster/MegaDebridEu.py +++ b/module/plugins/hoster/MegaDebridEu.py @@ -16,6 +16,7 @@ class MegaDebridEu(Hoster): __pattern__ = r'^https?://(?:w{3}\d+\.mega-debrid.eu|\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})/download/file/[^/]+/.+$' __description__ = """mega-debrid.eu hoster plugin""" + __license__ = "GPLv3" __authors__ = [("D.Ducatel", "dducatel@je-geek.fr")] diff --git a/module/plugins/hoster/MegaFilesSe.py b/module/plugins/hoster/MegaFilesSe.py index e5b10f6e1..5fc0f53e9 100644 --- a/module/plugins/hoster/MegaFilesSe.py +++ b/module/plugins/hoster/MegaFilesSe.py @@ -11,6 +11,7 @@ class MegaFilesSe(DeadHoster): __pattern__ = r'http://(?:www\.)?megafiles\.se/\w{12}' __description__ = """MegaFiles.se hoster plugin""" + __license__ = "GPLv3" __authors__ = [("t4skforce", "t4skforce1337[AT]gmail[DOT]com")] diff --git a/module/plugins/hoster/MegaNz.py b/module/plugins/hoster/MegaNz.py index fb7006627..10eac6236 100644 --- a/module/plugins/hoster/MegaNz.py +++ b/module/plugins/hoster/MegaNz.py @@ -21,6 +21,7 @@ class MegaNz(Hoster): __pattern__ = r'https?://([a-z0-9]+\.)?mega\.co\.nz/#!([a-zA-Z0-9!_\-]+)' __description__ = """Mega.co.nz hoster plugin""" + __license__ = "GPLv3" __authors__ = [("RaNaN", "ranan@pyload.org")] diff --git a/module/plugins/hoster/MegacrypterCom.py b/module/plugins/hoster/MegacrypterCom.py index 56a84da69..855fba9b2 100644 --- a/module/plugins/hoster/MegacrypterCom.py +++ b/module/plugins/hoster/MegacrypterCom.py @@ -14,6 +14,7 @@ class MegacrypterCom(MegaNz): __pattern__ = r'(https?://[a-z0-9]{0,10}\.?megacrypter\.com/[a-zA-Z0-9!_\-]+)' __description__ = """Megacrypter.com decrypter plugin""" + __license__ = "GPLv3" __authors__ = [("GonzaloSR", "gonzalo@gonzalosr.com")] diff --git a/module/plugins/hoster/MegareleaseOrg.py b/module/plugins/hoster/MegareleaseOrg.py index b627a8f10..887a9aac4 100644 --- a/module/plugins/hoster/MegareleaseOrg.py +++ b/module/plugins/hoster/MegareleaseOrg.py @@ -11,6 +11,7 @@ class MegareleaseOrg(DeadHoster): __pattern__ = r'https?://(?:www\.)?megarelease\.org/\w{12}' __description__ = """Megarelease.org hoster plugin""" + __license__ = "GPLv3" __authors__ = [("derek3x", "derek3x@vmail.me"), ("stickell", "l.stickell@yahoo.it")] diff --git a/module/plugins/hoster/MegasharesCom.py b/module/plugins/hoster/MegasharesCom.py index e8fe85d22..e7ac1d250 100644 --- a/module/plugins/hoster/MegasharesCom.py +++ b/module/plugins/hoster/MegasharesCom.py @@ -15,6 +15,7 @@ class MegasharesCom(SimpleHoster): __pattern__ = r'http://(?:www\.)?(d\d{2}\.)?megashares\.com/((index.php)?\?d\d{2}=|dl/)\w+' __description__ = """Megashares.com hoster plugin""" + __license__ = "GPLv3" __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] diff --git a/module/plugins/hoster/MovReelCom.py b/module/plugins/hoster/MovReelCom.py index 9fd28385c..3a795ba2e 100644 --- a/module/plugins/hoster/MovReelCom.py +++ b/module/plugins/hoster/MovReelCom.py @@ -11,6 +11,7 @@ class MovReelCom(XFSPHoster): __pattern__ = r'http://(?:www\.)?movreel\.com/\w{12}' __description__ = """MovReel.com hoster plugin""" + __license__ = "GPLv3" __authors__ = [("JorisV83", "jorisv83-pyload@yahoo.com")] diff --git a/module/plugins/hoster/MultishareCz.py b/module/plugins/hoster/MultishareCz.py index 2e59925b6..42ad115ac 100644 --- a/module/plugins/hoster/MultishareCz.py +++ b/module/plugins/hoster/MultishareCz.py @@ -15,6 +15,7 @@ class MultishareCz(SimpleHoster): __pattern__ = r'http://(?:www\.)?multishare.cz/stahnout/(?P\d+).*' __description__ = """MultiShare.cz hoster plugin""" + __license__ = "GPLv3" __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] diff --git a/module/plugins/hoster/MyfastfileCom.py b/module/plugins/hoster/MyfastfileCom.py index dee99d490..02b91f599 100644 --- a/module/plugins/hoster/MyfastfileCom.py +++ b/module/plugins/hoster/MyfastfileCom.py @@ -12,6 +12,7 @@ class MyfastfileCom(Hoster): __version__ = "0.04" __pattern__ = r'http://(?:www\.)?\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/dl/' __description__ = """Myfastfile.com hoster plugin""" + __license__ = "GPLv3" __authors__ = [("stickell", "l.stickell@yahoo.it")] diff --git a/module/plugins/hoster/MyvideoDe.py b/module/plugins/hoster/MyvideoDe.py index 261ffdd8a..ec06806a5 100644 --- a/module/plugins/hoster/MyvideoDe.py +++ b/module/plugins/hoster/MyvideoDe.py @@ -14,6 +14,7 @@ class MyvideoDe(Hoster): __pattern__ = r'http://(?:www\.)?myvideo.de/watch/' __description__ = """Myvideo.de hoster plugin""" + __license__ = "GPLv3" __authors__ = [("spoob", "spoob@pyload.org")] diff --git a/module/plugins/hoster/NarodRu.py b/module/plugins/hoster/NarodRu.py index 882d89d56..4de4d5946 100644 --- a/module/plugins/hoster/NarodRu.py +++ b/module/plugins/hoster/NarodRu.py @@ -15,6 +15,7 @@ class NarodRu(SimpleHoster): __pattern__ = r'http://(?:www\.)?narod(\.yandex)?\.ru/(disk|start/[0-9]+\.\w+-narod\.yandex\.ru)/(?P\d+)/.+' __description__ = """Narod.ru hoster plugin""" + __license__ = "GPLv3" __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] diff --git a/module/plugins/hoster/NetloadIn.py b/module/plugins/hoster/NetloadIn.py index ec68c08f7..fe00e1565 100644 --- a/module/plugins/hoster/NetloadIn.py +++ b/module/plugins/hoster/NetloadIn.py @@ -57,6 +57,7 @@ class NetloadIn(Hoster): __pattern__ = r'https?://(?:[^/]*\.)?netload\.in/(?:datei(.*?)(?:\.htm|/)|index.php?id=10&file_id=)' __description__ = """Netload.in hoster plugin""" + __license__ = "GPLv3" __authors__ = [("spoob", "spoob@pyload.org"), ("RaNaN", "ranan@pyload.org"), ("Gregy", "gregy@gregy.cz")] diff --git a/module/plugins/hoster/NosuploadCom.py b/module/plugins/hoster/NosuploadCom.py index e756c63f6..d94593227 100644 --- a/module/plugins/hoster/NosuploadCom.py +++ b/module/plugins/hoster/NosuploadCom.py @@ -13,6 +13,7 @@ class NosuploadCom(XFSPHoster): __pattern__ = r'http://(?:www\.)?nosupload\.com/\?d=\w{12}' __description__ = """Nosupload.com hoster plugin""" + __license__ = "GPLv3" __authors__ = [("igel", "igelkun@myopera.com")] diff --git a/module/plugins/hoster/NovafileCom.py b/module/plugins/hoster/NovafileCom.py index 958c10411..4963559c8 100644 --- a/module/plugins/hoster/NovafileCom.py +++ b/module/plugins/hoster/NovafileCom.py @@ -15,6 +15,7 @@ class NovafileCom(XFSPHoster): __pattern__ = r'http://(?:www\.)?novafile\.com/\w{12}' __description__ = """Novafile.com hoster plugin""" + __license__ = "GPLv3" __authors__ = [("zoidberg", "zoidberg@mujmail.cz"), ("stickell", "l.stickell@yahoo.it")] diff --git a/module/plugins/hoster/NowDownloadEu.py b/module/plugins/hoster/NowDownloadEu.py index 5e97add30..f3da3033f 100644 --- a/module/plugins/hoster/NowDownloadEu.py +++ b/module/plugins/hoster/NowDownloadEu.py @@ -14,6 +14,7 @@ class NowDownloadEu(SimpleHoster): __pattern__ = r'http://(?:www\.)?nowdownload\.(ch|co|eu|sx)/(dl/|download\.php\?id=)(?P\w+)' __description__ = """NowDownload.ch hoster plugin""" + __license__ = "GPLv3" __authors__ = [("godofdream", "soilfiction@gmail.com"), ("Walter Purcaro", "vuolter@gmail.com")] diff --git a/module/plugins/hoster/OboomCom.py b/module/plugins/hoster/OboomCom.py index 5d3983c72..cad8c2ec9 100644 --- a/module/plugins/hoster/OboomCom.py +++ b/module/plugins/hoster/OboomCom.py @@ -18,6 +18,7 @@ class OboomCom(Hoster): __pattern__ = r'https?://(?:www\.)?oboom\.com/(#(id=|/)?)?(?P\w{8})' __description__ = """oboom.com hoster plugin""" + __license__ = "GPLv3" __authors__ = [("stanley", "stanley.foerster@gmail.com")] diff --git a/module/plugins/hoster/OneFichierCom.py b/module/plugins/hoster/OneFichierCom.py index 488b5b479..81eff0a27 100644 --- a/module/plugins/hoster/OneFichierCom.py +++ b/module/plugins/hoster/OneFichierCom.py @@ -13,6 +13,7 @@ class OneFichierCom(SimpleHoster): __pattern__ = r'https?://(?P\w+)\.(?P(1fichier|d(es)?fichiers|pjointe)\.(com|fr|net|org)|(cjoint|mesfichiers|piecejointe|oi)\.(org|net)|tenvoi\.(com|org|net)|dl4free\.com|alterupload\.com|megadl\.fr)' __description__ = """1fichier.com hoster plugin""" + __license__ = "GPLv3" __authors__ = [("fragonib", "fragonib[AT]yahoo[DOT]es"), ("the-razer", "daniel_ AT gmx DOT net"), ("zoidberg", "zoidberg@mujmail.cz"), diff --git a/module/plugins/hoster/OverLoadMe.py b/module/plugins/hoster/OverLoadMe.py index 6bb481fbc..f1f5d55e4 100644 --- a/module/plugins/hoster/OverLoadMe.py +++ b/module/plugins/hoster/OverLoadMe.py @@ -18,6 +18,7 @@ class OverLoadMe(Hoster): __pattern__ = r'https?://.*overload\.me.*' __description__ = """Over-Load.me hoster plugin""" + __license__ = "GPLv3" __authors__ = [("marley", "marley@over-load.me")] diff --git a/module/plugins/hoster/PandaPlaNet.py b/module/plugins/hoster/PandaPlaNet.py index 9473726fa..9b3935204 100644 --- a/module/plugins/hoster/PandaPlaNet.py +++ b/module/plugins/hoster/PandaPlaNet.py @@ -11,6 +11,7 @@ class PandaPlaNet(DeadHoster): __pattern__ = r'http://(?:www\.)?pandapla\.net/\w{12}' __description__ = """Pandapla.net hoster plugin""" + __license__ = "GPLv3" __authors__ = [("t4skforce", "t4skforce1337[AT]gmail[DOT]com")] diff --git a/module/plugins/hoster/PornhostCom.py b/module/plugins/hoster/PornhostCom.py index 2c9683620..94bbb426b 100644 --- a/module/plugins/hoster/PornhostCom.py +++ b/module/plugins/hoster/PornhostCom.py @@ -13,6 +13,7 @@ class PornhostCom(Hoster): __pattern__ = r'http://(?:www\.)?pornhost\.com/([0-9]+/[0-9]+\.html|[0-9]+)' __description__ = """Pornhost.com hoster plugin""" + __license__ = "GPLv3" __authors__ = [("jeix", "jeix@hasnomail.de")] diff --git a/module/plugins/hoster/PornhubCom.py b/module/plugins/hoster/PornhubCom.py index e21e32c06..12d47e3b7 100644 --- a/module/plugins/hoster/PornhubCom.py +++ b/module/plugins/hoster/PornhubCom.py @@ -13,6 +13,7 @@ class PornhubCom(Hoster): __pattern__ = r'http://(?:www\.)?pornhub\.com/view_video\.php\?viewkey=[\w\d]+' __description__ = """Pornhub.com hoster plugin""" + __license__ = "GPLv3" __authors__ = [("jeix", "jeix@hasnomail.de")] diff --git a/module/plugins/hoster/PotloadCom.py b/module/plugins/hoster/PotloadCom.py index ce5f832a1..d9314dffb 100644 --- a/module/plugins/hoster/PotloadCom.py +++ b/module/plugins/hoster/PotloadCom.py @@ -11,6 +11,7 @@ class PotloadCom(DeadHoster): __pattern__ = r'http://(?:www\.)?potload\.com/\w{12}' __description__ = """Potload.com hoster plugin""" + __license__ = "GPLv3" __authors__ = [("stickell", "l.stickell@yahoo.it")] diff --git a/module/plugins/hoster/PremiumTo.py b/module/plugins/hoster/PremiumTo.py index fd75e51e3..e78fdfd4f 100644 --- a/module/plugins/hoster/PremiumTo.py +++ b/module/plugins/hoster/PremiumTo.py @@ -16,6 +16,7 @@ class PremiumTo(Hoster): __pattern__ = r'https?://(?:www\.)?premium.to/.*' __description__ = """Premium.to hoster plugin""" + __license__ = "GPLv3" __authors__ = [("RaNaN", "RaNaN@pyload.org"), ("zoidberg", "zoidberg@mujmail.cz"), ("stickell", "l.stickell@yahoo.it")] diff --git a/module/plugins/hoster/PremiumizeMe.py b/module/plugins/hoster/PremiumizeMe.py index af4a09a06..07872326c 100644 --- a/module/plugins/hoster/PremiumizeMe.py +++ b/module/plugins/hoster/PremiumizeMe.py @@ -12,6 +12,7 @@ class PremiumizeMe(Hoster): __pattern__ = None #: Since we want to allow the user to specify the list of hoster to use we let MultiHoster.coreReady __description__ = """Premiumize.me hoster plugin""" + __license__ = "GPLv3" __authors__ = [("Florian Franzen", "FlorianFranzen@gmail.com")] diff --git a/module/plugins/hoster/PromptfileCom.py b/module/plugins/hoster/PromptfileCom.py index abce7f189..b6f35e8ba 100644 --- a/module/plugins/hoster/PromptfileCom.py +++ b/module/plugins/hoster/PromptfileCom.py @@ -13,6 +13,7 @@ class PromptfileCom(SimpleHoster): __pattern__ = r'https?://(?:www\.)?promptfile\.com/' __description__ = """Promptfile.com hoster plugin""" + __license__ = "GPLv3" __authors__ = [("igel", "igelkun@myopera.com")] diff --git a/module/plugins/hoster/QuickshareCz.py b/module/plugins/hoster/QuickshareCz.py index d33c9392b..de8ae04af 100644 --- a/module/plugins/hoster/QuickshareCz.py +++ b/module/plugins/hoster/QuickshareCz.py @@ -15,6 +15,7 @@ class QuickshareCz(SimpleHoster): __pattern__ = r'http://(?:[^/]*\.)?quickshare.cz/stahnout-soubor/.*' __description__ = """Quickshare.cz hoster plugin""" + __license__ = "GPLv3" __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] diff --git a/module/plugins/hoster/RPNetBiz.py b/module/plugins/hoster/RPNetBiz.py index 012c9a5a1..3132001ed 100644 --- a/module/plugins/hoster/RPNetBiz.py +++ b/module/plugins/hoster/RPNetBiz.py @@ -12,6 +12,7 @@ class RPNetBiz(Hoster): __version__ = "0.1" __description__ = """RPNet.biz hoster plugin""" + __license__ = "GPLv3" __pattern__ = r'https?://.*rpnet\.biz' __authors__ = [("Dman", "dmanugm@gmail.com")] diff --git a/module/plugins/hoster/RapidgatorNet.py b/module/plugins/hoster/RapidgatorNet.py index 598218cae..0223af3c1 100644 --- a/module/plugins/hoster/RapidgatorNet.py +++ b/module/plugins/hoster/RapidgatorNet.py @@ -19,6 +19,7 @@ class RapidgatorNet(SimpleHoster): __pattern__ = r'http://(?:www\.)?(rapidgator\.net|rg\.to)/file/\w+' __description__ = """Rapidgator.net hoster plugin""" + __license__ = "GPLv3" __authors__ = [("zoidberg", "zoidberg@mujmail.cz"), ("chrox", None), ("stickell", "l.stickell@yahoo.it"), diff --git a/module/plugins/hoster/RapidshareCom.py b/module/plugins/hoster/RapidshareCom.py index 7ece1ffee..22887e7cc 100644 --- a/module/plugins/hoster/RapidshareCom.py +++ b/module/plugins/hoster/RapidshareCom.py @@ -52,6 +52,7 @@ class RapidshareCom(Hoster): "Preferred Server", "None")] __description__ = """Rapidshare.com hoster plugin""" + __license__ = "GPLv3" __authors__ = [("spoob", "spoob@pyload.org"), ("RaNaN", "ranan@pyload.org"), ("mkaay", "mkaay@mkaay.de")] diff --git a/module/plugins/hoster/RarefileNet.py b/module/plugins/hoster/RarefileNet.py index fab0f2aaf..03c322c2b 100644 --- a/module/plugins/hoster/RarefileNet.py +++ b/module/plugins/hoster/RarefileNet.py @@ -14,6 +14,7 @@ class RarefileNet(XFSPHoster): __pattern__ = r'http://(?:www\.)?rarefile\.net/\w{12}' __description__ = """Rarefile.net hoster plugin""" + __license__ = "GPLv3" __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] diff --git a/module/plugins/hoster/RealdebridCom.py b/module/plugins/hoster/RealdebridCom.py index 3b82d2284..fe6db98cb 100644 --- a/module/plugins/hoster/RealdebridCom.py +++ b/module/plugins/hoster/RealdebridCom.py @@ -19,6 +19,7 @@ class RealdebridCom(Hoster): __pattern__ = r'https?://(?:[^/]*\.)?real-debrid\..*' __description__ = """Real-Debrid.com hoster plugin""" + __license__ = "GPLv3" __authors__ = [("Devirex Hazzard", "naibaf_11@yahoo.de")] diff --git a/module/plugins/hoster/RedtubeCom.py b/module/plugins/hoster/RedtubeCom.py index 1e1df902d..f8ac81693 100644 --- a/module/plugins/hoster/RedtubeCom.py +++ b/module/plugins/hoster/RedtubeCom.py @@ -14,6 +14,7 @@ class RedtubeCom(Hoster): __pattern__ = r'http://(?:www\.)?redtube\.com/\d+' __description__ = """Redtube.com hoster plugin""" + __license__ = "GPLv3" __authors__ = [("jeix", "jeix@hasnomail.de")] diff --git a/module/plugins/hoster/RehostTo.py b/module/plugins/hoster/RehostTo.py index e1ee3aeb9..b4f8f968b 100644 --- a/module/plugins/hoster/RehostTo.py +++ b/module/plugins/hoster/RehostTo.py @@ -13,6 +13,7 @@ class RehostTo(Hoster): __pattern__ = r'https?://.*rehost.to\..*' __description__ = """Rehost.com hoster plugin""" + __license__ = "GPLv3" __authors__ = [("RaNaN", "RaNaN@pyload.org")] diff --git a/module/plugins/hoster/RemixshareCom.py b/module/plugins/hoster/RemixshareCom.py index 4507e1dbe..dc50fcbfd 100644 --- a/module/plugins/hoster/RemixshareCom.py +++ b/module/plugins/hoster/RemixshareCom.py @@ -21,6 +21,7 @@ class RemixshareCom(SimpleHoster): __pattern__ = r'https?://remixshare\.com/(download|dl)/\w+' __description__ = """Remixshare.com hoster plugin""" + __license__ = "GPLv3" __authors__ = [("zapp-brannigan", "fuerst.reinje@web.de"), ("Walter Purcaro", "vuolter@gmail.com")] diff --git a/module/plugins/hoster/RgHostNet.py b/module/plugins/hoster/RgHostNet.py index 70696dd72..2018106cb 100644 --- a/module/plugins/hoster/RgHostNet.py +++ b/module/plugins/hoster/RgHostNet.py @@ -13,6 +13,7 @@ class RgHostNet(SimpleHoster): __pattern__ = r'http://(?:www\.)?rghost\.net/\d+(?:r=\d+)?' __description__ = """RgHost.net hoster plugin""" + __license__ = "GPLv3" __authors__ = [("z00nx", "z00nx0@gmail.com")] diff --git a/module/plugins/hoster/RyushareCom.py b/module/plugins/hoster/RyushareCom.py index 92a7a22c2..833577c1a 100644 --- a/module/plugins/hoster/RyushareCom.py +++ b/module/plugins/hoster/RyushareCom.py @@ -17,6 +17,7 @@ class RyushareCom(XFSPHoster): __pattern__ = r'http://(?:www\.)?ryushare\.com/\w+' __description__ = """Ryushare.com hoster plugin""" + __license__ = "GPLv3" __authors__ = [("zoidberg", "zoidberg@mujmail.cz"), ("stickell", "l.stickell@yahoo.it"), ("quareevo", "quareevo@arcor.de")] diff --git a/module/plugins/hoster/SecureUploadEu.py b/module/plugins/hoster/SecureUploadEu.py index 59dc4d537..c67e3565f 100644 --- a/module/plugins/hoster/SecureUploadEu.py +++ b/module/plugins/hoster/SecureUploadEu.py @@ -11,6 +11,7 @@ class SecureUploadEu(XFSPHoster): __pattern__ = r'https?://(?:www\.)?secureupload\.eu/\w{12}' __description__ = """SecureUpload.eu hoster plugin""" + __license__ = "GPLv3" __authors__ = [("z00nx", "z00nx0@gmail.com")] diff --git a/module/plugins/hoster/SendmywayCom.py b/module/plugins/hoster/SendmywayCom.py index efb6c34c4..29c763ba4 100644 --- a/module/plugins/hoster/SendmywayCom.py +++ b/module/plugins/hoster/SendmywayCom.py @@ -11,6 +11,7 @@ class SendmywayCom(XFSPHoster): __pattern__ = r'http://(?:www\.)?sendmyway\.com/\w{12}' __description__ = """SendMyWay hoster plugin""" + __license__ = "GPLv3" __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] diff --git a/module/plugins/hoster/SendspaceCom.py b/module/plugins/hoster/SendspaceCom.py index 01399ca2e..b9907794d 100644 --- a/module/plugins/hoster/SendspaceCom.py +++ b/module/plugins/hoster/SendspaceCom.py @@ -13,6 +13,7 @@ class SendspaceCom(SimpleHoster): __pattern__ = r'http://(?:www\.)?sendspace.com/file/.*' __description__ = """Sendspace.com hoster plugin""" + __license__ = "GPLv3" __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] diff --git a/module/plugins/hoster/Share4webCom.py b/module/plugins/hoster/Share4webCom.py index 3b839a30f..14f566b27 100644 --- a/module/plugins/hoster/Share4webCom.py +++ b/module/plugins/hoster/Share4webCom.py @@ -12,6 +12,7 @@ class Share4webCom(UnibytesCom): __pattern__ = r'http://(?:www\.)?share4web\.com/get/\w+' __description__ = """Share4web.com hoster plugin""" + __license__ = "GPLv3" __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] diff --git a/module/plugins/hoster/Share76Com.py b/module/plugins/hoster/Share76Com.py index e78218150..34b40ae0d 100644 --- a/module/plugins/hoster/Share76Com.py +++ b/module/plugins/hoster/Share76Com.py @@ -11,6 +11,7 @@ class Share76Com(DeadHoster): __pattern__ = r'http://(?:www\.)?share76.com/\w{12}' __description__ = """Share76.com hoster plugin""" + __license__ = "GPLv3" __authors__ = [] diff --git a/module/plugins/hoster/ShareFilesCo.py b/module/plugins/hoster/ShareFilesCo.py index 210395cc5..e9d0e49ac 100644 --- a/module/plugins/hoster/ShareFilesCo.py +++ b/module/plugins/hoster/ShareFilesCo.py @@ -11,6 +11,7 @@ class ShareFilesCo(DeadHoster): __pattern__ = r'http://(?:www\.)?sharefiles\.co/\w{12}' __description__ = """Sharefiles.co hoster plugin""" + __license__ = "GPLv3" __authors__ = [("stickell", "l.stickell@yahoo.it")] diff --git a/module/plugins/hoster/ShareRapidCom.py b/module/plugins/hoster/ShareRapidCom.py index 5d539baaf..9b80a9914 100644 --- a/module/plugins/hoster/ShareRapidCom.py +++ b/module/plugins/hoster/ShareRapidCom.py @@ -27,6 +27,7 @@ class ShareRapidCom(SimpleHoster): __pattern__ = r'http://(?:www\.)?(share|mega)rapid\.cz/soubor/\d+/.+' __description__ = """MegaRapid.cz hoster plugin""" + __license__ = "GPLv3" __authors__ = [("MikyWoW", "mikywow@seznam.cz"), ("zoidberg", "zoidberg@mujmail.cz"), ("stickell", "l.stickell@yahoo.it"), diff --git a/module/plugins/hoster/SharebeesCom.py b/module/plugins/hoster/SharebeesCom.py index 8112a11b5..675bd2286 100644 --- a/module/plugins/hoster/SharebeesCom.py +++ b/module/plugins/hoster/SharebeesCom.py @@ -11,6 +11,7 @@ class SharebeesCom(DeadHoster): __pattern__ = r'http://(?:www\.)?sharebees.com/\w{12}' __description__ = """ShareBees hoster plugin""" + __license__ = "GPLv3" __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] diff --git a/module/plugins/hoster/ShareonlineBiz.py b/module/plugins/hoster/ShareonlineBiz.py index fa5cd3ffe..f3290af9e 100644 --- a/module/plugins/hoster/ShareonlineBiz.py +++ b/module/plugins/hoster/ShareonlineBiz.py @@ -44,6 +44,7 @@ class ShareonlineBiz(Hoster): __pattern__ = r'https?://(?:www\.)?(share-online\.biz|egoshare\.com)/(download.php\?id=|dl/)(?P\w+)' __description__ = """Shareonline.biz hoster plugin""" + __license__ = "GPLv3" __authors__ = [("spoob", "spoob@pyload.org"), ("mkaay", "mkaay@mkaay.de"), ("zoidberg", "zoidberg@mujmail.cz"), diff --git a/module/plugins/hoster/ShareplaceCom.py b/module/plugins/hoster/ShareplaceCom.py index 7e6aee0df..ef15f586a 100644 --- a/module/plugins/hoster/ShareplaceCom.py +++ b/module/plugins/hoster/ShareplaceCom.py @@ -15,6 +15,7 @@ class ShareplaceCom(Hoster): __pattern__ = r'(http://)?(?:www\.)?shareplace\.(com|org)/\?[a-zA-Z0-9]+' __description__ = """Shareplace.com hoster plugin""" + __license__ = "GPLv3" __authors__ = [("ACCakut", None)] diff --git a/module/plugins/hoster/ShragleCom.py b/module/plugins/hoster/ShragleCom.py index 24470eef6..0a78cfcd0 100644 --- a/module/plugins/hoster/ShragleCom.py +++ b/module/plugins/hoster/ShragleCom.py @@ -11,6 +11,7 @@ class ShragleCom(DeadHoster): __pattern__ = r'http://(?:www\.)?(cloudnator|shragle).com/files/(?P.*?)/' __description__ = """Cloudnator.com (Shragle.com) hoster plugin""" + __license__ = "GPLv3" __authors__ = [("RaNaN", "RaNaN@pyload.org"), ("zoidberg", "zoidberg@mujmail.cz")] diff --git a/module/plugins/hoster/SimplyPremiumCom.py b/module/plugins/hoster/SimplyPremiumCom.py index 044a2c9f7..e78a1f469 100644 --- a/module/plugins/hoster/SimplyPremiumCom.py +++ b/module/plugins/hoster/SimplyPremiumCom.py @@ -16,6 +16,7 @@ class SimplyPremiumCom(Hoster): __pattern__ = r'https?://.*(simply-premium)\.com' __description__ = """Simply-Premium.com hoster plugin""" + __license__ = "GPLv3" __authors__ = [("EvolutionClip", "evolutionclip@live.de")] diff --git a/module/plugins/hoster/SimplydebridCom.py b/module/plugins/hoster/SimplydebridCom.py index 818eea392..7476cf45e 100644 --- a/module/plugins/hoster/SimplydebridCom.py +++ b/module/plugins/hoster/SimplydebridCom.py @@ -13,6 +13,7 @@ class SimplydebridCom(Hoster): __pattern__ = r'http://(?:www\.)?\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/sd.php/*' __description__ = """Simply-debrid.com hoster plugin""" + __license__ = "GPLv3" __authors__ = [("Kagenoshin", "kagenoshin@gmx.ch")] diff --git a/module/plugins/hoster/SockshareCom.py b/module/plugins/hoster/SockshareCom.py index cc17ae366..930d63ad8 100644 --- a/module/plugins/hoster/SockshareCom.py +++ b/module/plugins/hoster/SockshareCom.py @@ -16,6 +16,7 @@ class SockshareCom(SimpleHoster): __pattern__ = r'http://(?:www\.)?sockshare\.com/(mobile/)?(file|embed)/(?P\w+)' __description__ = """Sockshare.com hoster plugin""" + __license__ = "GPLv3" __authors__ = [("jeix", "jeix@hasnomail.de"), ("stickell", "l.stickell@yahoo.it"), ("Walter Purcaro", "vuolter@gmail.com")] diff --git a/module/plugins/hoster/SoundcloudCom.py b/module/plugins/hoster/SoundcloudCom.py index d88ade399..1fa1ec6ea 100644 --- a/module/plugins/hoster/SoundcloudCom.py +++ b/module/plugins/hoster/SoundcloudCom.py @@ -14,6 +14,7 @@ class SoundcloudCom(Hoster): __pattern__ = r'https?://(?:www\.)?soundcloud\.com/(?P.*?)/(?P.*)' __description__ = """SoundCloud.com hoster plugin""" + __license__ = "GPLv3" __authors__ = [("Peekayy", "peekayy.dev@gmail.com")] diff --git a/module/plugins/hoster/SpeedLoadOrg.py b/module/plugins/hoster/SpeedLoadOrg.py index 7cc0039de..0706b7fe4 100644 --- a/module/plugins/hoster/SpeedLoadOrg.py +++ b/module/plugins/hoster/SpeedLoadOrg.py @@ -11,6 +11,7 @@ class SpeedLoadOrg(DeadHoster): __pattern__ = r'http://(?:www\.)?speedload\.org/(?P\w+)' __description__ = """Speedload.org hoster plugin""" + __license__ = "GPLv3" __authors__ = [("stickell", "l.stickell@yahoo.it")] diff --git a/module/plugins/hoster/SpeedfileCz.py b/module/plugins/hoster/SpeedfileCz.py index 2af28d935..5d50b9bff 100644 --- a/module/plugins/hoster/SpeedfileCz.py +++ b/module/plugins/hoster/SpeedfileCz.py @@ -11,6 +11,7 @@ class SpeedfileCz(DeadHoster): __pattern__ = r'http://(?:www\.)?speedfile.cz/.*' __description__ = """Speedfile.cz hoster plugin""" + __license__ = "GPLv3" __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] diff --git a/module/plugins/hoster/SpeedyshareCom.py b/module/plugins/hoster/SpeedyshareCom.py index f07170d71..e2968835d 100644 --- a/module/plugins/hoster/SpeedyshareCom.py +++ b/module/plugins/hoster/SpeedyshareCom.py @@ -18,6 +18,7 @@ class SpeedyshareCom(SimpleHoster): __pattern__ = r"https?://(?:www\.)?(speedyshare\.com|speedy\.sh)/\w+" __description__ = """Speedyshare.com hoster plugin""" + __license__ = "GPLv3" __authors__ = [("zapp-brannigan", "fuerst.reinje@web.de")] diff --git a/module/plugins/hoster/StreamCz.py b/module/plugins/hoster/StreamCz.py index dd5108e1c..de48a5d13 100644 --- a/module/plugins/hoster/StreamCz.py +++ b/module/plugins/hoster/StreamCz.py @@ -28,6 +28,7 @@ class StreamCz(Hoster): __pattern__ = r'https?://(?:www\.)?stream\.cz/[^/]+/\d+.*' __description__ = """Stream.cz hoster plugin""" + __license__ = "GPLv3" __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] diff --git a/module/plugins/hoster/StreamcloudEu.py b/module/plugins/hoster/StreamcloudEu.py index 6adace633..1df5ca13c 100644 --- a/module/plugins/hoster/StreamcloudEu.py +++ b/module/plugins/hoster/StreamcloudEu.py @@ -16,6 +16,7 @@ class StreamcloudEu(XFSPHoster): __pattern__ = r'http://(?:www\.)?streamcloud\.eu/\w{12}' __description__ = """Streamcloud.eu hoster plugin""" + __license__ = "GPLv3" __authors__ = [("seoester", "seoester@googlemail.com")] diff --git a/module/plugins/hoster/TurbobitNet.py b/module/plugins/hoster/TurbobitNet.py index 99d8143b8..b56697da8 100644 --- a/module/plugins/hoster/TurbobitNet.py +++ b/module/plugins/hoster/TurbobitNet.py @@ -22,6 +22,7 @@ class TurbobitNet(SimpleHoster): __pattern__ = r'http://(?:www\.)?turbobit\.net/(?:download/free/)?(?P\w+)' __description__ = """ Turbobit.net hoster plugin """ + __license__ = "GPLv3" __authors__ = [("zoidberg", "zoidberg@mujmail.cz"), ("prOq", None)] diff --git a/module/plugins/hoster/TurbouploadCom.py b/module/plugins/hoster/TurbouploadCom.py index 6f9ec4517..f6a6dee41 100644 --- a/module/plugins/hoster/TurbouploadCom.py +++ b/module/plugins/hoster/TurbouploadCom.py @@ -11,6 +11,7 @@ class TurbouploadCom(DeadHoster): __pattern__ = r'http://(?:www\.)?turboupload.com/(\w+).*' __description__ = """Turboupload.com hoster plugin""" + __license__ = "GPLv3" __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] diff --git a/module/plugins/hoster/TusfilesNet.py b/module/plugins/hoster/TusfilesNet.py index b98dc885b..f39e59d88 100644 --- a/module/plugins/hoster/TusfilesNet.py +++ b/module/plugins/hoster/TusfilesNet.py @@ -11,6 +11,7 @@ class TusfilesNet(XFSPHoster): __pattern__ = r'https?://(?:www\.)?tusfiles\.net/\w{12}' __description__ = """Tusfiles.net hoster plugin""" + __license__ = "GPLv3" __authors__ = [("Walter Purcaro", "vuolter@gmail.com"), ("guidobelix", "guidobelix@hotmail.it")] diff --git a/module/plugins/hoster/TwoSharedCom.py b/module/plugins/hoster/TwoSharedCom.py index d9cf4479b..4bef13a67 100644 --- a/module/plugins/hoster/TwoSharedCom.py +++ b/module/plugins/hoster/TwoSharedCom.py @@ -13,6 +13,7 @@ class TwoSharedCom(SimpleHoster): __pattern__ = r'http://(?:www\.)?2shared.com/(account/)?(download|get|file|document|photo|video|audio)/.*' __description__ = """2Shared.com hoster plugin""" + __license__ = "GPLv3" __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] diff --git a/module/plugins/hoster/UlozTo.py b/module/plugins/hoster/UlozTo.py index 3ebde0651..cf92560bc 100644 --- a/module/plugins/hoster/UlozTo.py +++ b/module/plugins/hoster/UlozTo.py @@ -20,6 +20,7 @@ class UlozTo(SimpleHoster): __pattern__ = r'http://(?:www\.)?(uloz\.to|ulozto\.(cz|sk|net)|bagruj.cz|zachowajto.pl)/(?:live/)?(?P\w+/[^/?]*)' __description__ = """Uloz.to hoster plugin""" + __license__ = "GPLv3" __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] diff --git a/module/plugins/hoster/UloziskoSk.py b/module/plugins/hoster/UloziskoSk.py index 936a38d3d..1ce7c8879 100644 --- a/module/plugins/hoster/UloziskoSk.py +++ b/module/plugins/hoster/UloziskoSk.py @@ -13,6 +13,7 @@ class UloziskoSk(SimpleHoster): __pattern__ = r'http://(?:www\.)?ulozisko.sk/.*' __description__ = """Ulozisko.sk hoster plugin""" + __license__ = "GPLv3" __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] diff --git a/module/plugins/hoster/UnibytesCom.py b/module/plugins/hoster/UnibytesCom.py index e00b91d33..ec6df395c 100644 --- a/module/plugins/hoster/UnibytesCom.py +++ b/module/plugins/hoster/UnibytesCom.py @@ -15,6 +15,7 @@ class UnibytesCom(SimpleHoster): __pattern__ = r'http://(?:www\.)?unibytes\.com/[a-zA-Z0-9-._ ]{11}B' __description__ = """UniBytes.com hoster plugin""" + __license__ = "GPLv3" __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] diff --git a/module/plugins/hoster/UnrestrictLi.py b/module/plugins/hoster/UnrestrictLi.py index 56805c8c2..0cd8e315f 100644 --- a/module/plugins/hoster/UnrestrictLi.py +++ b/module/plugins/hoster/UnrestrictLi.py @@ -26,6 +26,7 @@ class UnrestrictLi(Hoster): __pattern__ = r'https?://(?:[^/]*\.)?(unrestrict|unr)\.li' __description__ = """Unrestrict.li hoster plugin""" + __license__ = "GPLv3" __authors__ = [("stickell", "l.stickell@yahoo.it")] diff --git a/module/plugins/hoster/UploadStationCom.py b/module/plugins/hoster/UploadStationCom.py index 820f9764a..7b3f4d55e 100644 --- a/module/plugins/hoster/UploadStationCom.py +++ b/module/plugins/hoster/UploadStationCom.py @@ -11,6 +11,7 @@ class UploadStationCom(DeadHoster): __pattern__ = r'http://(?:www\.)?uploadstation\.com/file/(?P[A-Za-z0-9]+)' __description__ = """UploadStation.com hoster plugin""" + __license__ = "GPLv3" __authors__ = [("fragonib", "fragonib[AT]yahoo[DOT]es"), ("zoidberg", "zoidberg@mujmail.cz")] diff --git a/module/plugins/hoster/UploadedTo.py b/module/plugins/hoster/UploadedTo.py index 3f8d6ae8c..0affffbb9 100644 --- a/module/plugins/hoster/UploadedTo.py +++ b/module/plugins/hoster/UploadedTo.py @@ -99,6 +99,7 @@ class UploadedTo(Hoster): __pattern__ = r'https?://(?:www\.)?(uploaded\.(to|net)|ul\.to)(/file/|/?\?id=|.*?&id=|/)(?P\w+)' __description__ = """Uploaded.net hoster plugin""" + __license__ = "GPLv3" __authors__ = [("spoob", "spoob@pyload.org"), ("mkaay", "mkaay@mkaay.de"), ("zoidberg", "zoidberg@mujmail.cz"), diff --git a/module/plugins/hoster/UploadheroCom.py b/module/plugins/hoster/UploadheroCom.py index df96e9dd7..d22280102 100644 --- a/module/plugins/hoster/UploadheroCom.py +++ b/module/plugins/hoster/UploadheroCom.py @@ -16,6 +16,7 @@ class UploadheroCom(SimpleHoster): __pattern__ = r'http://(?:www\.)?uploadhero\.com?/dl/\w+' __description__ = """UploadHero.co plugin""" + __license__ = "GPLv3" __authors__ = [("mcmyst", "mcmyst@hotmail.fr"), ("zoidberg", "zoidberg@mujmail.cz")] diff --git a/module/plugins/hoster/UploadingCom.py b/module/plugins/hoster/UploadingCom.py index 1ec8370e2..7033a364d 100644 --- a/module/plugins/hoster/UploadingCom.py +++ b/module/plugins/hoster/UploadingCom.py @@ -16,6 +16,7 @@ class UploadingCom(SimpleHoster): __pattern__ = r'http://(?:www\.)?uploading\.com/files/(?:get/)?(?P[\w\d]+)' __description__ = """Uploading.com hoster plugin""" + __license__ = "GPLv3" __authors__ = [("jeix", "jeix@hasnomail.de"), ("mkaay", "mkaay@mkaay.de"), ("zoidberg", "zoidberg@mujmail.cz")] diff --git a/module/plugins/hoster/UpstoreNet.py b/module/plugins/hoster/UpstoreNet.py index ab79a38a2..2eb88afef 100644 --- a/module/plugins/hoster/UpstoreNet.py +++ b/module/plugins/hoster/UpstoreNet.py @@ -14,6 +14,7 @@ class UpstoreNet(SimpleHoster): __pattern__ = r'https?://(?:www\.)?upstore\.net/' __description__ = """Upstore.Net File Download Hoster""" + __license__ = "GPLv3" __authors__ = [("igel", "igelkun@myopera.com")] diff --git a/module/plugins/hoster/UptoboxCom.py b/module/plugins/hoster/UptoboxCom.py index e69058e98..d1ed81843 100644 --- a/module/plugins/hoster/UptoboxCom.py +++ b/module/plugins/hoster/UptoboxCom.py @@ -13,6 +13,7 @@ class UptoboxCom(XFSPHoster): __pattern__ = r'https?://(?:www\.)?uptobox\.com/\w{12}' __description__ = """Uptobox.com hoster plugin""" + __license__ = "GPLv3" __authors__ = [("Walter Purcaro", "vuolter@gmail.com")] diff --git a/module/plugins/hoster/VeehdCom.py b/module/plugins/hoster/VeehdCom.py index ffb1e9c56..50d24f4c9 100644 --- a/module/plugins/hoster/VeehdCom.py +++ b/module/plugins/hoster/VeehdCom.py @@ -15,6 +15,7 @@ class VeehdCom(Hoster): ("replacement_char", "str", "Filename replacement character", "_")] __description__ = """Veehd.com hoster plugin""" + __license__ = "GPLv3" __authors__ = [("cat", "cat@pyload")] diff --git a/module/plugins/hoster/VeohCom.py b/module/plugins/hoster/VeohCom.py index 923679305..a4b94f40f 100644 --- a/module/plugins/hoster/VeohCom.py +++ b/module/plugins/hoster/VeohCom.py @@ -14,6 +14,7 @@ class VeohCom(SimpleHoster): __config__ = [("quality", "Low;High;Auto", "Quality", "Auto")] __description__ = """Veoh.com hoster plugin""" + __license__ = "GPLv3" __authors__ = [("Walter Purcaro", "vuolter@gmail.com")] diff --git a/module/plugins/hoster/VidPlayNet.py b/module/plugins/hoster/VidPlayNet.py index 51bf66b24..95ed386d7 100644 --- a/module/plugins/hoster/VidPlayNet.py +++ b/module/plugins/hoster/VidPlayNet.py @@ -14,6 +14,7 @@ class VidPlayNet(XFSPHoster): __pattern__ = r'https?://(?:www\.)?vidplay\.net/\w{12}' __description__ = """VidPlay.net hoster plugin""" + __license__ = "GPLv3" __authors__ = [("t4skforce", "t4skforce1337[AT]gmail[DOT]com")] diff --git a/module/plugins/hoster/VimeoCom.py b/module/plugins/hoster/VimeoCom.py index 48c20d2de..2f554ee1b 100644 --- a/module/plugins/hoster/VimeoCom.py +++ b/module/plugins/hoster/VimeoCom.py @@ -15,6 +15,7 @@ class VimeoCom(SimpleHoster): ("original", "bool", "Try to download the original file first", True)] __description__ = """Vimeo.com hoster plugin""" + __license__ = "GPLv3" __authors__ = [("Walter Purcaro", "vuolter@gmail.com")] diff --git a/module/plugins/hoster/Vipleech4uCom.py b/module/plugins/hoster/Vipleech4uCom.py index db025db9b..18b1fe1f3 100644 --- a/module/plugins/hoster/Vipleech4uCom.py +++ b/module/plugins/hoster/Vipleech4uCom.py @@ -11,6 +11,7 @@ class Vipleech4uCom(DeadHoster): __pattern__ = r'http://(?:www\.)?vipleech4u\.com/manager\.php' __description__ = """Vipleech4u.com hoster plugin""" + __license__ = "GPLv3" __authors__ = [("Kagenoshin", "kagenoshin@gmx.ch")] diff --git a/module/plugins/hoster/WarserverCz.py b/module/plugins/hoster/WarserverCz.py index 2e1e54db3..cde40b231 100644 --- a/module/plugins/hoster/WarserverCz.py +++ b/module/plugins/hoster/WarserverCz.py @@ -11,6 +11,7 @@ class WarserverCz(DeadHoster): __pattern__ = r'http://(?:www\.)?warserver\.cz/stahnout/\d+' __description__ = """Warserver.cz hoster plugin""" + __license__ = "GPLv3" __authors__ = [("Walter Purcaro", "vuolter@gmail.com")] diff --git a/module/plugins/hoster/WebshareCz.py b/module/plugins/hoster/WebshareCz.py index dd363b024..b1163825d 100644 --- a/module/plugins/hoster/WebshareCz.py +++ b/module/plugins/hoster/WebshareCz.py @@ -29,6 +29,7 @@ class WebshareCz(SimpleHoster): __pattern__ = r'https?://(?:www\.)?webshare.cz/(?:#/)?file/(?P\w+)' __description__ = """WebShare.cz hoster plugin""" + __license__ = "GPLv3" __authors__ = [("stickell", "l.stickell@yahoo.it")] diff --git a/module/plugins/hoster/WrzucTo.py b/module/plugins/hoster/WrzucTo.py index 6569be5b2..0a5d9bfb4 100644 --- a/module/plugins/hoster/WrzucTo.py +++ b/module/plugins/hoster/WrzucTo.py @@ -15,6 +15,7 @@ class WrzucTo(SimpleHoster): __pattern__ = r'http://(?:www\.)?wrzuc\.to/([a-zA-Z0-9]+(\.wt|\.html)|(\w+/?linki/[a-zA-Z0-9]+))' __description__ = """Wrzuc.to hoster plugin""" + __license__ = "GPLv3" __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] diff --git a/module/plugins/hoster/WuploadCom.py b/module/plugins/hoster/WuploadCom.py index 02a002d66..5b4e2318f 100644 --- a/module/plugins/hoster/WuploadCom.py +++ b/module/plugins/hoster/WuploadCom.py @@ -11,6 +11,7 @@ class WuploadCom(DeadHoster): __pattern__ = r'http://(?:www\.)?wupload\..*?/file/(([a-z][0-9]+/)?[0-9]+)(/.*)?' __description__ = """Wupload.com hoster plugin""" + __license__ = "GPLv3" __authors__ = [("jeix", "jeix@hasnomail.de"), ("Paul King", None)] diff --git a/module/plugins/hoster/X7To.py b/module/plugins/hoster/X7To.py index abf4e2fa4..2288a750a 100644 --- a/module/plugins/hoster/X7To.py +++ b/module/plugins/hoster/X7To.py @@ -11,6 +11,7 @@ class X7To(DeadHoster): __pattern__ = r'http://(?:www\.)?x7.to/' __description__ = """X7.to hoster plugin""" + __license__ = "GPLv3" __authors__ = [("ernieb", "ernieb")] diff --git a/module/plugins/hoster/XFileSharingPro.py b/module/plugins/hoster/XFileSharingPro.py index 9c46e8120..e670dc5af 100644 --- a/module/plugins/hoster/XFileSharingPro.py +++ b/module/plugins/hoster/XFileSharingPro.py @@ -13,6 +13,7 @@ class XFileSharingPro(XFSPHoster): __pattern__ = r'^unmatchable$' __description__ = """XFileSharingPro dummy hoster plugin for hook""" + __license__ = "GPLv3" __authors__ = [("Walter Purcaro", "vuolter@gmail.com")] diff --git a/module/plugins/hoster/XHamsterCom.py b/module/plugins/hoster/XHamsterCom.py index 4224ecb34..6dc9b4a29 100644 --- a/module/plugins/hoster/XHamsterCom.py +++ b/module/plugins/hoster/XHamsterCom.py @@ -25,6 +25,7 @@ class XHamsterCom(Hoster): __config__ = [("type", ".mp4;.flv", "Preferred type", ".mp4")] __description__ = """XHamster.com hoster plugin""" + __license__ = "GPLv3" __authors__ = [] diff --git a/module/plugins/hoster/XVideosCom.py b/module/plugins/hoster/XVideosCom.py index 2e1934fdb..6192782c8 100644 --- a/module/plugins/hoster/XVideosCom.py +++ b/module/plugins/hoster/XVideosCom.py @@ -15,6 +15,7 @@ class XVideosCom(Hoster): __pattern__ = r'http://(?:www\.)?xvideos\.com/video([0-9]+)/.*' __description__ = """XVideos.com hoster plugin""" + __license__ = "GPLv3" __authors__ = [] diff --git a/module/plugins/hoster/Xdcc.py b/module/plugins/hoster/Xdcc.py index a4a630ad9..db9c5edf9 100644 --- a/module/plugins/hoster/Xdcc.py +++ b/module/plugins/hoster/Xdcc.py @@ -24,6 +24,7 @@ class Xdcc(Hoster): ("realname", "str", "Realname", "pyloadreal")] __description__ = """Download from IRC XDCC bot""" + __license__ = "GPLv3" __authors__ = [("jeix", "jeix@hasnomail.com")] diff --git a/module/plugins/hoster/YibaishiwuCom.py b/module/plugins/hoster/YibaishiwuCom.py index 09e77b3a2..c015a596b 100644 --- a/module/plugins/hoster/YibaishiwuCom.py +++ b/module/plugins/hoster/YibaishiwuCom.py @@ -14,6 +14,7 @@ class YibaishiwuCom(SimpleHoster): __pattern__ = r'http://(?:www\.)?(?:u\.)?115.com/file/(?P\w+)' __description__ = """115.com hoster plugin""" + __license__ = "GPLv3" __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] diff --git a/module/plugins/hoster/YoupornCom.py b/module/plugins/hoster/YoupornCom.py index b9f9cabd9..692c63286 100644 --- a/module/plugins/hoster/YoupornCom.py +++ b/module/plugins/hoster/YoupornCom.py @@ -13,6 +13,7 @@ class YoupornCom(Hoster): __pattern__ = r'http://(?:www\.)?youporn\.com/watch/.+' __description__ = """Youporn.com hoster plugin""" + __license__ = "GPLv3" __authors__ = [("willnix", "willnix@pyload.org")] diff --git a/module/plugins/hoster/YourfilesTo.py b/module/plugins/hoster/YourfilesTo.py index 8b91ebe89..efbb927f0 100644 --- a/module/plugins/hoster/YourfilesTo.py +++ b/module/plugins/hoster/YourfilesTo.py @@ -15,6 +15,7 @@ class YourfilesTo(Hoster): __pattern__ = r'(http://)?(?:www\.)?yourfiles\.(to|biz)/\?d=[a-zA-Z0-9]+' __description__ = """Youfiles.to hoster plugin""" + __license__ = "GPLv3" __authors__ = [("jeix", "jeix@hasnomail.de"), ("skydancer", "skydancer@hasnomail.de")] diff --git a/module/plugins/hoster/YoutubeCom.py b/module/plugins/hoster/YoutubeCom.py index 90cb88b18..5eacdc738 100644 --- a/module/plugins/hoster/YoutubeCom.py +++ b/module/plugins/hoster/YoutubeCom.py @@ -48,6 +48,7 @@ class YoutubeCom(Hoster): ("3d", "bool", "Prefer 3D", False)] __description__ = """Youtube.com hoster plugin""" + __license__ = "GPLv3" __authors__ = [("spoob", "spoob@pyload.org"), ("zoidberg", "zoidberg@mujmail.cz")] diff --git a/module/plugins/hoster/ZDF.py b/module/plugins/hoster/ZDF.py index b28ebba8c..a59812271 100644 --- a/module/plugins/hoster/ZDF.py +++ b/module/plugins/hoster/ZDF.py @@ -16,6 +16,7 @@ class ZDF(Hoster): __pattern__ = r'http://(?:www\.)?zdf\.de/ZDFmediathek/[^0-9]*([0-9]+)[^0-9]*' __description__ = """ZDF.de hoster plugin""" + __license__ = "GPLv3" __authors__ = [] XML_API = "http://www.zdf.de/ZDFmediathek/xmlservice/web/beitragsDetails?id=%i" diff --git a/module/plugins/hoster/ZeveraCom.py b/module/plugins/hoster/ZeveraCom.py index 9be5e9276..5720579bb 100644 --- a/module/plugins/hoster/ZeveraCom.py +++ b/module/plugins/hoster/ZeveraCom.py @@ -11,6 +11,7 @@ class ZeveraCom(Hoster): __pattern__ = r'http://(?:www\.)?zevera\.com/.*' __description__ = """Zevera.com hoster plugin""" + __license__ = "GPLv3" __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] diff --git a/module/plugins/hoster/ZippyshareCom.py b/module/plugins/hoster/ZippyshareCom.py index 1637053db..24e5bf68c 100644 --- a/module/plugins/hoster/ZippyshareCom.py +++ b/module/plugins/hoster/ZippyshareCom.py @@ -16,6 +16,7 @@ class ZippyshareCom(SimpleHoster): __pattern__ = r'(?Phttp://www\d{0,2}\.zippyshare\.com)/v(?:/|iew\.jsp.*key=)(?P\d+)' __description__ = """Zippyshare.com hoster plugin""" + __license__ = "GPLv3" __authors__ = [("Walter Purcaro", "vuolter@gmail.com")] diff --git a/module/plugins/internal/AbstractExtractor.py b/module/plugins/internal/AbstractExtractor.py index fefeb4ece..2b21ee357 100644 --- a/module/plugins/internal/AbstractExtractor.py +++ b/module/plugins/internal/AbstractExtractor.py @@ -17,6 +17,7 @@ class AbtractExtractor: __version__ = "0.1" __description__ = """Abtract extractor plugin""" + __license__ = "GPLv3" __authors__ = [("pyLoad Team", "admin@pyload.org")] diff --git a/module/plugins/internal/CaptchaService.py b/module/plugins/internal/CaptchaService.py index dad537bec..187170660 100644 --- a/module/plugins/internal/CaptchaService.py +++ b/module/plugins/internal/CaptchaService.py @@ -10,6 +10,7 @@ class CaptchaService: __version__ = "0.09" __description__ = """Base captcha service plugin""" + __license__ = "GPLv3" __authors__ = [("pyLoad Team", "admin@pyload.org")] @@ -54,6 +55,7 @@ class ReCaptcha(CaptchaService): __version__ = "0.02" __description__ = """ReCaptcha captcha service plugin""" + __license__ = "GPLv3" __authors__ = [("pyLoad Team", "admin@pyload.org")] @@ -114,6 +116,7 @@ class AdsCaptcha(CaptchaService): __version__ = "0.02" __description__ = """AdsCaptcha captcha service plugin""" + __license__ = "GPLv3" __authors__ = [("pyLoad Team", "admin@pyload.org")] @@ -175,6 +178,7 @@ class SolveMedia(CaptchaService): __version__ = "0.02" __description__ = """SolveMedia captcha service plugin""" + __license__ = "GPLv3" __authors__ = [("pyLoad Team", "admin@pyload.org")] diff --git a/module/plugins/internal/DeadCrypter.py b/module/plugins/internal/DeadCrypter.py index 8886be0a7..760ed61b1 100644 --- a/module/plugins/internal/DeadCrypter.py +++ b/module/plugins/internal/DeadCrypter.py @@ -11,6 +11,7 @@ class DeadCrypter(_Crypter): __pattern__ = None __description__ = """ Crypter is no longer available """ + __license__ = "GPLv3" __authors__ = [("stickell", "l.stickell@yahoo.it")] diff --git a/module/plugins/internal/DeadHoster.py b/module/plugins/internal/DeadHoster.py index fff254de7..2f0a01732 100644 --- a/module/plugins/internal/DeadHoster.py +++ b/module/plugins/internal/DeadHoster.py @@ -19,6 +19,7 @@ class DeadHoster(_Hoster): __pattern__ = None __description__ = """ Hoster is no longer available """ + __license__ = "GPLv3" __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] diff --git a/module/plugins/internal/MultiHoster.py b/module/plugins/internal/MultiHoster.py index daab1e855..38a93c6af 100644 --- a/module/plugins/internal/MultiHoster.py +++ b/module/plugins/internal/MultiHoster.py @@ -11,6 +11,7 @@ class MultiHoster(Hook): __version__ = "0.19" __description__ = """Generic MultiHoster plugin""" + __license__ = "GPLv3" __authors__ = [("pyLoad Team", "admin@pyload.org")] diff --git a/module/plugins/internal/SimpleCrypter.py b/module/plugins/internal/SimpleCrypter.py index 2da551ea9..8139d661d 100644 --- a/module/plugins/internal/SimpleCrypter.py +++ b/module/plugins/internal/SimpleCrypter.py @@ -15,6 +15,7 @@ class SimpleCrypter(Crypter): __pattern__ = None __description__ = """Simple decrypter plugin""" + __license__ = "GPLv3" __authors__ = [("stickell", "l.stickell@yahoo.it"), ("zoidberg", "zoidberg@mujmail.cz"), ("Walter Purcaro", "vuolter@gmail.com")] diff --git a/module/plugins/internal/SimpleHoster.py b/module/plugins/internal/SimpleHoster.py index 3887f1579..895584af6 100644 --- a/module/plugins/internal/SimpleHoster.py +++ b/module/plugins/internal/SimpleHoster.py @@ -157,6 +157,7 @@ class SimpleHoster(Hoster): __pattern__ = None __description__ = """Simple hoster plugin""" + __license__ = "GPLv3" __authors__ = [("zoidberg", "zoidberg@mujmail.cz"), ("stickell", "l.stickell@yahoo.it"), ("Walter Purcaro", "vuolter@gmail.com")] diff --git a/module/plugins/internal/UnRar.py b/module/plugins/internal/UnRar.py index 11496b606..d95d55831 100644 --- a/module/plugins/internal/UnRar.py +++ b/module/plugins/internal/UnRar.py @@ -25,6 +25,7 @@ class UnRar(AbtractExtractor): __version__ = "0.18" __description__ = """Rar extractor plugin""" + __license__ = "GPLv3" __authors__ = [("RaNaN", "RaNaN@pyload.org")] diff --git a/module/plugins/internal/UnZip.py b/module/plugins/internal/UnZip.py index 71f144fc7..52b4bca27 100644 --- a/module/plugins/internal/UnZip.py +++ b/module/plugins/internal/UnZip.py @@ -11,6 +11,7 @@ class UnZip(AbtractExtractor): __version__ = "0.1" __description__ = """Zip extractor plugin""" + __license__ = "GPLv3" __authors__ = [("RaNaN", "RaNaN@pyload.org")] diff --git a/module/plugins/internal/XFSPAccount.py b/module/plugins/internal/XFSPAccount.py index fdbd8829c..18543b9cd 100644 --- a/module/plugins/internal/XFSPAccount.py +++ b/module/plugins/internal/XFSPAccount.py @@ -16,6 +16,7 @@ class XFSPAccount(Account): __version__ = "0.10" __description__ = """XFileSharingPro account plugin""" + __license__ = "GPLv3" __authors__ = [("zoidberg", "zoidberg@mujmail.cz"), ("Walter Purcaro", "vuolter@gmail.com")] diff --git a/module/plugins/internal/XFSPHoster.py b/module/plugins/internal/XFSPHoster.py index 30cb1536f..fdaa2eb43 100644 --- a/module/plugins/internal/XFSPHoster.py +++ b/module/plugins/internal/XFSPHoster.py @@ -26,6 +26,7 @@ class XFSPHoster(SimpleHoster): __pattern__ = None __description__ = """XFileSharingPro hoster plugin""" + __license__ = "GPLv3" __authors__ = [("zoidberg", "zoidberg@mujmail.cz"), ("stickell", "l.stickell@yahoo.it"), ("Walter Purcaro", "vuolter@gmail.com")] -- cgit v1.2.3 From 332c248d0860c8c09d804055b6491dfbb654c8d3 Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Wed, 8 Oct 2014 20:25:22 +0200 Subject: Newline cosmetics --- module/plugins/accounts/FourSharedCom.py | 3 ++- module/plugins/accounts/MyfastfileCom.py | 3 ++- module/plugins/hooks/MyfastfileCom.py | 2 ++ module/plugins/hoster/Ftp.py | 2 ++ module/plugins/hoster/MyfastfileCom.py | 2 ++ 5 files changed, 10 insertions(+), 2 deletions(-) (limited to 'module') diff --git a/module/plugins/accounts/FourSharedCom.py b/module/plugins/accounts/FourSharedCom.py index cd32fbca9..39f6fbe75 100644 --- a/module/plugins/accounts/FourSharedCom.py +++ b/module/plugins/accounts/FourSharedCom.py @@ -1,13 +1,14 @@ # -*- coding: utf-8 -*- -from module.plugins.Account import Account from module.common.json_layer import json_loads +from module.plugins.Account import Account class FourSharedCom(Account): __name__ = "FourSharedCom" __type__ = "account" __version__ = "0.03" + __description__ = """FourShared.com account plugin""" __license__ = "GPLv3" __authors__ = [("zoidberg", "zoidberg@mujmail.cz"), diff --git a/module/plugins/accounts/MyfastfileCom.py b/module/plugins/accounts/MyfastfileCom.py index 06e89c0c1..965b10e78 100644 --- a/module/plugins/accounts/MyfastfileCom.py +++ b/module/plugins/accounts/MyfastfileCom.py @@ -2,14 +2,15 @@ from time import time -from module.plugins.Account import Account from module.common.json_layer import json_loads +from module.plugins.Account import Account class MyfastfileCom(Account): __name__ = "MyfastfileCom" __type__ = "account" __version__ = "0.02" + __description__ = """Myfastfile.com account plugin""" __license__ = "GPLv3" __authors__ = [("stickell", "l.stickell@yahoo.it")] diff --git a/module/plugins/hooks/MyfastfileCom.py b/module/plugins/hooks/MyfastfileCom.py index 80751c6b4..5c22f7910 100644 --- a/module/plugins/hooks/MyfastfileCom.py +++ b/module/plugins/hooks/MyfastfileCom.py @@ -9,11 +9,13 @@ class MyfastfileCom(MultiHoster): __name__ = "MyfastfileCom" __type__ = "hook" __version__ = "0.02" + __config__ = [("activated", "bool", "Activated", False), ("hosterListMode", "all;listed;unlisted", "Use for hosters (if supported)", "all"), ("hosterList", "str", "Hoster list (comma separated)", ""), ("unloadFailing", "bool", "Revert to standard download if download fails", False), ("interval", "int", "Reload interval in hours (0 to disable)", 24)] + __description__ = """Myfastfile.com hook plugin""" __license__ = "GPLv3" __authors__ = [("stickell", "l.stickell@yahoo.it")] diff --git a/module/plugins/hoster/Ftp.py b/module/plugins/hoster/Ftp.py index c880302f4..b255de66b 100644 --- a/module/plugins/hoster/Ftp.py +++ b/module/plugins/hoster/Ftp.py @@ -13,7 +13,9 @@ class Ftp(Hoster): __name__ = "Ftp" __type__ = "hoster" __version__ = "0.42" + __pattern__ = r'(ftps?|sftp)://(.*?:.*?@)?.*?/.*' # ftp://user:password@ftp.server.org/path/to/file + __description__ = """Download from ftp directory""" __license__ = "GPLv3" __authors__ = [("jeix", "jeix@hasnomail.com"), diff --git a/module/plugins/hoster/MyfastfileCom.py b/module/plugins/hoster/MyfastfileCom.py index 02b91f599..466bb95e8 100644 --- a/module/plugins/hoster/MyfastfileCom.py +++ b/module/plugins/hoster/MyfastfileCom.py @@ -10,7 +10,9 @@ class MyfastfileCom(Hoster): __name__ = "MyfastfileCom" __type__ = "hoster" __version__ = "0.04" + __pattern__ = r'http://(?:www\.)?\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/dl/' + __description__ = """Myfastfile.com hoster plugin""" __license__ = "GPLv3" __authors__ = [("stickell", "l.stickell@yahoo.it")] -- cgit v1.2.3 From 6632ded30de12bc16644b26de2605ec6b3bdd42a Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Thu, 9 Oct 2014 13:12:12 +0200 Subject: ShareRapidCom -> MegaRapidCz --- module/plugins/accounts/MegaRapidCz.py | 54 +++++++++++++++++++++ module/plugins/accounts/ShareRapidCom.py | 54 --------------------- module/plugins/crypter/MegaRapidCzFolder.py | 18 +++++++ module/plugins/crypter/ShareRapidComFolder.py | 18 ------- module/plugins/hoster/MegaRapidCz.py | 70 +++++++++++++++++++++++++++ module/plugins/hoster/ShareRapidCom.py | 70 --------------------------- 6 files changed, 142 insertions(+), 142 deletions(-) create mode 100644 module/plugins/accounts/MegaRapidCz.py delete mode 100644 module/plugins/accounts/ShareRapidCom.py create mode 100644 module/plugins/crypter/MegaRapidCzFolder.py delete mode 100644 module/plugins/crypter/ShareRapidComFolder.py create mode 100644 module/plugins/hoster/MegaRapidCz.py delete mode 100644 module/plugins/hoster/ShareRapidCom.py (limited to 'module') diff --git a/module/plugins/accounts/MegaRapidCz.py b/module/plugins/accounts/MegaRapidCz.py new file mode 100644 index 000000000..5b7b41e2b --- /dev/null +++ b/module/plugins/accounts/MegaRapidCz.py @@ -0,0 +1,54 @@ +# -*- coding: utf-8 -*- + +import re + +from time import mktime, strptime +from module.plugins.Account import Account + + +class MegaRapidCz(Account): + __name__ = "MegaRapidCz" + __type__ = "account" + __version__ = "0.34" + + __description__ = """MegaRapid.cz account plugin""" + __license__ = "GPLv3" + __authors__ = [("MikyWoW", "mikywow@seznam.cz"), + ("zoidberg", "zoidberg@mujmail.cz")] + + + login_timeout = 60 + + + def loadAccountInfo(self, user, req): + src = req.load("http://megarapid.cz/mujucet/", decode=True) + + m = re.search(ur'Max. počet paralelních stahování: (\d+)', src) + if m: + data = self.getAccountData(user) + data['options']['limitDL'] = [int(m.group(1))] + + m = re.search(ur'Paušální stahování aktivní. Vyprší (.*?)', src) + if m: + validuntil = mktime(strptime(m.group(1), "%d.%m.%Y - %H:%M")) + return {"premium": True, "trafficleft": -1, "validuntil": validuntil} + + m = re.search(r'Kredit(.*?) GiB', src) + if m: + trafficleft = float(m.group(1)) * (1 << 20) + return {"premium": True, "trafficleft": trafficleft, "validuntil": -1} + + return {"premium": False, "trafficleft": None, "validuntil": None} + + def login(self, user, data, req): + htm = req.load("http://megarapid.cz/prihlaseni/", cookies=True) + if "Heslo:" in htm: + start = htm.index('id="inp_hash" name="hash" value="') + htm = htm[start + 33:] + hashes = htm[0:32] + htm = req.load("http://megarapid.cz/prihlaseni/", + post={"hash": hashes, + "login": user, + "pass1": data['password'], + "remember": 0, + "sbmt": u"Přihlásit"}, cookies=True) diff --git a/module/plugins/accounts/ShareRapidCom.py b/module/plugins/accounts/ShareRapidCom.py deleted file mode 100644 index 62a0067d5..000000000 --- a/module/plugins/accounts/ShareRapidCom.py +++ /dev/null @@ -1,54 +0,0 @@ -# -*- coding: utf-8 -*- - -import re - -from time import mktime, strptime -from module.plugins.Account import Account - - -class ShareRapidCom(Account): - __name__ = "ShareRapidCom" - __type__ = "account" - __version__ = "0.34" - - __description__ = """MegaRapid.cz account plugin""" - __license__ = "GPLv3" - __authors__ = [("MikyWoW", "mikywow@seznam.cz"), - ("zoidberg", "zoidberg@mujmail.cz")] - - - login_timeout = 60 - - - def loadAccountInfo(self, user, req): - src = req.load("http://megarapid.cz/mujucet/", decode=True) - - m = re.search(ur'Max. počet paralelních stahování: (\d+)', src) - if m: - data = self.getAccountData(user) - data['options']['limitDL'] = [int(m.group(1))] - - m = re.search(ur'Paušální stahování aktivní. Vyprší (.*?)', src) - if m: - validuntil = mktime(strptime(m.group(1), "%d.%m.%Y - %H:%M")) - return {"premium": True, "trafficleft": -1, "validuntil": validuntil} - - m = re.search(r'Kredit(.*?) GiB', src) - if m: - trafficleft = float(m.group(1)) * (1 << 20) - return {"premium": True, "trafficleft": trafficleft, "validuntil": -1} - - return {"premium": False, "trafficleft": None, "validuntil": None} - - def login(self, user, data, req): - htm = req.load("http://megarapid.cz/prihlaseni/", cookies=True) - if "Heslo:" in htm: - start = htm.index('id="inp_hash" name="hash" value="') - htm = htm[start + 33:] - hashes = htm[0:32] - htm = req.load("http://megarapid.cz/prihlaseni/", - post={"hash": hashes, - "login": user, - "pass1": data['password'], - "remember": 0, - "sbmt": u"Přihlásit"}, cookies=True) diff --git a/module/plugins/crypter/MegaRapidCzFolder.py b/module/plugins/crypter/MegaRapidCzFolder.py new file mode 100644 index 000000000..a9d6a2dc6 --- /dev/null +++ b/module/plugins/crypter/MegaRapidCzFolder.py @@ -0,0 +1,18 @@ +# -*- coding: utf-8 -*- + +from module.plugins.internal.SimpleCrypter import SimpleCrypter + + +class MegaRapidCzFolder(SimpleCrypter): + __name__ = "MegaRapidCzFolder" + __type__ = "crypter" + __version__ = "0.02" + + __pattern__ = r'http://(?:www\.)?(share|mega)rapid\.cz/slozka/\d+/\w+' + + __description__ = """Share-Rapid.com folder decrypter plugin""" + __license__ = "GPLv3" + __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] + + + LINK_PATTERN = r']*>' diff --git a/module/plugins/crypter/ShareRapidComFolder.py b/module/plugins/crypter/ShareRapidComFolder.py deleted file mode 100644 index 605a63a1f..000000000 --- a/module/plugins/crypter/ShareRapidComFolder.py +++ /dev/null @@ -1,18 +0,0 @@ -# -*- coding: utf-8 -*- - -from module.plugins.internal.SimpleCrypter import SimpleCrypter - - -class ShareRapidComFolder(SimpleCrypter): - __name__ = "ShareRapidComFolder" - __type__ = "crypter" - __version__ = "0.01" - - __pattern__ = r'http://(?:www\.)?((share(-?rapid\.(biz|com|cz|info|eu|net|org|pl|sk)|-(central|credit|free|net)\.cz|-ms\.net)|(s-?rapid|rapids)\.(cz|sk))|(e-stahuj|mediatack|premium-rapidshare|rapidshare-premium|qiuck)\.cz|kadzet\.com|stahuj-zdarma\.eu|strelci\.net|universal-share\.com)/(slozka/.+)' - - __description__ = """Share-Rapid.com folder decrypter plugin""" - __license__ = "GPLv3" - __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] - - - LINK_PATTERN = r']*>' diff --git a/module/plugins/hoster/MegaRapidCz.py b/module/plugins/hoster/MegaRapidCz.py new file mode 100644 index 000000000..d36db5e7c --- /dev/null +++ b/module/plugins/hoster/MegaRapidCz.py @@ -0,0 +1,70 @@ +# -*- coding: utf-8 -*- + +import re + +from pycurl import HTTPHEADER + +from module.network.RequestFactory import getRequest +from module.plugins.internal.SimpleHoster import SimpleHoster, parseFileInfo + + +def getInfo(urls): + h = getRequest() + h.c.setopt(HTTPHEADER, + ["Accept: text/html", + "User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:25.0) Gecko/20100101 Firefox/25.0"]) + for url in urls: + html = h.load(url, decode=True) + file_info = parseFileInfo(MegaRapidCz, url, html) + yield file_info + + +class MegaRapidCz(SimpleHoster): + __name__ = "MegaRapidCz" + __type__ = "hoster" + __version__ = "0.54" + + __pattern__ = r'http://(?:www\.)?(share|mega)rapid\.cz/soubor/\d+/.+' + + __description__ = """MegaRapid.cz hoster plugin""" + __license__ = "GPLv3" + __authors__ = [("MikyWoW", "mikywow@seznam.cz"), + ("zoidberg", "zoidberg@mujmail.cz"), + ("stickell", "l.stickell@yahoo.it"), + ("Walter Purcaro", "vuolter@gmail.com")] + + + FILE_NAME_PATTERN = r']*>]*>(?:]*>)?(?P[^<]+)' + FILE_SIZE_PATTERN = r'Velikost:\s*\s*(?P[0-9.]+) (?P[kKMG])i?B' + OFFLINE_PATTERN = ur'Nastala chyba 404|Soubor byl smazán' + + FORCE_CHECK_TRAFFIC = True + + LINK_PATTERN = r'([^<]+)' + ERR_LOGIN_PATTERN = ur'
Stahování je přístupné pouze přihlášeným uživatelům' + ERR_CREDIT_PATTERN = ur'
Stahování zdarma je možné jen přes náš' + + + def setup(self): + self.chunkLimit = 1 + + def handlePremium(self): + try: + self.html = self.load(self.pyfile.url, decode=True) + except BadHeader, e: + self.account.relogin(self.user) + self.retry(max_tries=3, reason=str(e)) + + m = re.search(self.LINK_PATTERN, self.html) + if m: + link = m.group(1) + self.logDebug("Premium link: %s" % link) + self.download(link, disposition=True) + else: + if re.search(self.ERR_LOGIN_PATTERN, self.html): + self.relogin(self.user) + self.retry(max_tries=3, reason="User login failed") + elif re.search(self.ERR_CREDIT_PATTERN, self.html): + self.fail("Not enough credit left") + else: + self.fail("Download link not found") diff --git a/module/plugins/hoster/ShareRapidCom.py b/module/plugins/hoster/ShareRapidCom.py deleted file mode 100644 index 9b80a9914..000000000 --- a/module/plugins/hoster/ShareRapidCom.py +++ /dev/null @@ -1,70 +0,0 @@ -# -*- coding: utf-8 -*- - -import re - -from pycurl import HTTPHEADER - -from module.network.RequestFactory import getRequest -from module.plugins.internal.SimpleHoster import SimpleHoster, parseFileInfo - - -def getInfo(urls): - h = getRequest() - h.c.setopt(HTTPHEADER, - ["Accept: text/html", - "User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:25.0) Gecko/20100101 Firefox/25.0"]) - for url in urls: - html = h.load(url, decode=True) - file_info = parseFileInfo(ShareRapidCom, url, html) - yield file_info - - -class ShareRapidCom(SimpleHoster): - __name__ = "ShareRapidCom" - __type__ = "hoster" - __version__ = "0.54" - - __pattern__ = r'http://(?:www\.)?(share|mega)rapid\.cz/soubor/\d+/.+' - - __description__ = """MegaRapid.cz hoster plugin""" - __license__ = "GPLv3" - __authors__ = [("MikyWoW", "mikywow@seznam.cz"), - ("zoidberg", "zoidberg@mujmail.cz"), - ("stickell", "l.stickell@yahoo.it"), - ("Walter Purcaro", "vuolter@gmail.com")] - - - FILE_NAME_PATTERN = r']*>]*>(?:]*>)?(?P[^<]+)' - FILE_SIZE_PATTERN = r'Velikost:\s*\s*(?P[0-9.]+) (?P[kKMG])i?B' - OFFLINE_PATTERN = ur'Nastala chyba 404|Soubor byl smazán' - - FORCE_CHECK_TRAFFIC = True - - LINK_PATTERN = r'([^<]+)' - ERR_LOGIN_PATTERN = ur'
Stahování je přístupné pouze přihlášeným uživatelům' - ERR_CREDIT_PATTERN = ur'
Stahování zdarma je možné jen přes náš' - - - def setup(self): - self.chunkLimit = 1 - - def handlePremium(self): - try: - self.html = self.load(self.pyfile.url, decode=True) - except BadHeader, e: - self.account.relogin(self.user) - self.retry(max_tries=3, reason=str(e)) - - m = re.search(self.LINK_PATTERN, self.html) - if m: - link = m.group(1) - self.logDebug("Premium link: %s" % link) - self.download(link, disposition=True) - else: - if re.search(self.ERR_LOGIN_PATTERN, self.html): - self.relogin(self.user) - self.retry(max_tries=3, reason="User login failed") - elif re.search(self.ERR_CREDIT_PATTERN, self.html): - self.fail("Not enough credit left") - else: - self.fail("Download link not found") -- cgit v1.2.3 From 9a58e0d535cf8144c6da4cc86825779420137aca Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Fri, 10 Oct 2014 14:16:56 +0200 Subject: [EasybytezCom] Update LINK_PATTERN --- module/plugins/hoster/EasybytezCom.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'module') diff --git a/module/plugins/hoster/EasybytezCom.py b/module/plugins/hoster/EasybytezCom.py index 1f5682310..df866de52 100644 --- a/module/plugins/hoster/EasybytezCom.py +++ b/module/plugins/hoster/EasybytezCom.py @@ -6,7 +6,7 @@ from module.plugins.internal.XFSPHoster import XFSPHoster, create_getInfo class EasybytezCom(XFSPHoster): __name__ = "EasybytezCom" __type__ = "hoster" - __version__ = "0.20" + __version__ = "0.21" __pattern__ = r'http://(?:www\.)?easybytez\.com/\w{12}' @@ -21,7 +21,7 @@ class EasybytezCom(XFSPHoster): FILE_INFO_PATTERN = r'(?P.+)
\s*(?P[^<]+)' OFFLINE_PATTERN = r'>File not available' - LINK_PATTERN = r'(http://(\w+\.(easyload|easybytez|zingload)\.(com|to)|\d+\.\d+\.\d+\.\d+)/files/\d+/\w+/[^"<]+)' + LINK_PATTERN = r'(http://(\w+\.(easybytez|easyload|ezbytez|zingload)\.(com|to)|\d+\.\d+\.\d+\.\d+)/files/\d+/\w+/.+?)["\'<]' OVR_LINK_PATTERN = r'

Download Link

\s*]*>([^<]+)' ERROR_PATTERN = r'(?:class=["\']err["\'][^>]*>|
)(.*?) Date: Fri, 10 Oct 2014 14:17:37 +0200 Subject: [XFSPHoster] Update LINK_PATTERN --- module/plugins/internal/XFSPHoster.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'module') diff --git a/module/plugins/internal/XFSPHoster.py b/module/plugins/internal/XFSPHoster.py index fdaa2eb43..228a55c82 100644 --- a/module/plugins/internal/XFSPHoster.py +++ b/module/plugins/internal/XFSPHoster.py @@ -21,7 +21,7 @@ class XFSPHoster(SimpleHoster): """ __name__ = "XFSPHoster" __type__ = "hoster" - __version__ = "0.01" + __version__ = "0.02" __pattern__ = None @@ -69,8 +69,8 @@ class XFSPHoster(SimpleHoster): self.fail("Missing HOSTER_NAME") if not self.LINK_PATTERN: - pattr = r'(http://([^/]*?%s|\d+\.\d+\.\d+\.\d+)(:\d+)?(/d/|(?:/files)?/\d+/\w+/)[^"\'<]+)' - self.LINK_PATTERN = pattr % self.HOSTER_NAME + pattern = r'(https?://(www\.)?([^/]*?%s|\d+\.\d+\.\d+\.\d+)(\:\d+)?(/d/|(/files)?/\d+/\w+/).+?)["\'<]' + self.LINK_PATTERN = pattern % self.HOSTER_NAME if isinstance(self.COOKIES, list): set_cookies(self.req.cj, self.COOKIES) -- cgit v1.2.3 From 2d613459035663ecc517988db3b96d3cd9531d7a Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Fri, 10 Oct 2014 14:41:06 +0200 Subject: [FiredriveCom][SockshareCom] Mark dead --- module/plugins/hoster/FiredriveCom.py | 40 ++---------------- module/plugins/hoster/SockshareCom.py | 77 ++--------------------------------- 2 files changed, 6 insertions(+), 111 deletions(-) (limited to 'module') diff --git a/module/plugins/hoster/FiredriveCom.py b/module/plugins/hoster/FiredriveCom.py index b68868a66..66a67ffff 100644 --- a/module/plugins/hoster/FiredriveCom.py +++ b/module/plugins/hoster/FiredriveCom.py @@ -1,14 +1,12 @@ # -*- coding: utf-8 -*- -import re +from module.plugins.internal.DeadHoster import DeadHoster, create_getInfo -from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo - -class FiredriveCom(SimpleHoster): +class FiredriveCom(DeadHoster): __name__ = "FiredriveCom" __type__ = "hoster" - __version__ = "0.04" + __version__ = "0.05" __pattern__ = r'https?://(?:www\.)?(firedrive|putlocker)\.com/(mobile/)?(file|embed)/(?P\w+)' @@ -17,36 +15,4 @@ class FiredriveCom(SimpleHoster): __authors__ = [("Walter Purcaro", "vuolter@gmail.com")] - FILE_NAME_PATTERN = r'Name: (?P.+)
' - FILE_SIZE_PATTERN = r'Size: (?P[\d.]+) (?P[a-zA-Z]+)
' - OFFLINE_PATTERN = r'class="sad_face_image"|>No such page here.<' - TEMP_OFFLINE_PATTERN = r'Please try again in a few minutes.<' - - FILE_URL_REPLACEMENTS = [(__pattern__, r'http://www.firedrive.com/file/\g')] - - LINK_PATTERN = r'\w+)' @@ -22,70 +17,4 @@ class SockshareCom(SimpleHoster): ("Walter Purcaro", "vuolter@gmail.com")] - FILE_INFO_PATTERN = r'site-content">\s*

(?P.+)\( (?P[^)]+) \)

' - OFFLINE_PATTERN = r'>This file doesn\'t exist, or has been removed.<' - TEMP_OFFLINE_PATTERN = r'(>This content server has been temporarily disabled for upgrades|Try again soon\\. You can still download it below\\.<)' - - FILE_URL_REPLACEMENTS = [(__pattern__, r'http://www.sockshare.com/file/\g')] - - - def setup(self): - self.multiDL = self.resumeDownload = True - self.chunkLimit = -1 - - def handleFree(self): - name = self.pyfile.name - link = self._getLink() - self.logDebug("Direct link: " + link) - self.download(link, disposition=True) - self.processName(name) - - def _getLink(self): - hash_data = re.search(r'', self.html) - if not hash_data: - self.parseError("Unable to detect hash") - - post_data = {"hash": hash_data.group(1), "confirm": "Continue+as+Free+User"} - self.html = self.load(self.pyfile.url, post=post_data) - if ">You have exceeded the daily stream limit for your country\\. You can wait until tomorrow" in self.html: - self.logWarning("You have exceeded your daily stream limit for today") - self.wait(secondsToMidnight(gmt=2), True) - elif re.search(self.TEMP_OFFLINE_PATTERN, self.html): - self.retry(wait_time=2 * 60 * 60, reason="Server temporarily offline") # 2 hours wait - - patterns = (r'(/get_file\.php\?id=[A-Z0-9]+&key=[a-zA-Z0-9=]+&original=1)', - r'(/get_file\.php\?download=[A-Z0-9]+&key=[a-z0-9]+)', - r'(/get_file\.php\?download=[A-Z0-9]+&key=[a-z0-9]+&original=1)', - r'
Tired of ads and waiting\? Go Pro![\t\n\rn ]+
[\t\n\rn ]+ Date: Fri, 10 Oct 2014 14:42:32 +0200 Subject: [FiredriveComFolder] Mark dead --- module/plugins/crypter/FiredriveComFolder.py | 20 +++----------------- 1 file changed, 3 insertions(+), 17 deletions(-) (limited to 'module') diff --git a/module/plugins/crypter/FiredriveComFolder.py b/module/plugins/crypter/FiredriveComFolder.py index f297854f1..335c41ad3 100644 --- a/module/plugins/crypter/FiredriveComFolder.py +++ b/module/plugins/crypter/FiredriveComFolder.py @@ -1,29 +1,15 @@ # -*- coding: utf-8 -*- -import re +from module.plugins.internal.DeadCrypter import DeadCrypter -from module.plugins.internal.SimpleCrypter import SimpleCrypter - -class FiredriveComFolder(SimpleCrypter): +class FiredriveComFolder(DeadCrypter): __name__ = "FiredriveComFolder" __type__ = "crypter" - __version__ = "0.02" + __version__ = "0.03" __pattern__ = r'https?://(?:www\.)?(firedrive|putlocker)\.com/share/.+' __description__ = """Firedrive.com folder decrypter plugin""" __license__ = "GPLv3" __authors__ = [("Walter Purcaro", "vuolter@gmail.com")] - - - LINK_PATTERN = r'
No such page here.<' - TEMP_OFFLINE_PATTERN = r'>(File Temporarily Unavailable|Server Error. Try again later)' - - - def getLinks(self): - return map(lambda x: "http://www.firedrive.com/%s/%s" % - ("share" if x[0] == "folder" else "file", x[1]), - re.findall(self.LINK_PATTERN, self.html)) -- cgit v1.2.3 From 343e246e94548cf2cc713aed92212e12d28ce658 Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Fri, 10 Oct 2014 16:00:34 +0200 Subject: [CaptchaService] Fix ReCaptcha KEY pattern --- module/plugins/internal/CaptchaService.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'module') diff --git a/module/plugins/internal/CaptchaService.py b/module/plugins/internal/CaptchaService.py index 187170660..9d8fd85f2 100644 --- a/module/plugins/internal/CaptchaService.py +++ b/module/plugins/internal/CaptchaService.py @@ -7,7 +7,7 @@ from random import random class CaptchaService: __name__ = "CaptchaService" - __version__ = "0.09" + __version__ = "0.10" __description__ = """Base captcha service plugin""" __license__ = "GPLv3" @@ -52,15 +52,15 @@ class CaptchaService: class ReCaptcha(CaptchaService): __name__ = "ReCaptcha" - __version__ = "0.02" + __version__ = "0.03" __description__ = """ReCaptcha captcha service plugin""" __license__ = "GPLv3" __authors__ = [("pyLoad Team", "admin@pyload.org")] - KEY_PATTERN = r"https?://(?:www\.)?google\.com/recaptcha/api/challenge\?k=(?P\w+?)" - KEY_AJAX_PATTERN = r"Recaptcha\.create\s*\(\s*[\"'](?P\w+)[\"']\s*," + KEY_PATTERN = r"https?://(?:www\.)?google\.com/recaptcha/api/challenge\?k=(?P\w+)" + KEY_AJAX_PATTERN = r"Recaptcha\.create\s*\(\s*[\"'](?P\w+)" def detect_key(self, html=None): -- cgit v1.2.3 From be1419e298c0f8d1b92a77f3b9ac31523a539440 Mon Sep 17 00:00:00 2001 From: marley2013 Date: Fri, 10 Oct 2014 19:30:04 +0200 Subject: Update OverLoadMe.py --- module/plugins/hoster/OverLoadMe.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'module') diff --git a/module/plugins/hoster/OverLoadMe.py b/module/plugins/hoster/OverLoadMe.py index f1f5d55e4..5c3a36318 100644 --- a/module/plugins/hoster/OverLoadMe.py +++ b/module/plugins/hoster/OverLoadMe.py @@ -13,7 +13,7 @@ from module.utils import parseFileSize class OverLoadMe(Hoster): __name__ = "OverLoadMe" __type__ = "hoster" - __version__ = "0.01" + __version__ = "0.02" __pattern__ = r'https?://.*overload\.me.*' @@ -51,7 +51,7 @@ class OverLoadMe(Hoster): self.logDebug("Returned Data: %s" % data) - if data['err'] == 1: + if data['error'] == 1: self.logWarning(data['msg']) self.tempOffline() else: -- cgit v1.2.3 From ee5f77de01779850b61561be2f6146e7cdc148ae Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Sat, 11 Oct 2014 13:52:11 +0200 Subject: [CatShareNet] Account support --- module/plugins/accounts/CatShareNet.py | 56 ++++++++++++++++++++++++++++++++++ module/plugins/hoster/CatShareNet.py | 6 ++-- 2 files changed, 59 insertions(+), 3 deletions(-) create mode 100644 module/plugins/accounts/CatShareNet.py (limited to 'module') diff --git a/module/plugins/accounts/CatShareNet.py b/module/plugins/accounts/CatShareNet.py new file mode 100644 index 000000000..89c80e2b4 --- /dev/null +++ b/module/plugins/accounts/CatShareNet.py @@ -0,0 +1,56 @@ +# -*- coding: utf-8 -*- + +import re + +from time import mktime, strptime + +from module.plugins.Account import Account + + +class CatShareNet(Account): + __name__ = "CatShareNet" + __type__ = "account" + __version__ = "0.01" + + __description__ = """CatShareNet account plugin""" + __license__ = "GPLv3" + __authors__ = [("prOq", None)] + + + PREMIUM_PATTERN = r'class="nav-collapse collapse pull-right">[\s\w<>=-."/:]*\sz.\s*
  • .*\s*(.*?)[\s\w<>/]*href="/logout"' + VALID_UNTIL_PATTERN = r'
    [\s\w<>=-":;]*.*?(.*?)' + + + def loadAccountInfo(self, user, req): + premium = False + validuntil = -1 + + html = req.load("http://catshare.net/", decode=True) + + try: + m = re.search(self.PREMIUM_PATTERN, html) + if "Premium" in m.group(1): + premium = True + except: + pass + + try: + m = re.search(self.VALID_UNTIL_PATTERN, html) + expiredate = m.group(1) + if "-" not in expiredate: + validuntil = mktime(strptime(expiredate, "%d.%m.%Y")) + except: + pass + + return {'premium': premium, 'trafficleft': -1, 'validuntil': validuntil} + + + def login(self, user, data, req): + html = req.load("http://catshare.net/login", + post={'user_email': user, + 'user_password': data['password'], + 'remindPassword': 0, + 'user[submit]': "Login"}) + + if not 'Wyloguj' in html: + self.wrongPassword() diff --git a/module/plugins/hoster/CatShareNet.py b/module/plugins/hoster/CatShareNet.py index c50632ac3..0993c69e6 100644 --- a/module/plugins/hoster/CatShareNet.py +++ b/module/plugins/hoster/CatShareNet.py @@ -9,7 +9,7 @@ from module.plugins.internal.CaptchaService import ReCaptcha class CatShareNet(SimpleHoster): __name__ = "CatShareNet" __type__ = "hoster" - __version__ = "0.06" + __version__ = "0.07" __pattern__ = r'http://(?:www\.)?catshare\.net/\w{16}' @@ -23,9 +23,9 @@ class CatShareNet(SimpleHoster): TEXT_ENCODING = True FILE_INFO_PATTERN = r'(?P<N>.+) \((?P<S>[\d.]+) (?P<U>\w+)\)<' - OFFLINE_PATTERN = r'Podany plik został usunięty\s*</div>' + OFFLINE_PATTERN = ur'Podany plik został usunięty\s*</div>' - IP_BLOCKED_PATTERN = r'>Nasz serwis wykrył że Twój adres IP nie pochodzi z Polski.<' + IP_BLOCKED_PATTERN = ur'>Nasz serwis wykrył że Twój adres IP nie pochodzi z Polski.<' SECONDS_PATTERN = 'var\scount\s=\s(\d+);' LINK_PATTERN = r'<form action="(.+?)" method="GET">' -- cgit v1.2.3 From 9f816bb6dc30b94979e7c03433698b32203b9d1d Mon Sep 17 00:00:00 2001 From: NETHeader <NETHead@gmx.net> Date: Sat, 11 Oct 2014 14:51:07 +0200 Subject: New crypter SexuriaCom --- module/plugins/crypter/SexuriaCom.py | 102 +++++++++++++++++++++++++++++++++++ 1 file changed, 102 insertions(+) create mode 100644 module/plugins/crypter/SexuriaCom.py (limited to 'module') diff --git a/module/plugins/crypter/SexuriaCom.py b/module/plugins/crypter/SexuriaCom.py new file mode 100644 index 000000000..ad99b60ec --- /dev/null +++ b/module/plugins/crypter/SexuriaCom.py @@ -0,0 +1,102 @@ +# -*- coding: utf-8 -*- + +import re + +from module.plugins.Crypter import Crypter + + +class SexuriaCom(Crypter): + __name__ = "SexuriaCom" + __type__ = "crypter" + __version__ = "0.01" + + __pattern__ = r'http://(?:www\.)?sexuria\.com/(v1/)?(Pornos_Kostenlos_.+?_(\d+)\.html|dl_links_\d+_\d+\.html|id=\d+\&part=\d+\&link=\d+)' + + __description__ = """Sexuria.com Crypter Plugin""" + __license__ = "GPLv3" + __authors__ = [("NETHead", "NETHead.AT.gmx.DOT.net")] + + + PATTERN_SUPPORTED_MAIN = re.compile(r'http://(www\.)?sexuria\.com/(v1/)?Pornos_Kostenlos_.+?_(\d+)\.html', flags=re.I) + PATTERN_SUPPORTED_CRYPT = re.compile(r'http://(www\.)?sexuria\.com/(v1/)?dl_links_\d+_(?P<ID>\d+)\.html', flags=re.I) + PATTERN_SUPPORTED_REDIRECT = re.compile(r'http://(www\.)?sexuria\.com/out\.php\?id=(?P<ID>\d+)\&part=\d+\&link=\d+', flags=re.I) + PATTERN_TITLE = re.compile(r'<title> - (?P<TITLE>.*) Sexuria - Kostenlose Pornos - Rapidshare XXX Porn', flags=re.I) + PATTERN_PASSWORD = re.compile(r'Passwort:
    .*?bgcolor="#EFEFEF">(?P.*?)', flags=re.I | re.S) + PATTERN_DL_LINK_PAGE = re.compile(r'"(dl_links_\d+_\d+\.html)"', flags=re.I) + PATTERN_REDIRECT_LINKS = re.compile(r'value="(http://sexuria\.com/out\.php\?id=\d+\&part=\d+\&link=\d+)" readonly', flags=re.I) + + + def setup(self): + self.html = None + + + def decrypt(self, pyfile): + # Init + self.pyfile = pyfile + self.package = pyfile.package() + + # Get package links + (package_name, package_links, folder_name, package_pwd) = self.decryptLinks(self.pyfile.url) + if package_pwd: + self.pyfile.package().password = package_pwd + self.packages.append((package_name, package_links, folder_name)) + + + def decryptLinks(self, url): + linklist = [] + name = self.package.name + folder = self.package.folder + password = None + + if re.match(self.PATTERN_SUPPORTED_MAIN, url): + # Processing main page + html = self.load(url) + links = re.findall(self.PATTERN_DL_LINK_PAGE, html) + for link in links: + linklist.append("http://sexuria.com/v1/" + link) + + elif re.match(self.PATTERN_SUPPORTED_REDIRECT, url): + # Processing direct redirect link (out.php), redirecting to main page + id = re.search(self.PATTERN_SUPPORTED_REDIRECT, url).group('ID') + if id: + linklist.append("http://sexuria.com/v1/Pornos_Kostenlos_liebe_%s.html" % id) + + elif re.match(self.PATTERN_SUPPORTED_CRYPT, url): + # Extract info from main file + id = re.search(self.PATTERN_SUPPORTED_CRYPT, url).group('ID') + html = self.load("http://sexuria.com/v1/Pornos_Kostenlos_info_%s.html" % id, decode=True) + + title = re.search(self.PATTERN_TITLE, html).group('TITLE').strip() + if title: + name = folder = title + self.logDebug("Package info found, name [%s] and folder [%s]" % (name, folder)) + + pwd = re.search(self.PATTERN_PASSWORD, html).group('PWD') + if pwd: + password = pwd.strip() + self.logDebug("Password info [%s] found" % password) + + # Process link (dl_link) + html = self.load(url) + links = re.findall(self.PATTERN_REDIRECT_LINKS, html) + if len(links) == 0: + self.LogError("Broken for link %s" % link) + else: + for link in links: + link = link.replace("http://sexuria.com/", "http://www.sexuria.com/") + finallink = self.load(link, just_header=True)['location'] + if not finallink or "sexuria.com/" in finallink: + self.LogError("Broken for link %s" % link) + else: + linklist.append(finallink) + + # Inform the user if no link could been extracted + if linklist == []: + self.fail("Could not extract any links (out of date?)") + + # Debug log + self.logDebug("%d supported links" % len(linklist)) + for i, link in enumerate(linklist): + self.logDebug("Supported link %d, %s" % (i + 1, link)) + + return name, linklist, folder, password -- cgit v1.2.3 From e600362d2450ef13567b255004861bead011e0ef Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Sat, 11 Oct 2014 15:03:26 +0200 Subject: [FileshareInUa] Mark dead --- module/plugins/crypter/SexuriaCom.py | 2 +- module/plugins/hoster/FileshareInUa.py | 76 +++------------------------------- 2 files changed, 6 insertions(+), 72 deletions(-) (limited to 'module') diff --git a/module/plugins/crypter/SexuriaCom.py b/module/plugins/crypter/SexuriaCom.py index ad99b60ec..c7939e332 100644 --- a/module/plugins/crypter/SexuriaCom.py +++ b/module/plugins/crypter/SexuriaCom.py @@ -12,7 +12,7 @@ class SexuriaCom(Crypter): __pattern__ = r'http://(?:www\.)?sexuria\.com/(v1/)?(Pornos_Kostenlos_.+?_(\d+)\.html|dl_links_\d+_\d+\.html|id=\d+\&part=\d+\&link=\d+)' - __description__ = """Sexuria.com Crypter Plugin""" + __description__ = """Sexuria.com decrypter plugin""" __license__ = "GPLv3" __authors__ = [("NETHead", "NETHead.AT.gmx.DOT.net")] diff --git a/module/plugins/hoster/FileshareInUa.py b/module/plugins/hoster/FileshareInUa.py index d6ccc9e3e..3f8c3d4d4 100644 --- a/module/plugins/hoster/FileshareInUa.py +++ b/module/plugins/hoster/FileshareInUa.py @@ -1,84 +1,18 @@ # -*- coding: utf-8 -*- -import re +from module.plugins.internal.DeadHoster import DeadHoster, create_getInfo -from module.network.RequestFactory import getURL -from module.plugins.Hoster import Hoster -from module.utils import parseFileSize - -class FileshareInUa(Hoster): +class FileshareInUa(DeadHoster): __name__ = "FileshareInUa" __type__ = "hoster" - __version__ = "0.01" + __version__ = "0.02" - __pattern__ = r'http://(?:www\.)?fileshare.in.ua/[A-Za-z0-9]+' + __pattern__ = r'https?://(?:www\.)?fileshare\.in\.ua/\w{7}' __description__ = """Fileshare.in.ua hoster plugin""" __license__ = "GPLv3" __authors__ = [("fwannmacher", "felipe@warhammerproject.com")] - PATTERN_FILENAME = r'

    (.*?)

    ' - PATTERN_FILESIZE = r'(.*?)' - PATTERN_OFFLINE = r"This file doesn't exist, or has been removed." - - - def setup(self): - self.resumeDownload = self.multiDL = True - - def process(self, pyfile): - self.pyfile = pyfile - self.html = self.load(pyfile.url, decode=True) - - if not self._checkOnline(): - self.offline() - - pyfile.name = self._getName() - - link = self._getLink() - - if not link.startswith('http://'): - link = "http://fileshare.in.ua" + link - - self.download(link) - - def _checkOnline(self): - if re.search(self.PATTERN_OFFLINE, self.html): - return False - else: - return True - - def _getName(self): - name = re.search(self.PATTERN_FILENAME, self.html) - if name is None: - self.fail("%s: Plugin broken." % self.__name__) - - return name.group(1) - - def _getLink(self): - return re.search("", self.html).group(1) - - -def getInfo(urls): - result = [] - - for url in urls: - html = getURL(url) - - if re.search(FileshareInUa.PATTERN_OFFLINE, html): - result.append((url, 0, 1, url)) - else: - name = re.search(FileshareInUa.PATTERN_FILENAME, html) - - if name is None: - result.append((url, 0, 1, url)) - continue - - name = name.group(1) - size = re.search(FileshareInUa.PATTERN_FILESIZE, html) - size = parseFileSize(size.group(1)) - - result.append((name, size, 3, url)) - - yield result +getInfo = create_getInfo(FileshareInUa) -- cgit v1.2.3 From f76e5c2336718dca9da8033ba22cd83c72c7b3b3 Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Sat, 11 Oct 2014 15:14:28 +0200 Subject: Pattern update 1 --- module/plugins/PluginManager.py | 2 +- module/plugins/accounts/CzshareCom.py | 2 +- module/plugins/accounts/FastshareCz.py | 2 +- module/plugins/accounts/FilejungleCom.py | 2 +- module/plugins/accounts/FreakshareCom.py | 2 +- module/plugins/accounts/FshareVn.py | 2 +- module/plugins/accounts/HellshareCz.py | 2 +- module/plugins/accounts/MultishareCz.py | 2 +- module/plugins/accounts/TurbobitNet.py | 2 +- module/plugins/accounts/UlozTo.py | 2 +- module/plugins/accounts/UploadheroCom.py | 2 +- module/plugins/crypter/ChipDe.py | 2 +- module/plugins/crypter/CryptItCom.py | 2 +- module/plugins/crypter/DDLMusicOrg.py | 2 +- module/plugins/crypter/ILoadTo.py | 2 +- module/plugins/crypter/NCryptIn.py | 2 +- module/plugins/crypter/SafelinkingNet.py | 2 +- module/plugins/crypter/SecuredIn.py | 2 +- module/plugins/hooks/DeathByCaptcha.py | 2 +- module/plugins/hooks/ImageTyperz.py | 2 +- module/plugins/hooks/MergeFiles.py | 2 +- module/plugins/hooks/UpdateManager.py | 2 +- module/plugins/hoster/BayfilesCom.py | 6 +++--- module/plugins/hoster/BitshareCom.py | 2 +- module/plugins/hoster/CzshareCom.py | 4 ++-- module/plugins/hoster/DepositfilesCom.py | 2 +- module/plugins/hoster/DlFreeFr.py | 4 ++-- module/plugins/hoster/EdiskCz.py | 2 +- module/plugins/hoster/ExtabitCom.py | 2 +- module/plugins/hoster/FastixRu.py | 2 +- module/plugins/hoster/FileParadoxIn.py | 1 - module/plugins/hoster/FileStoreTo.py | 2 +- module/plugins/hoster/FilefactoryCom.py | 2 +- module/plugins/hoster/FileomCom.py | 2 +- module/plugins/hoster/FilepostCom.py | 2 +- module/plugins/hoster/FourSharedCom.py | 2 +- module/plugins/hoster/FreakshareCom.py | 4 ++-- module/plugins/hoster/FshareVn.py | 2 +- module/plugins/hoster/GamefrontCom.py | 6 +++--- module/plugins/hoster/HellshareCz.py | 2 +- module/plugins/hoster/HundredEightyUploadCom.py | 2 +- module/plugins/hoster/IfileIt.py | 2 +- module/plugins/hoster/JumbofilesCom.py | 2 +- module/plugins/hoster/MegaNz.py | 2 +- module/plugins/hoster/MegaRapidCz.py | 2 +- module/plugins/hoster/MegacrypterCom.py | 2 +- module/plugins/hoster/MegasharesCom.py | 2 +- module/plugins/hoster/NarodRu.py | 4 ++-- module/plugins/hoster/NosuploadCom.py | 2 +- module/plugins/hoster/NowDownloadEu.py | 8 ++++---- module/plugins/hoster/PornhostCom.py | 8 ++++---- module/plugins/hoster/PornhubCom.py | 2 +- module/plugins/hoster/QuickshareCz.py | 4 ++-- module/plugins/hoster/RapidgatorNet.py | 2 +- module/plugins/hoster/RapidshareCom.py | 2 +- module/plugins/hoster/RyushareCom.py | 2 +- module/plugins/hoster/SendspaceCom.py | 2 +- module/plugins/hoster/ShareplaceCom.py | 2 +- module/plugins/hoster/SoundcloudCom.py | 2 +- module/plugins/hoster/TurbobitNet.py | 2 +- module/plugins/hoster/TwoSharedCom.py | 2 +- module/plugins/hoster/UlozTo.py | 4 ++-- module/plugins/hoster/UloziskoSk.py | 2 +- module/plugins/hoster/UnibytesCom.py | 2 +- module/plugins/hoster/UploadStationCom.py | 2 +- module/plugins/hoster/UploadheroCom.py | 4 ++-- module/plugins/hoster/UploadingCom.py | 2 +- module/plugins/hoster/VeehdCom.py | 4 ++-- module/plugins/hoster/VidPlayNet.py | 1 - module/plugins/hoster/WrzucTo.py | 2 +- module/plugins/hoster/WuploadCom.py | 2 +- module/plugins/hoster/XVideosCom.py | 2 +- module/plugins/hoster/YourfilesTo.py | 2 +- module/plugins/hoster/ZDF.py | 4 ++-- module/plugins/internal/UnRar.py | 4 ++-- 75 files changed, 93 insertions(+), 95 deletions(-) (limited to 'module') diff --git a/module/plugins/PluginManager.py b/module/plugins/PluginManager.py index 9c7cab64c..e263f8e04 100644 --- a/module/plugins/PluginManager.py +++ b/module/plugins/PluginManager.py @@ -20,7 +20,7 @@ class PluginManager: TYPES = ("crypter", "container", "hoster", "captcha", "accounts", "hooks", "internal") PATTERN = re.compile(r'__pattern__.*=.*r("|\')([^"\']+)') - VERSION = re.compile(r'__version__.*=.*("|\')([0-9.]+)') + VERSION = re.compile(r'__version__.*=.*("|\')([\d.]+)') CONFIG = re.compile(r'__config__.*=.*\[([^\]]+)', re.MULTILINE) DESC = re.compile(r'__description__.?=.?("|"""|\')([^"\']+)') diff --git a/module/plugins/accounts/CzshareCom.py b/module/plugins/accounts/CzshareCom.py index c3c1bbcc8..ea24a4e71 100644 --- a/module/plugins/accounts/CzshareCom.py +++ b/module/plugins/accounts/CzshareCom.py @@ -17,7 +17,7 @@ class CzshareCom(Account): ("stickell", "l.stickell@yahoo.it")] - CREDIT_LEFT_PATTERN = r'\s*([0-9 ,]+) (KiB|MiB|GiB)\s*([^<]*)\s*' + CREDIT_LEFT_PATTERN = r'\s*([\d ,]+) (KiB|MiB|GiB)\s*([^<]*)\s*' def loadAccountInfo(self, user, req): diff --git a/module/plugins/accounts/FastshareCz.py b/module/plugins/accounts/FastshareCz.py index 62ea0ba7b..eadb9184c 100644 --- a/module/plugins/accounts/FastshareCz.py +++ b/module/plugins/accounts/FastshareCz.py @@ -16,7 +16,7 @@ class FastshareCz(Account): ("stickell", "l.stickell@yahoo.it")] - CREDIT_PATTERN = r'(?:Kredit|Credit)\s*\s*]*>([\d. \w]+) ' + CREDIT_PATTERN = r'(?:Kredit|Credit)\s*\s*]*>([\w.]+) ' def loadAccountInfo(self, user, req): diff --git a/module/plugins/accounts/FilejungleCom.py b/module/plugins/accounts/FilejungleCom.py index 2db3b1138..1301b34f2 100644 --- a/module/plugins/accounts/FilejungleCom.py +++ b/module/plugins/accounts/FilejungleCom.py @@ -19,7 +19,7 @@ class FilejungleCom(Account): login_timeout = 60 URL = "http://filejungle.com/" - TRAFFIC_LEFT_PATTERN = r'"/extend_premium\.php">Until (\d+ [A-Za-z]+ \d+)Until (\d+ \w+ \d+)' diff --git a/module/plugins/accounts/FreakshareCom.py b/module/plugins/accounts/FreakshareCom.py index 949e5a8ba..904c3ba3e 100644 --- a/module/plugins/accounts/FreakshareCom.py +++ b/module/plugins/accounts/FreakshareCom.py @@ -19,7 +19,7 @@ class FreakshareCom(Account): def loadAccountInfo(self, user, req): page = req.load("http://freakshare.com/") - validuntil = r"ltig bis:\s*([0-9 \-:.]+)" + validuntil = r"ltig bis:\s*([\d.:-]+)" validuntil = re.search(validuntil, page, re.MULTILINE) validuntil = validuntil.group(1).strip() validuntil = mktime(strptime(validuntil, "%d.%m.%Y - %H:%M")) diff --git a/module/plugins/accounts/FshareVn.py b/module/plugins/accounts/FshareVn.py index 11ad736f6..b208743e0 100644 --- a/module/plugins/accounts/FshareVn.py +++ b/module/plugins/accounts/FshareVn.py @@ -20,7 +20,7 @@ class FshareVn(Account): VALID_UNTIL_PATTERN = ur'
    Thời hạn dùng:
    \s*
    ([^<]+)
    ' LIFETIME_PATTERN = ur'
    Lần đăng nhập trước:
    \s*
    [^<]+
    ' - TRAFFIC_LEFT_PATTERN = ur'
    Tổng Dung Lượng Tài Khoản
    \s*]*>([0-9.]+) ([kKMG])B' + TRAFFIC_LEFT_PATTERN = ur'
    Tổng Dung Lượng Tài Khoản
    \s*]*>([\d.]+) ([kKMG])B' DIRECT_DOWNLOAD_PATTERN = ur']*)[^>]*/>Kích hoạt download trực tiếp' diff --git a/module/plugins/accounts/HellshareCz.py b/module/plugins/accounts/HellshareCz.py index 33d4df7d3..53c9906c1 100644 --- a/module/plugins/accounts/HellshareCz.py +++ b/module/plugins/accounts/HellshareCz.py @@ -56,7 +56,7 @@ class HellshareCz(Account): #Switch to English self.logDebug("Switch lang - URL: %s" % req.lastEffectiveURL) json = req.load("%s?do=locRouter-show" % req.lastEffectiveURL) - hash = re.search(r"(--[0-9a-f]+-)", json).group(1) + hash = re.search(r"(\-\-[0-9a-f]+\-)", json).group(1) self.logDebug("Switch lang - HASH: %s" % hash) html = req.load('http://www.hellshare.com/%s/' % hash) diff --git a/module/plugins/accounts/MultishareCz.py b/module/plugins/accounts/MultishareCz.py index 851599e89..6d2f0d64f 100644 --- a/module/plugins/accounts/MultishareCz.py +++ b/module/plugins/accounts/MultishareCz.py @@ -17,7 +17,7 @@ class MultishareCz(Account): __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] - TRAFFIC_LEFT_PATTERN = r'Kredit:\s*(?P[0-9,]+) (?P\w+)' + TRAFFIC_LEFT_PATTERN = r'Kredit:\s*(?P[\d,]+) (?P\w+)' ACCOUNT_INFO_PATTERN = r'' diff --git a/module/plugins/accounts/TurbobitNet.py b/module/plugins/accounts/TurbobitNet.py index 2db1bfa14..065668815 100644 --- a/module/plugins/accounts/TurbobitNet.py +++ b/module/plugins/accounts/TurbobitNet.py @@ -19,7 +19,7 @@ class TurbobitNet(Account): def loadAccountInfo(self, user, req): html = req.load("http://turbobit.net") - m = re.search(r'Turbo Access to ([0-9.]+)', html) + m = re.search(r'Turbo Access to ([\d.]+)', html) if m: premium = True validuntil = mktime(strptime(m.group(1), "%d.%m.%Y")) diff --git a/module/plugins/accounts/UlozTo.py b/module/plugins/accounts/UlozTo.py index 3663fb65d..2298e252b 100644 --- a/module/plugins/accounts/UlozTo.py +++ b/module/plugins/accounts/UlozTo.py @@ -16,7 +16,7 @@ class UlozTo(Account): ("pulpe", None)] - TRAFFIC_LEFT_PATTERN = r'
  • ' + FILE_SIZE_PATTERN = r'
    \s*File Size:\s*(?P[\d.,]+)(?P\w+)\s*
    ' OFFLINE_PATTERN = r'
    Sorry, the file you requested is not available.
    ' LINK_PATTERN = r'
    ' - USER_CAPTCHA_PATTERN = r'' + CAPTCHA_PATTERN = r'' + USER_CAPTCHA_PATTERN = r'' def handleFree(self): diff --git a/module/plugins/hoster/Share76Com.py b/module/plugins/hoster/Share76Com.py index 34b40ae0d..156dbbdbd 100644 --- a/module/plugins/hoster/Share76Com.py +++ b/module/plugins/hoster/Share76Com.py @@ -8,7 +8,7 @@ class Share76Com(DeadHoster): __type__ = "hoster" __version__ = "0.04" - __pattern__ = r'http://(?:www\.)?share76.com/\w{12}' + __pattern__ = r'http://(?:www\.)?share76\.com/\w{12}' __description__ = """Share76.com hoster plugin""" __license__ = "GPLv3" diff --git a/module/plugins/hoster/SharebeesCom.py b/module/plugins/hoster/SharebeesCom.py index 675bd2286..d90b0d170 100644 --- a/module/plugins/hoster/SharebeesCom.py +++ b/module/plugins/hoster/SharebeesCom.py @@ -8,7 +8,7 @@ class SharebeesCom(DeadHoster): __type__ = "hoster" __version__ = "0.02" - __pattern__ = r'http://(?:www\.)?sharebees.com/\w{12}' + __pattern__ = r'http://(?:www\.)?sharebees\.com/\w{12}' __description__ = """ShareBees hoster plugin""" __license__ = "GPLv3" diff --git a/module/plugins/hoster/ShareonlineBiz.py b/module/plugins/hoster/ShareonlineBiz.py index f3290af9e..cfb1d6325 100644 --- a/module/plugins/hoster/ShareonlineBiz.py +++ b/module/plugins/hoster/ShareonlineBiz.py @@ -41,7 +41,7 @@ class ShareonlineBiz(Hoster): __type__ = "hoster" __version__ = "0.40" - __pattern__ = r'https?://(?:www\.)?(share-online\.biz|egoshare\.com)/(download.php\?id=|dl/)(?P\w+)' + __pattern__ = r'https?://(?:www\.)?(share-online\.biz|egoshare\.com)/(download\.php\?id=|dl/)(?P\w+)' __description__ = """Shareonline.biz hoster plugin""" __license__ = "GPLv3" diff --git a/module/plugins/hoster/ShragleCom.py b/module/plugins/hoster/ShragleCom.py index 0a78cfcd0..31a52181e 100644 --- a/module/plugins/hoster/ShragleCom.py +++ b/module/plugins/hoster/ShragleCom.py @@ -8,7 +8,7 @@ class ShragleCom(DeadHoster): __type__ = "hoster" __version__ = "0.22" - __pattern__ = r'http://(?:www\.)?(cloudnator|shragle).com/files/(?P.*?)/' + __pattern__ = r'http://(?:www\.)?(cloudnator|shragle)\.com/files/(?P.*?)/' __description__ = """Cloudnator.com (Shragle.com) hoster plugin""" __license__ = "GPLv3" diff --git a/module/plugins/hoster/SimplydebridCom.py b/module/plugins/hoster/SimplydebridCom.py index 7476cf45e..c7df990e3 100644 --- a/module/plugins/hoster/SimplydebridCom.py +++ b/module/plugins/hoster/SimplydebridCom.py @@ -10,7 +10,7 @@ class SimplydebridCom(Hoster): __type__ = "hoster" __version__ = "0.1" - __pattern__ = r'http://(?:www\.)?\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/sd.php/*' + __pattern__ = r'http://(?:www\.)?\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/sd\.php/*' __description__ = """Simply-debrid.com hoster plugin""" __license__ = "GPLv3" diff --git a/module/plugins/hoster/SpeedfileCz.py b/module/plugins/hoster/SpeedfileCz.py index 5d50b9bff..bb052d025 100644 --- a/module/plugins/hoster/SpeedfileCz.py +++ b/module/plugins/hoster/SpeedfileCz.py @@ -8,7 +8,7 @@ class SpeedfileCz(DeadHoster): __type__ = "hoster" __version__ = "0.32" - __pattern__ = r'http://(?:www\.)?speedfile.cz/.*' + __pattern__ = r'http://(?:www\.)?speedfile\.cz/.*' __description__ = """Speedfile.cz hoster plugin""" __license__ = "GPLv3" diff --git a/module/plugins/hoster/SpeedyshareCom.py b/module/plugins/hoster/SpeedyshareCom.py index e2968835d..11b327475 100644 --- a/module/plugins/hoster/SpeedyshareCom.py +++ b/module/plugins/hoster/SpeedyshareCom.py @@ -27,7 +27,7 @@ class SpeedyshareCom(SimpleHoster): FILE_OFFLINE_PATTERN = r'class=downloadfilenamenotfound>.*' - LINK_PATTERN = r'\'Slow\'Slow' + FILE_NAME_PATTERN = r'' OFFLINE_PATTERN = r'

    Str.nku nebylo mo.n. nal.zt \(404\)

    ' CDN_PATTERN = r'\d+)(?:&cdnLQ=(?P\d*))?(?:&cdnHQ=(?P\d*))?(?:&cdnHD=(?P\d*))?&' diff --git a/module/plugins/hoster/StreamcloudEu.py b/module/plugins/hoster/StreamcloudEu.py index 1df5ca13c..e6a2b0226 100644 --- a/module/plugins/hoster/StreamcloudEu.py +++ b/module/plugins/hoster/StreamcloudEu.py @@ -22,7 +22,7 @@ class StreamcloudEu(XFSPHoster): HOSTER_NAME = "streamcloud.eu" - LINK_PATTERN = r'file: "(http://(stor|cdn)\d+\.streamcloud.eu:?\d*/.*/video\.(mp4|flv))",' + LINK_PATTERN = r'file: "(http://(stor|cdn)\d+\.streamcloud\.eu:?\d*/.*/video\.(mp4|flv))",' def setup(self): diff --git a/module/plugins/hoster/TurbouploadCom.py b/module/plugins/hoster/TurbouploadCom.py index f6a6dee41..7696ee334 100644 --- a/module/plugins/hoster/TurbouploadCom.py +++ b/module/plugins/hoster/TurbouploadCom.py @@ -8,7 +8,7 @@ class TurbouploadCom(DeadHoster): __type__ = "hoster" __version__ = "0.03" - __pattern__ = r'http://(?:www\.)?turboupload.com/(\w+).*' + __pattern__ = r'http://(?:www\.)?turboupload\.com/(\w+).*' __description__ = """Turboupload.com hoster plugin""" __license__ = "GPLv3" diff --git a/module/plugins/hoster/TusfilesNet.py b/module/plugins/hoster/TusfilesNet.py index f39e59d88..b976506de 100644 --- a/module/plugins/hoster/TusfilesNet.py +++ b/module/plugins/hoster/TusfilesNet.py @@ -18,7 +18,7 @@ class TusfilesNet(XFSPHoster): HOSTER_NAME = "tusfiles.net" - FILE_INFO_PATTERN = r'\](?P.+) - (?P[\d.]+) (?P\w+)\[' + FILE_INFO_PATTERN = r'\](?P.+) - (?P[\d.,]+) (?P\w+)\[' OFFLINE_PATTERN = r'>File Not Found|TusFiles - Fast Sharing Files!' diff --git a/module/plugins/hoster/TwoSharedCom.py b/module/plugins/hoster/TwoSharedCom.py index 44c927f4b..03dad69dd 100644 --- a/module/plugins/hoster/TwoSharedCom.py +++ b/module/plugins/hoster/TwoSharedCom.py @@ -10,7 +10,7 @@ class TwoSharedCom(SimpleHoster): __type__ = "hoster" __version__ = "0.11" - __pattern__ = r'http://(?:www\.)?2shared.com/(account/)?(download|get|file|document|photo|video|audio)/.*' + __pattern__ = r'http://(?:www\.)?2shared\.com/(account/)?(download|get|file|document|photo|video|audio)/.*' __description__ = """2Shared.com hoster plugin""" __license__ = "GPLv3" diff --git a/module/plugins/hoster/UlozTo.py b/module/plugins/hoster/UlozTo.py index 9b6842ae7..3759c0c7b 100644 --- a/module/plugins/hoster/UlozTo.py +++ b/module/plugins/hoster/UlozTo.py @@ -17,7 +17,7 @@ class UlozTo(SimpleHoster): __type__ = "hoster" __version__ = "0.98" - __pattern__ = r'http://(?:www\.)?(uloz\.to|ulozto\.(cz|sk|net)|bagruj.cz|zachowajto.pl)/(?:live/)?(?P<id>\w+/[^/?]*)' + __pattern__ = r'http://(?:www\.)?(uloz\.to|ulozto\.(cz|sk|net)|bagruj\.cz|zachowajto\.pl)/(?:live/)?(?P<id>\w+/[^/?]*)' __description__ = """Uloz.to hoster plugin""" __license__ = "GPLv3" @@ -25,8 +25,8 @@ class UlozTo(SimpleHoster): FILE_INFO_PATTERN = r'<p>File <strong>(?P<N>[^<]+)</strong> is password protected</p>' - FILE_NAME_PATTERN = r'<title>(?P<N>[^<]+) \| Uloz.to' - FILE_SIZE_PATTERN = r'.*?(?P[\d.]+\s[kMG]?B)' + FILE_NAME_PATTERN = r'(?P<N>[^<]+) \| Uloz\.to' + FILE_SIZE_PATTERN = r'.*?(?P[\d.,]+\s[kMG]?B)' OFFLINE_PATTERN = r'404 - Page not found|

    File (has been deleted|was banned)

    ' FILE_SIZE_REPLACEMENTS = [('([\d.]+)\s([kMG])B', convertDecimalPrefix)] diff --git a/module/plugins/hoster/UloziskoSk.py b/module/plugins/hoster/UloziskoSk.py index 536830bd9..7666678cd 100644 --- a/module/plugins/hoster/UloziskoSk.py +++ b/module/plugins/hoster/UloziskoSk.py @@ -10,7 +10,7 @@ class UloziskoSk(SimpleHoster): __type__ = "hoster" __version__ = "0.23" - __pattern__ = r'http://(?:www\.)?ulozisko.sk/.*' + __pattern__ = r'http://(?:www\.)?ulozisko\.sk/.*' __description__ = """Ulozisko.sk hoster plugin""" __license__ = "GPLv3" @@ -18,12 +18,12 @@ class UloziskoSk(SimpleHoster): FILE_NAME_PATTERN = r'
    (?P[^<]+)
    ' - FILE_SIZE_PATTERN = ur'Veľkosť súboru: (?P[\d.]+) (?P\w+)
    ' + FILE_SIZE_PATTERN = ur'Veľkosť súboru: (?P[\d.,]+) (?P\w+)
    ' OFFLINE_PATTERN = ur'Zadaný súbor neexistuje z jedného z nasledujúcich dôvodov:' LINK_PATTERN = r'' ID_PATTERN = r'' - CAPTCHA_PATTERN = r'' + CAPTCHA_PATTERN = r'' IMG_PATTERN = ur'PRE ZVÄČŠENIE KLIKNITE NA OBRÁZOK
    ' diff --git a/module/plugins/hoster/UploadheroCom.py b/module/plugins/hoster/UploadheroCom.py index ced5762ba..914886fca 100644 --- a/module/plugins/hoster/UploadheroCom.py +++ b/module/plugins/hoster/UploadheroCom.py @@ -27,7 +27,7 @@ class UploadheroCom(SimpleHoster): COOKIES = [(".uploadhero.co", "lang", "en")] - IP_BLOCKED_PATTERN = r'href="(/lightbox_block_download.php\?min=.*?)"' + IP_BLOCKED_PATTERN = r'href="(/lightbox_block_download\.php\?min=.*?)"' IP_WAIT_PATTERN = r'(\d+).*\s*(\d+)' CAPTCHA_PATTERN = r'"(/captchadl\.php\?\w+)"' diff --git a/module/plugins/hoster/UploadingCom.py b/module/plugins/hoster/UploadingCom.py index 6a457602f..a55790441 100644 --- a/module/plugins/hoster/UploadingCom.py +++ b/module/plugins/hoster/UploadingCom.py @@ -23,7 +23,7 @@ class UploadingCom(SimpleHoster): FILE_NAME_PATTERN = r'id="file_title">(?P.+)(?P[\d.]+) (?P\w+)<' + FILE_SIZE_PATTERN = r'size tip_container">(?P[\d.,]+) (?P\w+)<' OFFLINE_PATTERN = r'(Page|file) not found' COOKIES = [(".uploading.com", "lang", "1"), diff --git a/module/plugins/hoster/UpstoreNet.py b/module/plugins/hoster/UpstoreNet.py index 2eb88afef..ef9cd9e5d 100644 --- a/module/plugins/hoster/UpstoreNet.py +++ b/module/plugins/hoster/UpstoreNet.py @@ -18,7 +18,7 @@ class UpstoreNet(SimpleHoster): __authors__ = [("igel", "igelkun@myopera.com")] - FILE_INFO_PATTERN = r'
    .*?
    \s*\n

    (?P.*?)

    \s*\n
    \s*\n\s*(?P[\d.]+) (?P\w+)' + FILE_INFO_PATTERN = r'
    .*?
    \s*\n

    (?P.*?)

    \s*\n
    \s*\n\s*(?P[\d.,]+) (?P\w+)' OFFLINE_PATTERN = r'File not found' WAIT_PATTERN = r'var sec = (\d+)' diff --git a/module/plugins/hoster/UptoboxCom.py b/module/plugins/hoster/UptoboxCom.py index d1ed81843..3b3757bb2 100644 --- a/module/plugins/hoster/UptoboxCom.py +++ b/module/plugins/hoster/UptoboxCom.py @@ -19,7 +19,7 @@ class UptoboxCom(XFSPHoster): HOSTER_NAME = "uptobox.com" - FILE_INFO_PATTERN = r'"para_title">(?P.+) \((?P[\d.]+) (?P\w+)\)' + FILE_INFO_PATTERN = r'"para_title">(?P.+) \((?P[\d.,]+) (?P\w+)\)' OFFLINE_PATTERN = r'>(File not found|Access Denied|404 Not Found)' WAIT_PATTERN = r'>(\d+) seconds<' diff --git a/module/plugins/hoster/WebshareCz.py b/module/plugins/hoster/WebshareCz.py index b1163825d..8412de7b8 100644 --- a/module/plugins/hoster/WebshareCz.py +++ b/module/plugins/hoster/WebshareCz.py @@ -26,7 +26,7 @@ class WebshareCz(SimpleHoster): __type__ = "hoster" __version__ = "0.13" - __pattern__ = r'https?://(?:www\.)?webshare.cz/(?:#/)?file/(?P\w+)' + __pattern__ = r'https?://(?:www\.)?webshare\.cz/(?:#/)?file/(?P\w+)' __description__ = """WebShare.cz hoster plugin""" __license__ = "GPLv3" diff --git a/module/plugins/hoster/X7To.py b/module/plugins/hoster/X7To.py index 2288a750a..87fa2e8a1 100644 --- a/module/plugins/hoster/X7To.py +++ b/module/plugins/hoster/X7To.py @@ -8,7 +8,7 @@ class X7To(DeadHoster): __type__ = "hoster" __version__ = "0.41" - __pattern__ = r'http://(?:www\.)?x7.to/' + __pattern__ = r'http://(?:www\.)?x7\.to/' __description__ = """X7.to hoster plugin""" __license__ = "GPLv3" diff --git a/module/plugins/hoster/YibaishiwuCom.py b/module/plugins/hoster/YibaishiwuCom.py index c015a596b..bbf6e7bbe 100644 --- a/module/plugins/hoster/YibaishiwuCom.py +++ b/module/plugins/hoster/YibaishiwuCom.py @@ -11,7 +11,7 @@ class YibaishiwuCom(SimpleHoster): __type__ = "hoster" __version__ = "0.12" - __pattern__ = r'http://(?:www\.)?(?:u\.)?115.com/file/(?P\w+)' + __pattern__ = r'http://(?:www\.)?(?:u\.)?115\.com/file/(?P\w+)' __description__ = """115.com hoster plugin""" __license__ = "GPLv3" diff --git a/module/plugins/hoster/ZippyshareCom.py b/module/plugins/hoster/ZippyshareCom.py index 24e5bf68c..f2ba853fc 100644 --- a/module/plugins/hoster/ZippyshareCom.py +++ b/module/plugins/hoster/ZippyshareCom.py @@ -21,7 +21,7 @@ class ZippyshareCom(SimpleHoster): FILE_NAME_PATTERN = r'>Name:.+?">(?P.+?)<' - FILE_SIZE_PATTERN = r'>Size:.+?">(?P[\d.]+) (?P\w+)' + FILE_SIZE_PATTERN = r'>Size:.+?">(?P[\d.,]+) (?P\w+)' OFFLINE_PATTERN = r'>File does not exist on this server<' -- cgit v1.2.3 From 8939f015a688a07ec7d0bd14b6a3704f6a2cb4a0 Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Sat, 11 Oct 2014 15:12:40 +0200 Subject: Pattern update 3 --- module/plugins/accounts/DebridItaliaCom.py | 2 +- module/plugins/accounts/FilerNet.py | 2 +- module/plugins/accounts/FreakshareCom.py | 4 ++-- module/plugins/accounts/NetloadIn.py | 2 +- module/plugins/crypter/DataHuFolder.py | 2 +- module/plugins/crypter/LinkSaveIn.py | 2 +- module/plugins/crypter/LixIn.py | 2 +- module/plugins/crypter/MediafireComFolder.py | 2 +- module/plugins/crypter/NCryptIn.py | 4 ++-- module/plugins/crypter/RelinkUs.py | 2 +- module/plugins/crypter/ShareLinksBiz.py | 4 ++-- module/plugins/crypter/TurbobitNetFolder.py | 2 +- module/plugins/hooks/LinkdecrypterCom.py | 2 +- module/plugins/hooks/XFileSharingPro.py | 2 +- module/plugins/hoster/BayfilesCom.py | 2 +- module/plugins/hoster/CrockoCom.py | 2 +- module/plugins/hoster/CzshareCom.py | 2 +- module/plugins/hoster/DlFreeFr.py | 2 +- module/plugins/hoster/FilecloudIo.py | 6 +++--- module/plugins/hoster/FileomCom.py | 2 +- module/plugins/hoster/FilepostCom.py | 4 ++-- module/plugins/hoster/FileserveCom.py | 2 +- module/plugins/hoster/GamefrontCom.py | 2 +- module/plugins/hoster/IfileIt.py | 2 +- module/plugins/hoster/IfolderRu.py | 2 +- module/plugins/hoster/LetitbitNet.py | 2 +- module/plugins/hoster/LuckyShareNet.py | 2 +- module/plugins/hoster/MediafireCom.py | 6 +++--- module/plugins/hoster/MyvideoDe.py | 2 +- module/plugins/hoster/NetloadIn.py | 4 ++-- module/plugins/hoster/PromptfileCom.py | 2 +- module/plugins/hoster/RapidgatorNet.py | 4 ++-- module/plugins/hoster/SpeedyshareCom.py | 2 +- module/plugins/hoster/TurbobitNet.py | 2 +- module/plugins/hoster/TwoSharedCom.py | 2 +- module/plugins/hoster/XHamsterCom.py | 8 ++++---- module/plugins/hoster/YibaishiwuCom.py | 4 ++-- module/plugins/hoster/YoupornCom.py | 2 +- module/plugins/internal/CaptchaService.py | 4 ++-- module/plugins/internal/MultiHoster.py | 4 ++-- 40 files changed, 56 insertions(+), 56 deletions(-) (limited to 'module') diff --git a/module/plugins/accounts/DebridItaliaCom.py b/module/plugins/accounts/DebridItaliaCom.py index c8bc89159..754d3467d 100644 --- a/module/plugins/accounts/DebridItaliaCom.py +++ b/module/plugins/accounts/DebridItaliaCom.py @@ -16,7 +16,7 @@ class DebridItaliaCom(Account): __authors__ = [("stickell", "l.stickell@yahoo.it")] - WALID_UNTIL_PATTERN = r"Premium valid till: (?P[^|]+) \|" + WALID_UNTIL_PATTERN = r'Premium valid till: (?P[^|]+) \|' def loadAccountInfo(self, user, req): diff --git a/module/plugins/accounts/FilerNet.py b/module/plugins/accounts/FilerNet.py index 811d7c8a1..a459f88f0 100644 --- a/module/plugins/accounts/FilerNet.py +++ b/module/plugins/accounts/FilerNet.py @@ -18,7 +18,7 @@ class FilerNet(Account): TOKEN_PATTERN = r'_csrf_token" value="([^"]+)" />' - WALID_UNTIL_PATTERN = r"Der Premium-Zugang ist gültig bis (.+)\.\s*" + WALID_UNTIL_PATTERN = r'Der Premium-Zugang ist gültig bis (.+)\.\s*' TRAFFIC_PATTERN = r'Traffic\s*([^<]+)' FREE_PATTERN = r'Account Status\s*\s*Free' diff --git a/module/plugins/accounts/FreakshareCom.py b/module/plugins/accounts/FreakshareCom.py index 904c3ba3e..86f2b5a3e 100644 --- a/module/plugins/accounts/FreakshareCom.py +++ b/module/plugins/accounts/FreakshareCom.py @@ -19,12 +19,12 @@ class FreakshareCom(Account): def loadAccountInfo(self, user, req): page = req.load("http://freakshare.com/") - validuntil = r"ltig bis:\s*([\d.:-]+)" + validuntil = r'ltig bis:\s*([\d.:-]+)' validuntil = re.search(validuntil, page, re.MULTILINE) validuntil = validuntil.group(1).strip() validuntil = mktime(strptime(validuntil, "%d.%m.%Y - %H:%M")) - traffic = r"Traffic verbleibend:\s*([^<]+)" + traffic = r'Traffic verbleibend:\s*([^<]+)' traffic = re.search(traffic, page, re.MULTILINE) traffic = traffic.group(1).strip() traffic = self.parseTraffic(traffic) diff --git a/module/plugins/accounts/NetloadIn.py b/module/plugins/accounts/NetloadIn.py index 01d6f4476..4bb4c7124 100755 --- a/module/plugins/accounts/NetloadIn.py +++ b/module/plugins/accounts/NetloadIn.py @@ -19,7 +19,7 @@ class NetloadIn(Account): def loadAccountInfo(self, user, req): page = req.load("http://netload.in/index.php?id=2&lang=de") - left = r">(\d+) (Tag|Tage), (\d+) Stunden<" + left = r'>(\d+) (Tag|Tage), (\d+) Stunden<' left = re.search(left, page) if left: validuntil = time() + int(left.group(1)) * 24 * 60 * 60 + int(left.group(3)) * 60 * 60 diff --git a/module/plugins/crypter/DataHuFolder.py b/module/plugins/crypter/DataHuFolder.py index c4dd21d30..86e816c04 100644 --- a/module/plugins/crypter/DataHuFolder.py +++ b/module/plugins/crypter/DataHuFolder.py @@ -18,7 +18,7 @@ class DataHuFolder(SimpleCrypter): ("stickell", "l.stickell@yahoo.it")] - LINK_PATTERN = r"\1" + LINK_PATTERN = r'\1' TITLE_PATTERN = ur'(.+) Let\xf6lt\xe9se' diff --git a/module/plugins/crypter/LinkSaveIn.py b/module/plugins/crypter/LinkSaveIn.py index af3679122..81768e457 100644 --- a/module/plugins/crypter/LinkSaveIn.py +++ b/module/plugins/crypter/LinkSaveIn.py @@ -178,7 +178,7 @@ class LinkSaveIn(SimpleCrypter): self.logDebug("Seach for %s Container links" % type_.upper()) if not type_.isalnum(): # check to prevent broken re-pattern (cnl2,rsdf,ccf,dlc,web are all alpha-numeric) self.fail('unknown container type "%s" (this is probably a bug)' % type_) - pattern = r"\('%s_link'\).href=unescape\('(.*?\.%s)'\)" % (type_, type_) + pattern = r'\(\'%s_link\'\).href=unescape\(\'(.*?\.%s)\'\)' % (type_, type_) containersLinks = re.findall(pattern, self.html) self.logDebug("Found %d %s Container links" % (len(containersLinks), type_.upper())) for containerLink in containersLinks: diff --git a/module/plugins/crypter/LixIn.py b/module/plugins/crypter/LixIn.py index 28b72237b..32423e228 100644 --- a/module/plugins/crypter/LixIn.py +++ b/module/plugins/crypter/LixIn.py @@ -18,7 +18,7 @@ class LixIn(Crypter): CAPTCHA_PATTERN = r'' diff --git a/module/plugins/crypter/NCryptIn.py b/module/plugins/crypter/NCryptIn.py index 9eb242363..64ce973e8 100644 --- a/module/plugins/crypter/NCryptIn.py +++ b/module/plugins/crypter/NCryptIn.py @@ -231,7 +231,7 @@ class NCryptIn(Crypter): self.logDebug("Handling Container links") package_links = [] - pattern = r"/container/(rsdf|dlc|ccf)/(\w+)" + pattern = r'/container/(rsdf|dlc|ccf)/(\w+)' containersLinks = re.findall(pattern, self.html) self.logDebug("Decrypting %d Container links" % len(containersLinks)) for containerLink in containersLinks: @@ -243,7 +243,7 @@ class NCryptIn(Crypter): def handleWebLinks(self): self.logDebug("Handling Web links") - pattern = r"(http://ncrypt\.in/link-.*?=)" + pattern = r'(http://ncrypt\.in/link-.*?=)' links = re.findall(pattern, self.html) package_links = [] diff --git a/module/plugins/crypter/RelinkUs.py b/module/plugins/crypter/RelinkUs.py index 7b6dff328..d99b7fb1a 100644 --- a/module/plugins/crypter/RelinkUs.py +++ b/module/plugins/crypter/RelinkUs.py @@ -41,7 +41,7 @@ class RelinkUs(Crypter): CNL2_CRYPTED_KEY = "crypted" DLC_LINK_REGEX = r'' DLC_DOWNLOAD_URL = r'http://www\.relink\.us/download\.php' - WEB_FORWARD_REGEX = r"getFile\('(?P.+)'\)" + WEB_FORWARD_REGEX = r'getFile\(\'(?P.+)\'\)' WEB_FORWARD_URL = r'http://www\.relink\.us/frame\.php' WEB_LINK_REGEX = r'' diff --git a/module/plugins/crypter/ShareLinksBiz.py b/module/plugins/crypter/ShareLinksBiz.py index af2e5245f..9d4cfbb43 100644 --- a/module/plugins/crypter/ShareLinksBiz.py +++ b/module/plugins/crypter/ShareLinksBiz.py @@ -178,7 +178,7 @@ class ShareLinksBiz(Crypter): self.logDebug("Handling Web links") #@TODO: Gather paginated web links - pattern = r"javascript:_get\('(.*?)', \d+, ''\)" + pattern = r'javascript:_get\(\'(.*?)\', \d+, \'\'\)' ids = re.findall(pattern, self.html) self.logDebug("Decrypting %d Web links" % len(ids)) for i, ID in enumerate(ids): @@ -204,7 +204,7 @@ class ShareLinksBiz(Crypter): package_links = [] self.logDebug("Handling Container links") - pattern = r"javascript:_get\('(.*?)', 0, '(rsdf|ccf|dlc)'\)" + pattern = r'javascript:_get\(\'(.*?)\', 0, \'(rsdf|ccf|dlc)\'\)' containersLinks = re.findall(pattern, self.html) self.logDebug("Decrypting %d Container links" % len(containersLinks)) for containerLink in containersLinks: diff --git a/module/plugins/crypter/TurbobitNetFolder.py b/module/plugins/crypter/TurbobitNetFolder.py index b0f341209..390520d88 100644 --- a/module/plugins/crypter/TurbobitNetFolder.py +++ b/module/plugins/crypter/TurbobitNetFolder.py @@ -19,7 +19,7 @@ class TurbobitNetFolder(SimpleCrypter): ("Walter Purcaro", "vuolter@gmail.com")] - TITLE_PATTERN = r"src='/js/lib/grid/icon/folder.png'> (.+?)" + TITLE_PATTERN = r'src=\'/js/lib/grid/icon/folder.png\'> (.+?)' def _getLinks(self, id, page=1): diff --git a/module/plugins/hooks/LinkdecrypterCom.py b/module/plugins/hooks/LinkdecrypterCom.py index df1fbee9a..de08e406a 100644 --- a/module/plugins/hooks/LinkdecrypterCom.py +++ b/module/plugins/hooks/LinkdecrypterCom.py @@ -46,7 +46,7 @@ class LinkdecrypterCom(Hook): self.logError(_("Crypter list is empty")) return - regexp = r"https?://([^.]+\.)*?(%s)/.*" % "|".join(online) + regexp = r'https?://([^.]+\.)*?(%s)/.*' % '|'.join(online) dict = self.core.pluginManager.crypterPlugins[self.__name__] dict['pattern'] = regexp diff --git a/module/plugins/hooks/XFileSharingPro.py b/module/plugins/hooks/XFileSharingPro.py index 46c693cf6..741912457 100644 --- a/module/plugins/hooks/XFileSharingPro.py +++ b/module/plugins/hooks/XFileSharingPro.py @@ -61,7 +61,7 @@ class XFileSharingPro(Hook): self.unload() return - regexp = r"http://(?:[^/]*\.)?(%s)/(?:embed-)?\w{12}" % ("|".join(sorted(hoster_list)).replace('.', '\.')) + regexp = r'http://(?:[^/]*\.)?(%s)/(?:embed-)?\w{12}' % ('|'.join(sorted(hoster_list)).replace('.', '\.')) dict = self.core.pluginManager.hosterPlugins['XFileSharingPro'] dict['pattern'] = regexp diff --git a/module/plugins/hoster/BayfilesCom.py b/module/plugins/hoster/BayfilesCom.py index 98c5d27ba..5f097ee2f 100644 --- a/module/plugins/hoster/BayfilesCom.py +++ b/module/plugins/hoster/BayfilesCom.py @@ -26,7 +26,7 @@ class BayfilesCom(SimpleHoster): WAIT_PATTERN = r'>Your IP [\d.]* has recently downloaded a file\. Upgrade to premium or wait (\d+) minutes\.<' VARS_PATTERN = r'var vfid = (\d+);\s*var delay = (\d+);' - FREE_LINK_PATTERN = r"javascript:window.location.href = '([^']+)';" + FREE_LINK_PATTERN = r'javascript:window\.location\.href = \'(.+?)\';' PREMIUM_LINK_PATTERN = r'(?:Download:\s*(?P.*)' FILE_SIZE_PATTERN = r'(?P[^<]+)' - OFFLINE_PATTERN = r"

    Sorry,
    the page you're looking for
    isn't here.

    |File not found" + OFFLINE_PATTERN = r'

    Sorry,
    the page you\'re looking for
    isn\'t here.

    |File not found' CAPTCHA_URL_PATTERN = re.compile(r"u='(/file_contents/captcha/\w+)';\s*w='(\d+)';") diff --git a/module/plugins/hoster/CzshareCom.py b/module/plugins/hoster/CzshareCom.py index 8ca4fd8a5..9d2b8b35f 100644 --- a/module/plugins/hoster/CzshareCom.py +++ b/module/plugins/hoster/CzshareCom.py @@ -34,7 +34,7 @@ class CzshareCom(SimpleHoster): FREE_FORM_PATTERN = r'\s*(.*?)' PREMIUM_FORM_PATTERN = r'
    (.*?)
    ' FORM_INPUT_PATTERN = r']* name="([^"]+)" value="([^"]+)"[^>]*/>' - MULTIDL_PATTERN = r"

    Z[^<]*PROFI.

    " + MULTIDL_PATTERN = r'

    Z[^<]*PROFI.

    ' USER_CREDIT_PATTERN = r'
    \s*kredit: ([\d .,]+)(\w+)\s*
    ' diff --git a/module/plugins/hoster/DlFreeFr.py b/module/plugins/hoster/DlFreeFr.py index 85e8e0eb3..b3ed346fe 100644 --- a/module/plugins/hoster/DlFreeFr.py +++ b/module/plugins/hoster/DlFreeFr.py @@ -125,7 +125,7 @@ class DlFreeFr(SimpleHoster): FILE_NAME_PATTERN = r'Fichier:\s*]*>(?P[^>]*)' FILE_SIZE_PATTERN = r'Taille:\s*]*>(?P[\d.,]+\w)o' - OFFLINE_PATTERN = r"Erreur 404 - Document non trouv|Fichier inexistant|Le fichier demandé n'a pas été trouvé" + OFFLINE_PATTERN = r'Erreur 404 - Document non trouv|Fichier inexistant|Le fichier demandé n\'a pas été trouvé' def setup(self): diff --git a/module/plugins/hoster/FilecloudIo.py b/module/plugins/hoster/FilecloudIo.py index 6d60bf793..da7683160 100644 --- a/module/plugins/hoster/FilecloudIo.py +++ b/module/plugins/hoster/FilecloudIo.py @@ -25,10 +25,10 @@ class FilecloudIo(SimpleHoster): OFFLINE_PATTERN = r'l10n\.(FILES__DOESNT_EXIST|REMOVED)' TEMP_OFFLINE_PATTERN = r'l10n\.FILES__WARNING' - UKEY_PATTERN = r"'ukey'\s*:'(\w+)'," - AB1_PATTERN = r"if\( __ab1 == '(\w+)' \)" + UKEY_PATTERN = r'\'ukey\'\s*:\'(\w+)' + AB1_PATTERN = r'if\( __ab1 == \'(\w+)\' \)' ERROR_MSG_PATTERN = r'var __error_msg\s*=\s*l10n\.(.*?);' - RECAPTCHA_PATTERN = r"var __recaptcha_public\s*=\s*'([^']+)';" + RECAPTCHA_PATTERN = r'var __recaptcha_public\s*=\s*\'(.+?)\';' LINK_PATTERN = r'"(http://s\d+\.filecloud\.io/%s/\d+/.*?)"' diff --git a/module/plugins/hoster/FileomCom.py b/module/plugins/hoster/FileomCom.py index 80ee35c1c..6c8be59da 100644 --- a/module/plugins/hoster/FileomCom.py +++ b/module/plugins/hoster/FileomCom.py @@ -27,7 +27,7 @@ class FileomCom(XFSPHoster): ERROR_PATTERN = r'class=["\']err["\'][^>]*>(.*?)(?:\'| Invalid or Deleted File.
    |
    ' PREMIUM_ONLY_PATTERN = r'members only. Please upgrade to premium|a premium membership is required to download this file' - RECAPTCHA_PATTERN = r"Captcha.init\({\s*key:\s*'([^']+)'" - FLP_TOKEN_PATTERN = r"set_store_options\({token: '([^']+)'" + RECAPTCHA_PATTERN = r'Captcha.init\({\s*key:\s*\'(.+?)\'' + FLP_TOKEN_PATTERN = r'set_store_options\({token: \'(.+?)\'' def handleFree(self): diff --git a/module/plugins/hoster/FileserveCom.py b/module/plugins/hoster/FileserveCom.py index ae38ee890..4e722eb9f 100644 --- a/module/plugins/hoster/FileserveCom.py +++ b/module/plugins/hoster/FileserveCom.py @@ -50,7 +50,7 @@ class FileserveCom(Hoster): LINKCHECK_TR = r'\s*(http://www\.fileserve\.com/file/.*?)' LINKCHECK_TD = r'(?:<[^>]*>| )*([^<]*)' - CAPTCHA_KEY_PATTERN = r"var reCAPTCHA_publickey='(?P[^']+)'" + CAPTCHA_KEY_PATTERN = r'var reCAPTCHA_publickey=\'(?P.+?)\'' LONG_WAIT_PATTERN = r'
  • You need to wait (\d+) (\w+) to start another download\.
  • ' LINK_EXPIRED_PATTERN = r'Your download link has expired' DAILY_LIMIT_PATTERN = r'Your daily download limit has been reached' diff --git a/module/plugins/hoster/GamefrontCom.py b/module/plugins/hoster/GamefrontCom.py index a9faf6783..b7e7f0bc8 100644 --- a/module/plugins/hoster/GamefrontCom.py +++ b/module/plugins/hoster/GamefrontCom.py @@ -21,7 +21,7 @@ class GamefrontCom(Hoster): PATTERN_FILENAME = r'(.*?) | Game Front' PATTERN_FILESIZE = r'<dt>File Size:</dt>[\n\s]*<dd>(.*?)</dd>' - PATTERN_OFFLINE = r"This file doesn't exist, or has been removed." + PATTERN_OFFLINE = r'This file doesn\'t exist, or has been removed.' def setup(self): diff --git a/module/plugins/hoster/IfileIt.py b/module/plugins/hoster/IfileIt.py index e368f5f78..6fb8e992f 100644 --- a/module/plugins/hoster/IfileIt.py +++ b/module/plugins/hoster/IfileIt.py @@ -20,7 +20,7 @@ class IfileIt(SimpleHoster): LINK_PATTERN = r'</span> If it doesn\'t, <a target="_blank" href="([^"]+)">' - RECAPTCHA_PATTERN = r"var __recaptcha_public\s*=\s*'([^']+)';" + RECAPTCHA_PATTERN = r'var __recaptcha_public\s*=\s*\'(.+?)\'' FILE_INFO_PATTERN = r'<span style="cursor: default;[^>]*>\s*(?P<N>.*?)\s* \s*<strong>\s*(?P<S>[\d.,]+)\s*(?P<U>\w+)\s*</strong>\s*</span>' OFFLINE_PATTERN = r'<span style="cursor: default;[^>]*>\s* \s*<strong>\s*</strong>\s*</span>' TEMP_OFFLINE_PATTERN = r'<span class="msg_red">Downloading of this file is temporarily disabled</span>' diff --git a/module/plugins/hoster/IfolderRu.py b/module/plugins/hoster/IfolderRu.py index 63b49dad8..774761049 100644 --- a/module/plugins/hoster/IfolderRu.py +++ b/module/plugins/hoster/IfolderRu.py @@ -24,7 +24,7 @@ class IfolderRu(SimpleHoster): SESSION_ID_PATTERN = r'<a href=(http://ints\.(?:rusfolder\.com|ifolder\.ru)/ints/sponsor/\?bi=\d*&session=([^&]+)&u=[^>]+)>' INTS_SESSION_PATTERN = r'\(\'ints_session\'\);\s*if\(tag\)\{tag\.value = "([^"]+)";\}' - HIDDEN_INPUT_PATTERN = r"var v = .*?name='([^']+)' value='1'" + HIDDEN_INPUT_PATTERN = r'var v = .*?name=\'(.+?)\' value=\'1\'' LINK_PATTERN = r'<a id="download_file_href" href="([^"]+)"' WRONG_CAPTCHA_PATTERN = ur'<font color=Red>неверный код,<br>введите еще раз</font><br>' diff --git a/module/plugins/hoster/LetitbitNet.py b/module/plugins/hoster/LetitbitNet.py index 68d768b7c..17e638a18 100644 --- a/module/plugins/hoster/LetitbitNet.py +++ b/module/plugins/hoster/LetitbitNet.py @@ -51,7 +51,7 @@ class LetitbitNet(SimpleHoster): HOSTER_NAME = "letitbit.net" SECONDS_PATTERN = r'seconds\s*=\s*(\d+);' - CAPTCHA_CONTROL_FIELD = r"recaptcha_control_field\s=\s'(?P<value>[^']+)'" + CAPTCHA_CONTROL_FIELD = r'recaptcha_control_field\s=\s\'(?P<value>.+?)\'' def setup(self): diff --git a/module/plugins/hoster/LuckyShareNet.py b/module/plugins/hoster/LuckyShareNet.py index 99acc5ef8..1637adac0 100644 --- a/module/plugins/hoster/LuckyShareNet.py +++ b/module/plugins/hoster/LuckyShareNet.py @@ -20,7 +20,7 @@ class LuckyShareNet(SimpleHoster): __authors__ = [("stickell", "l.stickell@yahoo.it")] - FILE_INFO_PATTERN = r"<h1 class='file_name'>(?P<N>\S+)</h1>\s*<span class='file_size'>Filesize: (?P<S>[\d.,]+)(?P<U>\w+)</span>" + FILE_INFO_PATTERN = r'<h1 class=\'file_name\'>(?P<N>\S+)</h1>\s*<span class=\'file_size\'>Filesize: (?P<S>[\d.,]+)(?P<U>\w+)</span>' OFFLINE_PATTERN = r'There is no such file available' diff --git a/module/plugins/hoster/MediafireCom.py b/module/plugins/hoster/MediafireCom.py index 187ef4c2a..6d29d4db3 100644 --- a/module/plugins/hoster/MediafireCom.py +++ b/module/plugins/hoster/MediafireCom.py @@ -58,13 +58,13 @@ class MediafireCom(SimpleHoster): LINK_PATTERN = r'<div class="download_link"[^>]*(?:z-index:(?P<zindex>\d+))?[^>]*>\s*<a href="(?P<href>http://[^"]+)"' - JS_KEY_PATTERN = r"DoShow\('mfpromo1'\);[^{]*{((\w+)='';.*?)eval\(\2\);" - JS_ZMODULO_PATTERN = r"\('z-index'\)\) \% (\d+)\)\);" + JS_KEY_PATTERN = r'DoShow\(\'mfpromo1\'\);[^{]*{((\w+)=\'\';.*?)eval\(\2\);' + JS_ZMODULO_PATTERN = r'\(\'z-index\'\)\) \% (\d+)\)\);' PAGE1_ACTION_PATTERN = r'<link rel="canonical" href="([^"]+)"/>' PASSWORD_PATTERN = r'<form name="form_password"' FILE_NAME_PATTERN = r'<META NAME="description" CONTENT="(?P<N>[^"]+)"/>' - FILE_INFO_PATTERN = r"oFileSharePopup\.ald\('(?P<ID>[^']*)','(?P<N>[^']*)','(?P<S>[^']*)','','(?P<sha256>[^']*)'\)" + FILE_INFO_PATTERN = r'oFileSharePopup\.ald\(\'(?P<ID>[^\']*)\',\'(?P<N>[^\']*)\',\'(?P<S>[^\']*)\',\'\',\'(?P<sha256>[^\']*)\'\)' OFFLINE_PATTERN = r'class="error_msg_title"> Invalid or Deleted File. </div>' diff --git a/module/plugins/hoster/MyvideoDe.py b/module/plugins/hoster/MyvideoDe.py index be2482970..1f02b5b69 100644 --- a/module/plugins/hoster/MyvideoDe.py +++ b/module/plugins/hoster/MyvideoDe.py @@ -34,7 +34,7 @@ class MyvideoDe(Hoster): return file_url def get_file_name(self): - file_name_pattern = r"<h1 class='globalHd'>(.*)</h1>" + file_name_pattern = r'<h1 class=\'globalHd\'>(.*)</h1>' return unescape(re.search(file_name_pattern, self.html).group(1).replace("/", "") + '.flv') def file_exists(self): diff --git a/module/plugins/hoster/NetloadIn.py b/module/plugins/hoster/NetloadIn.py index becfa56dd..0c255afbe 100644 --- a/module/plugins/hoster/NetloadIn.py +++ b/module/plugins/hoster/NetloadIn.py @@ -229,13 +229,13 @@ class NetloadIn(Hoster): def get_file_url(self, page): try: - file_url_pattern = r"<a class=\"Orange_Link\" href=\"(http://.+)\".?>Or click here" + file_url_pattern = r'<a class="Orange_Link" href="(http://.+)".?>Or click here' attempt = re.search(file_url_pattern, page) if attempt is not None: return attempt.group(1) else: self.logDebug("Netload: Backup try for final link") - file_url_pattern = r"<a href=\"(.+)\" class=\"Orange_Link\">Click here" + file_url_pattern = r'<a href="(.+)" class="Orange_Link">Click here' attempt = re.search(file_url_pattern, page) return "http://netload.in/" + attempt.group(1) except: diff --git a/module/plugins/hoster/PromptfileCom.py b/module/plugins/hoster/PromptfileCom.py index 8d2f7c750..548f510fe 100644 --- a/module/plugins/hoster/PromptfileCom.py +++ b/module/plugins/hoster/PromptfileCom.py @@ -21,7 +21,7 @@ class PromptfileCom(SimpleHoster): OFFLINE_PATTERN = r'<span style="[^"]*" title="File Not Found">File Not Found</span>' CHASH_PATTERN = r'<input type="hidden" name="chash" value="([^"]*)" />' - LINK_PATTERN = r"clip: {\s*url: '(https?://(?:www\.)promptfile[^']*)'," + LINK_PATTERN = r'clip: {\s*url: \'(https?://(?:www\.)promptfile[^\']*)\',' def handleFree(self): diff --git a/module/plugins/hoster/RapidgatorNet.py b/module/plugins/hoster/RapidgatorNet.py index 37b36ecfe..639e70ffa 100644 --- a/module/plugins/hoster/RapidgatorNet.py +++ b/module/plugins/hoster/RapidgatorNet.py @@ -32,11 +32,11 @@ class RapidgatorNet(SimpleHoster): FILE_SIZE_PATTERN = r'File size:\s*<strong>(?P<S>[\d.,]+) (?P<U>\w+)</strong>' OFFLINE_PATTERN = r'>(File not found|Error 404)' - JSVARS_PATTERN = r"\s+var\s*(startTimerUrl|getDownloadUrl|captchaUrl|fid|secs)\s*=\s*'?(.*?)'?;" + JSVARS_PATTERN = r'\s+var\s*(startTimerUrl|getDownloadUrl|captchaUrl|fid|secs)\s*=\s*\'?(.*?)\'?;' PREMIUM_ONLY_ERROR_PATTERN = r'You can download files up to|This file can be downloaded by premium only<' DOWNLOAD_LIMIT_ERROR_PATTERN = r'You have reached your (daily|hourly) downloads limit' WAIT_PATTERN = r'(?:Delay between downloads must be not less than|Try again in)\s*(\d+)\s*(hour|min)' - LINK_PATTERN = r"return '(http://\w+.rapidgator.net/.*)';" + LINK_PATTERN = r'return \'(http://\w+.rapidgator.net/.*)\';' RECAPTCHA_PATTERN = r'"http://api\.recaptcha\.net/challenge\?k=(.*?)"' ADSCAPTCHA_PATTERN = r'(http://api\.adscaptcha\.com/Get\.aspx[^"\']*)' diff --git a/module/plugins/hoster/SpeedyshareCom.py b/module/plugins/hoster/SpeedyshareCom.py index 11b327475..c3acfc1e8 100644 --- a/module/plugins/hoster/SpeedyshareCom.py +++ b/module/plugins/hoster/SpeedyshareCom.py @@ -15,7 +15,7 @@ class SpeedyshareCom(SimpleHoster): __type__ = "hoster" __version__ = "0.02" - __pattern__ = r"https?://(?:www\.)?(speedyshare\.com|speedy\.sh)/\w+" + __pattern__ = r'https?://(?:www\.)?(speedyshare\.com|speedy\.sh)/\w+' __description__ = """Speedyshare.com hoster plugin""" __license__ = "GPLv3" diff --git a/module/plugins/hoster/TurbobitNet.py b/module/plugins/hoster/TurbobitNet.py index 1eb3c98e9..c48bbd8b8 100644 --- a/module/plugins/hoster/TurbobitNet.py +++ b/module/plugins/hoster/TurbobitNet.py @@ -36,7 +36,7 @@ class TurbobitNet(SimpleHoster): COOKIES = [(".turbobit.net", "user_lang", "en")] LINK_PATTERN = r'(?P<url>/download/redirect/[^"\']+)' - LIMIT_WAIT_PATTERN = r"<div id='timeout'>(\d+)<" + LIMIT_WAIT_PATTERN = r'<div id=\'timeout\'>(\d+)<' CAPTCHA_URL_PATTERN = r'<img alt="Captcha" src="(.+?)"' diff --git a/module/plugins/hoster/TwoSharedCom.py b/module/plugins/hoster/TwoSharedCom.py index 03dad69dd..280f1d910 100644 --- a/module/plugins/hoster/TwoSharedCom.py +++ b/module/plugins/hoster/TwoSharedCom.py @@ -21,7 +21,7 @@ class TwoSharedCom(SimpleHoster): FILE_SIZE_PATTERN = r'<span class="dtitle">File size:</span>\s*(?P<S>[\d.,]+) (?P<U>\w+)' OFFLINE_PATTERN = r'The file link that you requested is not valid\.|This file was deleted\.' - LINK_PATTERN = r"window.location ='([^']+)';" + LINK_PATTERN = r'window.location =\'(.+?)\';' def setup(self): diff --git a/module/plugins/hoster/XHamsterCom.py b/module/plugins/hoster/XHamsterCom.py index 6dc9b4a29..dae9a8eae 100644 --- a/module/plugins/hoster/XHamsterCom.py +++ b/module/plugins/hoster/XHamsterCom.py @@ -98,16 +98,16 @@ class XHamsterCom(Hoster): if not self.html: self.download_html() - pattern = r"<title>(.*?) - xHamster\.com" + pattern = r'(.*?) - xHamster\.com' name = re.search(pattern, self.html) if name is None: - pattern = r"

    (.*)

    " + pattern = r'

    (.*)

    ' name = re.search(pattern, self.html) if name is None: - pattern = r"http://[www.]+xhamster\.com/movies/.*/(.*?)\.html?" + pattern = r'http://[www.]+xhamster\.com/movies/.*/(.*?)\.html?' name = re.match(file_name_pattern, self.pyfile.url) if name is None: - pattern = r"
    (.*)
    " + pattern = r'' name = re.search(pattern, self.html) if name is None: return "Unknown" diff --git a/module/plugins/hoster/YibaishiwuCom.py b/module/plugins/hoster/YibaishiwuCom.py index bbf6e7bbe..803c7d1c3 100644 --- a/module/plugins/hoster/YibaishiwuCom.py +++ b/module/plugins/hoster/YibaishiwuCom.py @@ -18,8 +18,8 @@ class YibaishiwuCom(SimpleHoster): __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] - FILE_NAME_PATTERN = r"file_name: '(?P[^']+)'" - FILE_SIZE_PATTERN = r"file_size: '(?P[^']+)'" + FILE_NAME_PATTERN = r'file_name: \'(?P.+?)\'' + FILE_SIZE_PATTERN = r'file_size: \'(?P.+?)\'' OFFLINE_PATTERN = ur'

    哎呀!提取码不存在!不妨搜搜看吧!

    ' LINK_PATTERN = r'(/\?ct=(pickcode|download)[^"\']+)' diff --git a/module/plugins/hoster/YoupornCom.py b/module/plugins/hoster/YoupornCom.py index 692c63286..37788b9f7 100644 --- a/module/plugins/hoster/YoupornCom.py +++ b/module/plugins/hoster/YoupornCom.py @@ -42,7 +42,7 @@ class YoupornCom(Hoster): if not self.html: self.download_html() - file_name_pattern = r"(.*) - Free Porn Videos - YouPorn" + file_name_pattern = r'(.+) - ' return re.search(file_name_pattern, self.html).group(1).replace("&", "&").replace("/", "") + '.flv' def file_exists(self): diff --git a/module/plugins/internal/CaptchaService.py b/module/plugins/internal/CaptchaService.py index 9d8fd85f2..db4ed41a4 100644 --- a/module/plugins/internal/CaptchaService.py +++ b/module/plugins/internal/CaptchaService.py @@ -59,8 +59,8 @@ class ReCaptcha(CaptchaService): __authors__ = [("pyLoad Team", "admin@pyload.org")] - KEY_PATTERN = r"https?://(?:www\.)?google\.com/recaptcha/api/challenge\?k=(?P<KEY>\w+)" - KEY_AJAX_PATTERN = r"Recaptcha\.create\s*\(\s*[\"'](?P<KEY>\w+)" + KEY_PATTERN = r'https?://(?:www\.)?google\.com/recaptcha/api/challenge\?k=(?P<KEY>\w+)' + KEY_AJAX_PATTERN = r'Recaptcha\.create\s*\(\s*["\'](?P<KEY>\w+)' def detect_key(self, html=None): diff --git a/module/plugins/internal/MultiHoster.py b/module/plugins/internal/MultiHoster.py index 38a93c6af..4ef43bc31 100644 --- a/module/plugins/internal/MultiHoster.py +++ b/module/plugins/internal/MultiHoster.py @@ -152,9 +152,9 @@ class MultiHoster(Hook): self.logDebug("New Hosters", ", ".join(sorted(self.new_supported))) # create new regexp - regexp = r".*(%s).*" % "|".join([x.replace(".", "\\.") for x in self.new_supported]) + regexp = r'.*(%s).*' % "|".join([x.replace(".", "\\.") for x in self.new_supported]) if hasattr(klass, "__pattern__") and isinstance(klass.__pattern__, basestring) and '://' in klass.__pattern__: - regexp = r"%s|%s" % (klass.__pattern__, regexp) + regexp = r'%s|%s' % (klass.__pattern__, regexp) self.logDebug("Regexp", regexp) -- cgit v1.2.3 From 6a0fb7fdd4ea2749be44625225d8a235a78f032f Mon Sep 17 00:00:00 2001 From: Walter Purcaro <vuolter@gmail.com> Date: Sat, 11 Oct 2014 15:42:39 +0200 Subject: [accounts] Code cosmetics --- module/plugins/accounts/AlldebridCom.py | 1 + module/plugins/accounts/BayfilesCom.py | 1 + module/plugins/accounts/BitshareCom.py | 1 + module/plugins/accounts/CzshareCom.py | 1 + module/plugins/accounts/DebridItaliaCom.py | 13 ++++++++----- module/plugins/accounts/DepositfilesCom.py | 1 + module/plugins/accounts/EuroshareEu.py | 1 + module/plugins/accounts/FastixRu.py | 1 + module/plugins/accounts/FastshareCz.py | 1 + module/plugins/accounts/FilecloudIo.py | 1 + module/plugins/accounts/FilefactoryCom.py | 1 + module/plugins/accounts/FilejungleCom.py | 1 + module/plugins/accounts/FilerNet.py | 1 + module/plugins/accounts/FilesMailRu.py | 1 + module/plugins/accounts/FileserveCom.py | 1 + module/plugins/accounts/FourSharedCom.py | 1 + module/plugins/accounts/FreakshareCom.py | 1 + module/plugins/accounts/FreeWayMe.py | 1 + module/plugins/accounts/FshareVn.py | 1 + module/plugins/accounts/HellshareCz.py | 1 + module/plugins/accounts/LetitbitNet.py | 1 + module/plugins/accounts/LinksnappyCom.py | 1 + module/plugins/accounts/MegaDebridEu.py | 1 + module/plugins/accounts/MegaRapidCz.py | 1 + module/plugins/accounts/MegasharesCom.py | 1 + module/plugins/accounts/MultishareCz.py | 1 + module/plugins/accounts/MyfastfileCom.py | 1 + module/plugins/accounts/NetloadIn.py | 1 + module/plugins/accounts/OneFichierCom.py | 1 + module/plugins/accounts/OverLoadMe.py | 1 + module/plugins/accounts/PremiumTo.py | 1 + module/plugins/accounts/PremiumizeMe.py | 1 + module/plugins/accounts/QuickshareCz.py | 1 + module/plugins/accounts/RPNetBiz.py | 1 + module/plugins/accounts/RapidgatorNet.py | 1 + module/plugins/accounts/RapidshareCom.py | 1 + module/plugins/accounts/RealdebridCom.py | 1 + module/plugins/accounts/RehostTo.py | 1 + module/plugins/accounts/ShareonlineBiz.py | 1 + module/plugins/accounts/SimplyPremiumCom.py | 1 + module/plugins/accounts/SimplydebridCom.py | 1 + module/plugins/accounts/StahnuTo.py | 1 + module/plugins/accounts/TurbobitNet.py | 1 + module/plugins/accounts/UlozTo.py | 1 + module/plugins/accounts/UnrestrictLi.py | 1 + module/plugins/accounts/UploadedTo.py | 1 + module/plugins/accounts/UploadheroCom.py | 1 + module/plugins/accounts/UploadingCom.py | 1 + module/plugins/accounts/YibaishiwuCom.py | 1 + module/plugins/accounts/ZeveraCom.py | 1 + 50 files changed, 57 insertions(+), 5 deletions(-) (limited to 'module') diff --git a/module/plugins/accounts/AlldebridCom.py b/module/plugins/accounts/AlldebridCom.py index 3ebdae629..842d4c060 100644 --- a/module/plugins/accounts/AlldebridCom.py +++ b/module/plugins/accounts/AlldebridCom.py @@ -44,6 +44,7 @@ class AlldebridCom(Account): account_info = {"validuntil": exp_time, "trafficleft": -1} return account_info + def login(self, user, data, req): urlparams = urlencode({'action': 'login', 'login_login': user, 'login_password': data['password']}) page = req.load("http://www.alldebrid.com/register/?%s" % urlparams) diff --git a/module/plugins/accounts/BayfilesCom.py b/module/plugins/accounts/BayfilesCom.py index b1166b83a..2b6d45a18 100644 --- a/module/plugins/accounts/BayfilesCom.py +++ b/module/plugins/accounts/BayfilesCom.py @@ -28,6 +28,7 @@ class BayfilesCom(Account): return {"premium": bool(response['premium']), "trafficleft": -1, "validuntil": response['expires'] if response['expires'] >= int(time()) else -1} + def login(self, user, data, req): response = json_loads(req.load("http://api.bayfiles.com/v1/account/login/%s/%s" % (user, data['password']))) self.logDebug(response) diff --git a/module/plugins/accounts/BitshareCom.py b/module/plugins/accounts/BitshareCom.py index ea1cca53b..910c81b4a 100644 --- a/module/plugins/accounts/BitshareCom.py +++ b/module/plugins/accounts/BitshareCom.py @@ -24,6 +24,7 @@ class BitshareCom(Account): return {"validuntil": -1, "trafficleft": -1, "premium": True} + def login(self, user, data, req): page = req.load("http://bitshare.com/login.html", post={"user": user, "password": data['password'], "submit": "Login"}, cookies=True) diff --git a/module/plugins/accounts/CzshareCom.py b/module/plugins/accounts/CzshareCom.py index ea24a4e71..153b47073 100644 --- a/module/plugins/accounts/CzshareCom.py +++ b/module/plugins/accounts/CzshareCom.py @@ -32,6 +32,7 @@ class CzshareCom(Account): validuntil = mktime(strptime(m.group(3), '%d.%m.%y %H:%M')) return {"validuntil": validuntil, "trafficleft": credits} + def login(self, user, data, req): html = req.load('https://sdilej.cz/index.php', post={ "Prihlasit": "Prihlasit", diff --git a/module/plugins/accounts/DebridItaliaCom.py b/module/plugins/accounts/DebridItaliaCom.py index 754d3467d..48b46cc0b 100644 --- a/module/plugins/accounts/DebridItaliaCom.py +++ b/module/plugins/accounts/DebridItaliaCom.py @@ -20,18 +20,21 @@ class DebridItaliaCom(Account): def loadAccountInfo(self, user, req): - if 'Account premium not activated' in self.html: + html = req.load("http://debriditalia.com/") + + if 'Account premium not activated' in html: return {"premium": False, "validuntil": None, "trafficleft": None} - m = re.search(self.WALID_UNTIL_PATTERN, self.html) + m = re.search(self.WALID_UNTIL_PATTERN, html) if m: validuntil = int(time.mktime(time.strptime(m.group('D'), "%d/%m/%Y %H:%M"))) return {"premium": True, "validuntil": validuntil, "trafficleft": -1} else: self.logError("Unable to retrieve account information - Plugin may be out of date") + def login(self, user, data, req): - self.html = req.load("http://debriditalia.com/login.php", - get={"u": user, "p": data['password']}) - if 'NO' in self.html: + html = req.load("http://debriditalia.com/login.php", + get={"u": user, "p": data['password']}) + if 'NO' in html: self.wrongPassword() diff --git a/module/plugins/accounts/DepositfilesCom.py b/module/plugins/accounts/DepositfilesCom.py index e4ef4a578..80e6c8862 100644 --- a/module/plugins/accounts/DepositfilesCom.py +++ b/module/plugins/accounts/DepositfilesCom.py @@ -27,6 +27,7 @@ class DepositfilesCom(Account): return {"validuntil": validuntil, "trafficleft": -1} + def login(self, user, data, req): src = req.load("https://dfiles.eu/de/login.php", get={"return": "/de/gold/payment.php"}, post={"login": user, "password": data['password']}) diff --git a/module/plugins/accounts/EuroshareEu.py b/module/plugins/accounts/EuroshareEu.py index 984d429f4..bb2f0c8e2 100644 --- a/module/plugins/accounts/EuroshareEu.py +++ b/module/plugins/accounts/EuroshareEu.py @@ -29,6 +29,7 @@ class EuroshareEu(Account): return {"validuntil": validuntil, "trafficleft": -1, "premium": premium} + def login(self, user, data, req): html = req.load('http://euroshare.eu/customer-zone/login/', post={ diff --git a/module/plugins/accounts/FastixRu.py b/module/plugins/accounts/FastixRu.py index 10328b840..8ced61f15 100644 --- a/module/plugins/accounts/FastixRu.py +++ b/module/plugins/accounts/FastixRu.py @@ -27,6 +27,7 @@ class FastixRu(Account): account_info = {"validuntil": None, "trafficleft": None, "premium": False} return account_info + def login(self, user, data, req): page = req.load("http://fastix.ru/api_v2/?sub=get_apikey&email=%s&password=%s" % (user, data['password'])) api = json_loads(page) diff --git a/module/plugins/accounts/FastshareCz.py b/module/plugins/accounts/FastshareCz.py index eadb9184c..a199ad36c 100644 --- a/module/plugins/accounts/FastshareCz.py +++ b/module/plugins/accounts/FastshareCz.py @@ -32,6 +32,7 @@ class FastshareCz(Account): return {"validuntil": -1, "trafficleft": trafficleft, "premium": premium} + def login(self, user, data, req): req.load('http://www.fastshare.cz/login') # Do not remove or it will not login html = req.load('http://www.fastshare.cz/sql.php', post={ diff --git a/module/plugins/accounts/FilecloudIo.py b/module/plugins/accounts/FilecloudIo.py index 364f349da..439491ea9 100644 --- a/module/plugins/accounts/FilecloudIo.py +++ b/module/plugins/accounts/FilecloudIo.py @@ -40,6 +40,7 @@ class FilecloudIo(Account): else: return {"premium": False} + def login(self, user, data, req): req.cj.setCookie("secure.filecloud.io", "lang", "en") html = req.load('https://secure.filecloud.io/user-login.html') diff --git a/module/plugins/accounts/FilefactoryCom.py b/module/plugins/accounts/FilefactoryCom.py index b46706b93..899c4a604 100644 --- a/module/plugins/accounts/FilefactoryCom.py +++ b/module/plugins/accounts/FilefactoryCom.py @@ -36,6 +36,7 @@ class FilefactoryCom(Account): return {"premium": premium, "trafficleft": -1, "validuntil": validuntil} + def login(self, user, data, req): req.http.c.setopt(REFERER, "http://www.filefactory.com/member/login.php") diff --git a/module/plugins/accounts/FilejungleCom.py b/module/plugins/accounts/FilejungleCom.py index 1301b34f2..9cf380067 100644 --- a/module/plugins/accounts/FilejungleCom.py +++ b/module/plugins/accounts/FilejungleCom.py @@ -35,6 +35,7 @@ class FilejungleCom(Account): return {"premium": premium, "trafficleft": -1, "validuntil": validuntil} + def login(self, user, data, req): html = req.load(self.URL + "login.php", post={ "loginUserName": user, diff --git a/module/plugins/accounts/FilerNet.py b/module/plugins/accounts/FilerNet.py index a459f88f0..8bd66221f 100644 --- a/module/plugins/accounts/FilerNet.py +++ b/module/plugins/accounts/FilerNet.py @@ -40,6 +40,7 @@ class FilerNet(Account): self.logError("Unable to retrieve account information - Plugin may be out of date") return {"premium": False, "validuntil": None, "trafficleft": None} + def login(self, user, data, req): html = req.load("https://filer.net/login") token = re.search(self.TOKEN_PATTERN, html).group(1) diff --git a/module/plugins/accounts/FilesMailRu.py b/module/plugins/accounts/FilesMailRu.py index 93d4ff486..25343670a 100644 --- a/module/plugins/accounts/FilesMailRu.py +++ b/module/plugins/accounts/FilesMailRu.py @@ -16,6 +16,7 @@ class FilesMailRu(Account): def loadAccountInfo(self, user, req): return {"validuntil": None, "trafficleft": None} + def login(self, user, data, req): user, domain = user.split("@") diff --git a/module/plugins/accounts/FileserveCom.py b/module/plugins/accounts/FileserveCom.py index 603ee3991..f82ecfb54 100644 --- a/module/plugins/accounts/FileserveCom.py +++ b/module/plugins/accounts/FileserveCom.py @@ -29,6 +29,7 @@ class FileserveCom(Account): else: return {"premium": False, "trafficleft": None, "validuntil": None} + def login(self, user, data, req): page = req.load("http://app.fileserve.com/api/login/", post={"username": user, "password": data['password'], "submit": "Submit+Query"}) diff --git a/module/plugins/accounts/FourSharedCom.py b/module/plugins/accounts/FourSharedCom.py index 39f6fbe75..21aff591b 100644 --- a/module/plugins/accounts/FourSharedCom.py +++ b/module/plugins/accounts/FourSharedCom.py @@ -19,6 +19,7 @@ class FourSharedCom(Account): # Free mode only for now return {"premium": False} + def login(self, user, data, req): req.cj.setCookie("4shared.com", "4langcookie", "en") response = req.load('http://www.4shared.com/web/login', diff --git a/module/plugins/accounts/FreakshareCom.py b/module/plugins/accounts/FreakshareCom.py index 86f2b5a3e..2ee7a33ea 100644 --- a/module/plugins/accounts/FreakshareCom.py +++ b/module/plugins/accounts/FreakshareCom.py @@ -31,6 +31,7 @@ class FreakshareCom(Account): return {"validuntil": validuntil, "trafficleft": traffic} + def login(self, user, data, req): page = req.load("http://freakshare.com/login.html", None, {"submit": "Login", "user": user, "pass": data['password']}, cookies=True) diff --git a/module/plugins/accounts/FreeWayMe.py b/module/plugins/accounts/FreeWayMe.py index 333525d82..12c24329c 100644 --- a/module/plugins/accounts/FreeWayMe.py +++ b/module/plugins/accounts/FreeWayMe.py @@ -35,6 +35,7 @@ class FreeWayMe(Account): def getpw(self, user): return self.accounts[user]['password'] + def login(self, user, data, req): status = self.getAccountStatus(user, req) diff --git a/module/plugins/accounts/FshareVn.py b/module/plugins/accounts/FshareVn.py index b208743e0..45ee5a749 100644 --- a/module/plugins/accounts/FshareVn.py +++ b/module/plugins/accounts/FshareVn.py @@ -44,6 +44,7 @@ class FshareVn(Account): return {"validuntil": validuntil, "trafficleft": trafficleft, "premium": premium} + def login(self, user, data, req): req.http.c.setopt(REFERER, "https://www.fshare.vn/login.php") diff --git a/module/plugins/accounts/HellshareCz.py b/module/plugins/accounts/HellshareCz.py index 53c9906c1..d24a6ae51 100644 --- a/module/plugins/accounts/HellshareCz.py +++ b/module/plugins/accounts/HellshareCz.py @@ -50,6 +50,7 @@ class HellshareCz(Account): return {"validuntil": validuntil, "trafficleft": trafficleft, "premium": premium} + def login(self, user, data, req): html = req.load('http://www.hellshare.com/') if req.lastEffectiveURL != 'http://www.hellshare.com/': diff --git a/module/plugins/accounts/LetitbitNet.py b/module/plugins/accounts/LetitbitNet.py index ca6360068..fba599078 100644 --- a/module/plugins/accounts/LetitbitNet.py +++ b/module/plugins/accounts/LetitbitNet.py @@ -28,6 +28,7 @@ class LetitbitNet(Account): return {"premium": True} + def login(self, user, data, req): # API_KEY is the username and the PREMIUM_KEY is the password self.logInfo("You must use your API KEY as username and the PREMIUM KEY as password.") diff --git a/module/plugins/accounts/LinksnappyCom.py b/module/plugins/accounts/LinksnappyCom.py index e9ca91375..adcae001c 100644 --- a/module/plugins/accounts/LinksnappyCom.py +++ b/module/plugins/accounts/LinksnappyCom.py @@ -41,6 +41,7 @@ class LinksnappyCom(Account): return {"premium": True, "validuntil": validuntil, "trafficleft": trafficleft} + def login(self, user, data, req): r = req.load('http://gen.linksnappy.com/lseAPI.php', get={'act': 'USERDETAILS', 'username': user, 'password': md5(data['password']).hexdigest()}) diff --git a/module/plugins/accounts/MegaDebridEu.py b/module/plugins/accounts/MegaDebridEu.py index e92bb4cb3..d88be835b 100644 --- a/module/plugins/accounts/MegaDebridEu.py +++ b/module/plugins/accounts/MegaDebridEu.py @@ -30,6 +30,7 @@ class MegaDebridEu(Account): self.logError(response) return {"status": False, "premium": False} + def login(self, user, data, req): jsonResponse = req.load(self.API_URL, get={'action': 'connectUser', 'login': user, 'password': data['password']}) diff --git a/module/plugins/accounts/MegaRapidCz.py b/module/plugins/accounts/MegaRapidCz.py index 5b7b41e2b..3ef98560a 100644 --- a/module/plugins/accounts/MegaRapidCz.py +++ b/module/plugins/accounts/MegaRapidCz.py @@ -40,6 +40,7 @@ class MegaRapidCz(Account): return {"premium": False, "trafficleft": None, "validuntil": None} + def login(self, user, data, req): htm = req.load("http://megarapid.cz/prihlaseni/", cookies=True) if "Heslo:" in htm: diff --git a/module/plugins/accounts/MegasharesCom.py b/module/plugins/accounts/MegasharesCom.py index f1ef3fdd8..5ac22222c 100644 --- a/module/plugins/accounts/MegasharesCom.py +++ b/module/plugins/accounts/MegasharesCom.py @@ -35,6 +35,7 @@ class MegasharesCom(Account): return {"validuntil": validuntil, "trafficleft": -1, "premium": premium} + def login(self, user, data, req): html = req.load('http://d01.megashares.com/myms_login.php', post={ "httpref": "", diff --git a/module/plugins/accounts/MultishareCz.py b/module/plugins/accounts/MultishareCz.py index 8e6b72a97..a9b0a1620 100644 --- a/module/plugins/accounts/MultishareCz.py +++ b/module/plugins/accounts/MultishareCz.py @@ -34,6 +34,7 @@ class MultishareCz(Account): return dict(mms_info, **{"validuntil": -1, "trafficleft": trafficleft}) + def login(self, user, data, req): html = req.load('http://www.multishare.cz/html/prihlaseni_process.php', post={ "akce": "Přihlásit", diff --git a/module/plugins/accounts/MyfastfileCom.py b/module/plugins/accounts/MyfastfileCom.py index 965b10e78..350974d79 100644 --- a/module/plugins/accounts/MyfastfileCom.py +++ b/module/plugins/accounts/MyfastfileCom.py @@ -23,6 +23,7 @@ class MyfastfileCom(Account): else: self.logError("Unable to get account information") + def login(self, user, data, req): # Password to use is the API-Password written in http://myfastfile.com/myaccount html = req.load("http://myfastfile.com/api.php", diff --git a/module/plugins/accounts/NetloadIn.py b/module/plugins/accounts/NetloadIn.py index 4bb4c7124..f5bac0368 100755 --- a/module/plugins/accounts/NetloadIn.py +++ b/module/plugins/accounts/NetloadIn.py @@ -31,6 +31,7 @@ class NetloadIn(Account): trafficleft = None return {"validuntil": validuntil, "trafficleft": trafficleft, "premium": premium} + def login(self, user, data, req): page = req.load("http://netload.in/index.php", None, {"txtuser": user, "txtpass": data['password'], "txtcheck": "login", "txtlogin": "Login"}, diff --git a/module/plugins/accounts/OneFichierCom.py b/module/plugins/accounts/OneFichierCom.py index 1e44ae2ca..8e8430f61 100644 --- a/module/plugins/accounts/OneFichierCom.py +++ b/module/plugins/accounts/OneFichierCom.py @@ -36,6 +36,7 @@ class OneFichierCom(Account): return {"premium": premium, "trafficleft": -1, "validuntil": validuntil} + def login(self, user, data, req): req.http.c.setopt(REFERER, "http://1fichier.com/login.pl?lg=en") diff --git a/module/plugins/accounts/OverLoadMe.py b/module/plugins/accounts/OverLoadMe.py index 1d0bf3321..c85feec59 100644 --- a/module/plugins/accounts/OverLoadMe.py +++ b/module/plugins/accounts/OverLoadMe.py @@ -26,6 +26,7 @@ class OverLoadMe(Account): account_info = {"validuntil": data['expirationunix'], "trafficleft": -1} return account_info + def login(self, user, data, req): jsondata = req.load("https://api.over-load.me/account.php", get={"user": user, "auth": data['password']}).strip() diff --git a/module/plugins/accounts/PremiumTo.py b/module/plugins/accounts/PremiumTo.py index 4ab107094..d13d9b866 100644 --- a/module/plugins/accounts/PremiumTo.py +++ b/module/plugins/accounts/PremiumTo.py @@ -22,6 +22,7 @@ class PremiumTo(Account): return {"trafficleft": int(traffic) / 1024, "validuntil": -1} + def login(self, user, data, req): self.username = user self.password = data['password'] diff --git a/module/plugins/accounts/PremiumizeMe.py b/module/plugins/accounts/PremiumizeMe.py index 1f8790495..a234a8d93 100644 --- a/module/plugins/accounts/PremiumizeMe.py +++ b/module/plugins/accounts/PremiumizeMe.py @@ -29,6 +29,7 @@ class PremiumizeMe(Account): return account_info + def login(self, user, data, req): # Get user data from premiumize.me status = self.getAccountStatus(user, req) diff --git a/module/plugins/accounts/QuickshareCz.py b/module/plugins/accounts/QuickshareCz.py index 0681bab5b..fa0acd06d 100644 --- a/module/plugins/accounts/QuickshareCz.py +++ b/module/plugins/accounts/QuickshareCz.py @@ -28,6 +28,7 @@ class QuickshareCz(Account): return {"validuntil": -1, "trafficleft": trafficleft, "premium": premium} + def login(self, user, data, req): html = req.load('http://www.quickshare.cz/html/prihlaseni_process.php', post={ "akce": u'Přihlásit', diff --git a/module/plugins/accounts/RPNetBiz.py b/module/plugins/accounts/RPNetBiz.py index 3dcab7d54..e4b873824 100644 --- a/module/plugins/accounts/RPNetBiz.py +++ b/module/plugins/accounts/RPNetBiz.py @@ -31,6 +31,7 @@ class RPNetBiz(Account): return account_info + def login(self, user, data, req): # Get account information from rpnet.biz response = self.getAccountStatus(user, req) diff --git a/module/plugins/accounts/RapidgatorNet.py b/module/plugins/accounts/RapidgatorNet.py index ee44d4879..981f2f90f 100644 --- a/module/plugins/accounts/RapidgatorNet.py +++ b/module/plugins/accounts/RapidgatorNet.py @@ -40,6 +40,7 @@ class RapidgatorNet(Account): return {"validuntil": None, "trafficleft": None, "premium": False} + def login(self, user, data, req): try: json = req.load('%s/login' % self.API_URL, post={"username": user, "password": data['password']}) diff --git a/module/plugins/accounts/RapidshareCom.py b/module/plugins/accounts/RapidshareCom.py index c52706fe2..d6f4efe8d 100644 --- a/module/plugins/accounts/RapidshareCom.py +++ b/module/plugins/accounts/RapidshareCom.py @@ -36,6 +36,7 @@ class RapidshareCom(Account): return tmp + def login(self, user, data, req): api_url_base = "http://api.rapidshare.com/cgi-bin/rsapi.cgi" api_param_prem = {"sub": "getaccountdetails", "type": "prem", "login": user, diff --git a/module/plugins/accounts/RealdebridCom.py b/module/plugins/accounts/RealdebridCom.py index b7212c8d3..e85a28f02 100644 --- a/module/plugins/accounts/RealdebridCom.py +++ b/module/plugins/accounts/RealdebridCom.py @@ -25,6 +25,7 @@ class RealdebridCom(Account): return account_info + def login(self, user, data, req): self.pin_code = False page = req.load("https://real-debrid.com/ajax/login.php", get={"user": user, "pass": data['password']}) diff --git a/module/plugins/accounts/RehostTo.py b/module/plugins/accounts/RehostTo.py index b71347a15..e9d9bd243 100644 --- a/module/plugins/accounts/RehostTo.py +++ b/module/plugins/accounts/RehostTo.py @@ -30,6 +30,7 @@ class RehostTo(Account): return account_info + def login(self, user, data, req): page = req.load("http://rehost.to/api.php?cmd=login&user=%s&pass=%s" % (user, data['password'])) diff --git a/module/plugins/accounts/ShareonlineBiz.py b/module/plugins/accounts/ShareonlineBiz.py index d96dd2fe6..76c564032 100644 --- a/module/plugins/accounts/ShareonlineBiz.py +++ b/module/plugins/accounts/ShareonlineBiz.py @@ -37,6 +37,7 @@ class ShareonlineBiz(Account): "trafficleft": -1, "premium": True if ("dl" in info or "a" in info) and (info['group'] != "Sammler") else False} + def login(self, user, data, req): src = self.getUserAPI(user, req) if "EXCEPTION" in src: diff --git a/module/plugins/accounts/SimplyPremiumCom.py b/module/plugins/accounts/SimplyPremiumCom.py index 8f65fa677..442aaa9f3 100644 --- a/module/plugins/accounts/SimplyPremiumCom.py +++ b/module/plugins/accounts/SimplyPremiumCom.py @@ -31,6 +31,7 @@ class SimplyPremiumCom(Account): #return {"premium": True, "validuntil": validuntil, "trafficleft": trafficleft} return {"premium": True, "validuntil": validuntil} + def login(self, user, data, req): req.cj.setCookie("simply-premium.com", "lang", "EN") diff --git a/module/plugins/accounts/SimplydebridCom.py b/module/plugins/accounts/SimplydebridCom.py index c77df7a52..b986985e1 100644 --- a/module/plugins/accounts/SimplydebridCom.py +++ b/module/plugins/accounts/SimplydebridCom.py @@ -24,6 +24,7 @@ class SimplydebridCom(Account): else: return {"trafficleft": -1, "validuntil": mktime(strptime(str(data[2]), "%d/%m/%Y"))} + def login(self, user, data, req): self.loginname = user self.password = data['password'] diff --git a/module/plugins/accounts/StahnuTo.py b/module/plugins/accounts/StahnuTo.py index 1afb37791..7b32ae842 100644 --- a/module/plugins/accounts/StahnuTo.py +++ b/module/plugins/accounts/StahnuTo.py @@ -24,6 +24,7 @@ class StahnuTo(Account): return {"premium": trafficleft > (512 * 1024), "trafficleft": trafficleft, "validuntil": -1} + def login(self, user, data, req): html = req.load("http://www.stahnu.to/login.php", post={ "username": user, diff --git a/module/plugins/accounts/TurbobitNet.py b/module/plugins/accounts/TurbobitNet.py index 065668815..7dfea7c3a 100644 --- a/module/plugins/accounts/TurbobitNet.py +++ b/module/plugins/accounts/TurbobitNet.py @@ -29,6 +29,7 @@ class TurbobitNet(Account): return {"premium": premium, "trafficleft": -1, "validuntil": validuntil} + def login(self, user, data, req): req.cj.setCookie("turbobit.net", "user_lang", "en") diff --git a/module/plugins/accounts/UlozTo.py b/module/plugins/accounts/UlozTo.py index 2298e252b..dc51b7a80 100644 --- a/module/plugins/accounts/UlozTo.py +++ b/module/plugins/accounts/UlozTo.py @@ -31,6 +31,7 @@ class UlozTo(Account): return {"validuntil": -1, "trafficleft": trafficleft} + def login(self, user, data, req): login_page = req.load('http://www.ulozto.net/?do=web-login', decode=True) action = re.findall('<form action="(.+?)"', login_page)[1].replace('&', '&') diff --git a/module/plugins/accounts/UnrestrictLi.py b/module/plugins/accounts/UnrestrictLi.py index e3da5e913..5a02e04a2 100644 --- a/module/plugins/accounts/UnrestrictLi.py +++ b/module/plugins/accounts/UnrestrictLi.py @@ -27,6 +27,7 @@ class UnrestrictLi(Account): return {"premium": True, "validuntil": validuntil, "trafficleft": trafficleft} + def login(self, user, data, req): req.cj.setCookie("unrestrict.li", "lang", "EN") html = req.load("https://unrestrict.li/sign_in") diff --git a/module/plugins/accounts/UploadedTo.py b/module/plugins/accounts/UploadedTo.py index be4f9f47c..437730a3f 100644 --- a/module/plugins/accounts/UploadedTo.py +++ b/module/plugins/accounts/UploadedTo.py @@ -42,6 +42,7 @@ class UploadedTo(Account): else: return {"premium": False, "validuntil": -1} + def login(self, user, data, req): req.load("http://uploaded.net/language/en") diff --git a/module/plugins/accounts/UploadheroCom.py b/module/plugins/accounts/UploadheroCom.py index ec34e425e..e66f7b9c6 100644 --- a/module/plugins/accounts/UploadheroCom.py +++ b/module/plugins/accounts/UploadheroCom.py @@ -32,6 +32,7 @@ class UploadheroCom(Account): return account_info + def login(self, user, data, req): page = req.load("http://uploadhero.co/lib/connexion.php", post={"pseudo_login": user, "password_login": data['password']}) diff --git a/module/plugins/accounts/UploadingCom.py b/module/plugins/accounts/UploadingCom.py index 544391ea3..5ade435d4 100644 --- a/module/plugins/accounts/UploadingCom.py +++ b/module/plugins/accounts/UploadingCom.py @@ -30,6 +30,7 @@ class UploadingCom(Account): return {"validuntil": validuntil, "trafficleft": -1, "premium": True} + def login(self, user, data, req): req.cj.setCookie("uploading.com", "lang", "1") req.cj.setCookie("uploading.com", "language", "1") diff --git a/module/plugins/accounts/YibaishiwuCom.py b/module/plugins/accounts/YibaishiwuCom.py index f7f5d3e7a..81880f575 100644 --- a/module/plugins/accounts/YibaishiwuCom.py +++ b/module/plugins/accounts/YibaishiwuCom.py @@ -27,6 +27,7 @@ class YibaishiwuCom(Account): validuntil = trafficleft = (-1 if m else 0) return dict({"validuntil": validuntil, "trafficleft": trafficleft, "premium": premium}) + def login(self, user, data, req): html = req.load('http://passport.115.com/?ac=login', post={ "back": "http://www.115.com/", diff --git a/module/plugins/accounts/ZeveraCom.py b/module/plugins/accounts/ZeveraCom.py index 72c6c7348..7e4fb0ab8 100644 --- a/module/plugins/accounts/ZeveraCom.py +++ b/module/plugins/accounts/ZeveraCom.py @@ -27,6 +27,7 @@ class ZeveraCom(Account): } return account_info + def login(self, user, data, req): self.loginname = user self.password = data['password'] -- cgit v1.2.3 From 0adc51cf4c58aa3e0f1073c28b9a8781a298fe89 Mon Sep 17 00:00:00 2001 From: Walter Purcaro <vuolter@gmail.com> Date: Sat, 11 Oct 2014 22:59:24 +0200 Subject: [CaptchaService] Fix KEY pattern --- module/plugins/internal/CaptchaService.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'module') diff --git a/module/plugins/internal/CaptchaService.py b/module/plugins/internal/CaptchaService.py index db4ed41a4..b2b549617 100644 --- a/module/plugins/internal/CaptchaService.py +++ b/module/plugins/internal/CaptchaService.py @@ -7,7 +7,7 @@ from random import random class CaptchaService: __name__ = "CaptchaService" - __version__ = "0.10" + __version__ = "0.11" __description__ = """Base captcha service plugin""" __license__ = "GPLv3" @@ -52,15 +52,15 @@ class CaptchaService: class ReCaptcha(CaptchaService): __name__ = "ReCaptcha" - __version__ = "0.03" + __version__ = "0.04" __description__ = """ReCaptcha captcha service plugin""" __license__ = "GPLv3" __authors__ = [("pyLoad Team", "admin@pyload.org")] - KEY_PATTERN = r'https?://(?:www\.)?google\.com/recaptcha/api/challenge\?k=(?P<KEY>\w+)' - KEY_AJAX_PATTERN = r'Recaptcha\.create\s*\(\s*["\'](?P<KEY>\w+)' + KEY_PATTERN = r'https?://(?:www\.)?google\.com/recaptcha/api/challenge\?k=(?P<KEY>[\w-]+)' + KEY_AJAX_PATTERN = r'Recaptcha\.create\s*\(\s*["\'](?P<KEY>[\w-]+)' def detect_key(self, html=None): @@ -175,14 +175,14 @@ class AdsCaptcha(CaptchaService): class SolveMedia(CaptchaService): __name__ = "SolveMedia" - __version__ = "0.02" + __version__ = "0.03" __description__ = """SolveMedia captcha service plugin""" __license__ = "GPLv3" __authors__ = [("pyLoad Team", "admin@pyload.org")] - KEY_PATTERN = r'http://api\.solvemedia\.com/papi/challenge\.(no)?script\?k=(?P<KEY>.+?)"' + KEY_PATTERN = r'http://api\.solvemedia\.com/papi/challenge\.(no)?script\?k=(?P<KEY>.+?)["\']' def challenge(self, key=None): -- cgit v1.2.3 From 6cef0be257a01183aa6855d928f2ef7063174d89 Mon Sep 17 00:00:00 2001 From: Walter Purcaro <vuolter@gmail.com> Date: Sat, 11 Oct 2014 23:00:31 +0200 Subject: [XFileSharingPro] Hoster list cleanup + linestorage.com --- module/plugins/hooks/XFileSharingPro.py | 27 +++++++-------------------- 1 file changed, 7 insertions(+), 20 deletions(-) (limited to 'module') diff --git a/module/plugins/hooks/XFileSharingPro.py b/module/plugins/hooks/XFileSharingPro.py index 741912457..44f2f544a 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.12" + __version__ = "0.13" __config__ = [("activated", "bool", "Activated", True), ("load_default", "bool", "Include default (built-in) hoster list", True), @@ -31,27 +31,14 @@ class XFileSharingPro(Hook): if self.getConfig('load_default'): hoster_list |= set(( #WORKING HOSTERS: - "aieshare.com", "asixfiles.com", "banashare.com", "cyberlocker.ch", "eyesfile.co", "eyesfile.com", - "fileband.com", "filedwon.com", "filedownloads.org", "hipfile.com", "kingsupload.com", "mlfat4arab.com", - "netuploaded.com", "odsiebie.pl", "q4share.com", "ravishare.com", "uptobox.com", "verzend.be", - "xvidstage.com", "thefile.me", "sharesix.com", "hostingbulk.com", + "eyesfile.co", "eyesfile.com", "fileband.com", "filedwon.com", "hostingbulk.com", "linestorage.com", + "ravishare.com", "sharesix.com", "thefile.me", "verzend.be", "xvidstage.com", #NOT TESTED: - "bebasupload.com", "boosterking.com", "divxme.com", "filevelocity.com", "glumbouploads.com", - "grupload.com", "heftyfile.com", "host4desi.com", "laoupload.com", "linkzhost.com", "movreel.com", - "rockdizfile.com", "limfile.com", "share76.com", "sharebeast.com", "sharehut.com", "sharerun.com", - "shareswift.com", "sharingonline.com", "6ybh-upload.com", "skipfile.com", "spaadyshare.com", - "space4file.com", "uploadbaz.com", "uploadc.com", "uploaddot.com", "uploadfloor.com", "uploadic.com", - "uploadville.com", "vidbull.com", "zalaa.com", "zomgupload.com", "kupload.org", "movbay.org", - "multishare.org", "omegave.org", "toucansharing.org", "uflinq.org", "banicrazy.info", "flowhot.info", - "upbrasil.info", "shareyourfilez.biz", "bzlink.us", "cloudcache.cc", "fileserver.cc", "farshare.to", - "filemaze.ws", "filehost.ws", "filestock.ru", "moidisk.ru", "4up.im", "100shared.com", "sharesix.com", - "thefile.me", "filenuke.com", "sharerepo.com", "mightyupload.com", - #WRONG FILE NAME: - "sendmyway.com", "upchi.co.il", + "101shared.com", "4upfiles.com", "filemaze.ws", "filenuke.com", "linkzhost.com", "mightyupload.com", + "rockdizfile.com", "sharebeast.com", "sharerepo.com", "shareswift.com", "uploadbaz.com", "uploadc.com", + "vidbull.com", "zalaa.com", "zomgupload.com", #NOT WORKING: - "amonshare.com", "imageporter.com", "file4safe.com", - #DOWN OR BROKEN: - "ddlanime.com", "fileforth.com", "loombo.com", "goldfile.eu", "putshare.com" + "amonshare.com", "banicrazy.info", "boosterking.com", "host4desi.com", "laoupload.com", "rd-fs.com" )) hoster_list -= (exclude_list) -- cgit v1.2.3 From 37fcdffac990eaf024fdc33a026fcf566e9e263f Mon Sep 17 00:00:00 2001 From: Walter Purcaro <vuolter@gmail.com> Date: Sat, 11 Oct 2014 23:59:07 +0200 Subject: [MegaNz] Fix decryptAttr --- module/plugins/hoster/MegaNz.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) (limited to 'module') diff --git a/module/plugins/hoster/MegaNz.py b/module/plugins/hoster/MegaNz.py index 91719b86b..2e6aaa273 100644 --- a/module/plugins/hoster/MegaNz.py +++ b/module/plugins/hoster/MegaNz.py @@ -16,7 +16,7 @@ from module.plugins.Hoster import Hoster class MegaNz(Hoster): __name__ = "MegaNz" __type__ = "hoster" - __version__ = "0.14" + __version__ = "0.15" __pattern__ = r'https?://(\w+\.)?mega\.co\.nz/#!([\w!-]+)' @@ -33,12 +33,14 @@ class MegaNz(Hoster): data = data.replace("-", "+").replace("_", "/") return standard_b64decode(data + '=' * (-len(data) % 4)) + def getCipherKey(self, key): """ Construct the cipher key from the given data """ a = array("I", key) key_array = array("I", [a[0] ^ a[4], a[1] ^ a[5], a[2] ^ a[6], a[3] ^ a[7]]) return key_array + def callApi(self, **kwargs): """ Dispatch a call to the api, see https://mega.co.nz/#developers """ # generate a session id, no idea where to obtain elsewhere @@ -48,8 +50,8 @@ class MegaNz(Hoster): self.logDebug("Api Response: " + resp) return json_loads(resp) - def decryptAttr(self, data, key): + def decryptAttr(self, data, key): cbc = AES.new(self.getCipherKey(key), AES.MODE_CBC, "\0" * 16) attr = cbc.decrypt(self.b64_decode(data)) self.logDebug("Decrypted Attr: " + attr) @@ -57,7 +59,8 @@ class MegaNz(Hoster): self.fail(_("Decryption failed")) # Data is padded, 0-bytes must be stripped - return json_loads(attr.replace("MEGA", "").rstrip("\0").strip()) + return json_loads(re.search(r'{.+?}', attr).group(0)) + def decryptFile(self, key): """ Decrypts the file at lastDownload` """ @@ -92,8 +95,8 @@ class MegaNz(Hoster): self.lastDownload = file_decrypted - def process(self, pyfile): + def process(self, pyfile): key = None # match is guaranteed because plugin was chosen to handle url -- cgit v1.2.3 From 83a822f35e72885e33b3606bd92eecdf284b25c0 Mon Sep 17 00:00:00 2001 From: Walter Purcaro <vuolter@gmail.com> Date: Sun, 12 Oct 2014 00:10:19 +0200 Subject: [YoutubeBatch] Fix API_KEY --- module/plugins/crypter/YoutubeBatch.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'module') diff --git a/module/plugins/crypter/YoutubeBatch.py b/module/plugins/crypter/YoutubeBatch.py index 6ffb6b48e..e5fd83c4f 100644 --- a/module/plugins/crypter/YoutubeBatch.py +++ b/module/plugins/crypter/YoutubeBatch.py @@ -8,13 +8,11 @@ from module.common.json_layer import json_loads from module.plugins.Crypter import Crypter from module.utils import save_join -API_URL = "AIzaSyCKnWLNlkX-L4oD1aEzqqhRw1zczeD6_k0" - class YoutubeBatch(Crypter): __name__ = "YoutubeBatch" __type__ = "crypter" - __version__ = "1.00" + __version__ = "1.01" __pattern__ = r'https?://(?:www\.|m\.)?youtube\.com/(?P<TYPE>user|playlist|view_play_list)(/|.*?[?&](?:list|p)=)(?P<ID>[\w-]+)' __config__ = [("likes", "bool", "Grab user (channel) liked videos", False), @@ -26,8 +24,11 @@ class YoutubeBatch(Crypter): __authors__ = [("Walter Purcaro", "vuolter@gmail.com")] + API_KEY = "AIzaSyCKnWLNlkX-L4oD1aEzqqhRw1zczeD6_k0" + + def api_response(self, ref, req): - req.update({"key": API_KEY}) + req.update({"key": self.API_KEY}) url = urljoin("https://www.googleapis.com/youtube/v3/", ref) page = self.load(url, get=req) return json_loads(page) -- cgit v1.2.3 From 818ae3ce2c5ee6f47da2f508c786c3e2ab20ad45 Mon Sep 17 00:00:00 2001 From: Walter Purcaro <vuolter@gmail.com> Date: Sun, 12 Oct 2014 23:30:34 +0200 Subject: [XFileSharingPro] Match option --- module/plugins/hooks/XFileSharingPro.py | 79 +++++++++++++++++++++------------ module/plugins/internal/XFSPHoster.py | 5 --- 2 files changed, 51 insertions(+), 33 deletions(-) (limited to 'module') diff --git a/module/plugins/hooks/XFileSharingPro.py b/module/plugins/hooks/XFileSharingPro.py index 44f2f544a..7b1b12549 100644 --- a/module/plugins/hooks/XFileSharingPro.py +++ b/module/plugins/hooks/XFileSharingPro.py @@ -8,52 +8,74 @@ from module.plugins.Hook import Hook class XFileSharingPro(Hook): __name__ = "XFileSharingPro" __type__ = "hook" - __version__ = "0.13" + __version__ = "0.14" __config__ = [("activated", "bool", "Activated", True), - ("load_default", "bool", "Include default (built-in) hoster list", True), + ("match", "Always;Always except excluded;Listed only", "Match", "Always except excluded"), + ("load_default", "bool", "Include built-in hoster list", True), ("include_hosters", "str", "Include hosters (comma separated)", ""), ("exclude_hosters", "str", "Exclude hosters (comma separated)", "")] __description__ = """XFileSharingPro hook plugin""" __license__ = "GPLv3" - __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] + __authors__ = [("zoidberg", "zoidberg@mujmail.cz"), + ("Walter Purcaro", "vuolter@gmail.com")] + + + event_list = ["pluginConfigChanged"] + + + def pluginConfigChanged(self, plugin, name, value): + if name != "activated": + self.loadPattern() def coreReady(self): - self.loadPattern() + self.pluginConfigChanged(self.__name__, "coreReady", None) def loadPattern(self): hoster_list = self.getConfigSet('include_hosters') exclude_list = self.getConfigSet('exclude_hosters') - if self.getConfig('load_default'): - hoster_list |= set(( - #WORKING HOSTERS: - "eyesfile.co", "eyesfile.com", "fileband.com", "filedwon.com", "hostingbulk.com", "linestorage.com", - "ravishare.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", - "vidbull.com", "zalaa.com", "zomgupload.com", - #NOT WORKING: - "amonshare.com", "banicrazy.info", "boosterking.com", "host4desi.com", "laoupload.com", "rd-fs.com" - )) - - hoster_list -= (exclude_list) - hoster_list -= set(('', u'')) - - if not hoster_list: - self.unload() - return - - regexp = r'http://(?:[^/]*\.)?(%s)/(?:embed-)?\w{12}' % ('|'.join(sorted(hoster_list)).replace('.', '\.')) + if self.getConfig("match") != "Listed only": + if self.getConfig("match") == "Always": + match_list = "" + else: + match_list = '|'.join(sorted(exclude_list)) + self.logDebug("Excluding %d hosters" % len(exclude_list), match_list.replace('|', ', ')) + + regexp = r'https?://(?!(?:www\.)?(?:%s))(?:www\.)?([\w^_]+(?:\.[a-zA-Z])+(?:\:\d+)?)/(?:embed-)?\w{12}' % match_list.replace('.', '\.') + + else: + if self.getConfig('load_default'): + hoster_list |= set(( + #WORKING HOSTERS: + "eyesfile.co", "eyesfile.com", "fileband.com", "filedwon.com", "hostingbulk.com", "linestorage.com", + "ravishare.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", + "vidbull.com", "zalaa.com", "zomgupload.com", + #NOT WORKING: + "amonshare.com", "banicrazy.info", "boosterking.com", "host4desi.com", "laoupload.com", "rd-fs.com" + )) + + hoster_list -= (exclude_list) + hoster_list -= set(('', u'')) + + if not hoster_list: + self.unload() + return + + match_list = '|'.join(sorted(hoster_list)) + regexp = r'https?://(?:[^/]*\.)?(%s)/(?:embed-)?\w{12}' % match_list.replace('.', '\.') + self.logDebug("Handling %d hosters" % len(hoster_list), match_list.replace('|', ', ')) dict = self.core.pluginManager.hosterPlugins['XFileSharingPro'] dict['pattern'] = regexp dict['re'] = re.compile(regexp) - self.logDebug("Pattern loaded - handling %d hosters" % len(hoster_list)) + self.logDebug("Pattern loaded") def getConfigSet(self, option): @@ -62,6 +84,7 @@ class XFileSharingPro(Hook): def unload(self): + regexp = r'^unmatchable$' dict = self.core.pluginManager.hosterPlugins['XFileSharingPro'] - dict['pattern'] = r'^unmatchable$' - dict['re'] = re.compile(r'^unmatchable$') + dict['pattern'] = regexp + dict['re'] = re.compile(regexp) diff --git a/module/plugins/internal/XFSPHoster.py b/module/plugins/internal/XFSPHoster.py index 228a55c82..40bf26cfa 100644 --- a/module/plugins/internal/XFSPHoster.py +++ b/module/plugins/internal/XFSPHoster.py @@ -14,11 +14,6 @@ from module.utils import html_unescape class XFSPHoster(SimpleHoster): - """ - Common base for XFileSharingPro hosters like EasybytezCom, CramitIn, FiledinoCom... - Some hosters may work straight away when added to __pattern__ - However, most of them will NOT work because they are either down or running a customized version - """ __name__ = "XFSPHoster" __type__ = "hoster" __version__ = "0.02" -- cgit v1.2.3 From f98477c1d4a1d4c78e4371c19ff49c3e96fee8c6 Mon Sep 17 00:00:00 2001 From: Walter Purcaro <vuolter@gmail.com> Date: Sun, 12 Oct 2014 23:31:42 +0200 Subject: [DeleteFinished] Fix pluginConfigChanged --- module/plugins/hooks/DeleteFinished.py | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) (limited to 'module') diff --git a/module/plugins/hooks/DeleteFinished.py b/module/plugins/hooks/DeleteFinished.py index 2ca5bfb4a..fe808e3af 100644 --- a/module/plugins/hooks/DeleteFinished.py +++ b/module/plugins/hooks/DeleteFinished.py @@ -7,7 +7,7 @@ from module.plugins.Hook import Hook class DeleteFinished(Hook): __name__ = "DeleteFinished" __type__ = "hook" - __version__ = "1.09" + __version__ = "1.10" __config__ = [('activated', 'bool', 'Activated', 'False'), ('interval', 'int', 'Delete every (hours)', '72'), @@ -18,6 +18,9 @@ class DeleteFinished(Hook): __authors__ = [("Walter Purcaro", "vuolter@gmail.com")] + event_list = ["pluginConfigChanged"] + + ## overwritten methods ## def periodical(self): if not self.info['sleep']: @@ -29,30 +32,36 @@ class DeleteFinished(Hook): self.info['sleep'] = True self.addEvent('packageFinished', self.wakeup) + def pluginConfigChanged(self, plugin, name, value): - if name == 'interval' and value != self.interval: + if name == "interval" and value != self.interval: self.interval = value * 3600 self.initPeriodical() + def unload(self): self.removeEvent('packageFinished', self.wakeup) + def coreReady(self): self.info = {'sleep': True} interval = self.getConfig('interval') self.pluginConfigChanged('DeleteFinished', 'interval', interval) self.addEvent('packageFinished', self.wakeup) + ## own methods ## @style.queue def deleteFinished(self, mode): self.c.execute('DELETE FROM packages WHERE NOT EXISTS(SELECT 1 FROM links WHERE package=packages.id AND status NOT IN (%s))' % mode) self.c.execute('DELETE FROM links WHERE NOT EXISTS(SELECT 1 FROM packages WHERE id=links.package)') + def wakeup(self, pypack): self.removeEvent('packageFinished', self.wakeup) self.info['sleep'] = False + ## event managing ## def addEvent(self, event, func): """Adds an event listener for event name""" @@ -64,6 +73,7 @@ class DeleteFinished(Hook): else: self.m.events[event] = [func] + def setup(self): self.m = self.manager self.removeEvent = self.m.removeEvent -- cgit v1.2.3 From 7a491109ba2f784ae7a41b89090dae14e2fbe4b5 Mon Sep 17 00:00:00 2001 From: Walter Purcaro <vuolter@gmail.com> Date: Sun, 12 Oct 2014 23:33:27 +0200 Subject: [XFileSharingPro] Code cosmetics --- module/plugins/hooks/XFileSharingPro.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'module') diff --git a/module/plugins/hooks/XFileSharingPro.py b/module/plugins/hooks/XFileSharingPro.py index 7b1b12549..13d11155c 100644 --- a/module/plugins/hooks/XFileSharingPro.py +++ b/module/plugins/hooks/XFileSharingPro.py @@ -31,7 +31,7 @@ class XFileSharingPro(Hook): def coreReady(self): - self.pluginConfigChanged(self.__name__, "coreReady", None) + self.loadPattern() def loadPattern(self): -- cgit v1.2.3 From 7598810800c20b928265c63b207daa7c7caa04c6 Mon Sep 17 00:00:00 2001 From: Walter Purcaro <vuolter@gmail.com> Date: Sun, 12 Oct 2014 23:40:26 +0200 Subject: [XFileSharingPro] Code cosmetics 2 --- module/plugins/hooks/XFileSharingPro.py | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) (limited to 'module') diff --git a/module/plugins/hooks/XFileSharingPro.py b/module/plugins/hooks/XFileSharingPro.py index 13d11155c..1d7864390 100644 --- a/module/plugins/hooks/XFileSharingPro.py +++ b/module/plugins/hooks/XFileSharingPro.py @@ -24,6 +24,16 @@ class XFileSharingPro(Hook): event_list = ["pluginConfigChanged"] + HOSTER_LIST = [#WORKING HOSTERS: + "eyesfile.co", "eyesfile.com", "fileband.com", "filedwon.com", "hostingbulk.com", "linestorage.com", + "ravishare.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", + "vidbull.com", "zalaa.com", "zomgupload.com", + #NOT WORKING: + "amonshare.com", "banicrazy.info", "boosterking.com", "host4desi.com", "laoupload.com", "rd-fs.com"] + def pluginConfigChanged(self, plugin, name, value): if name != "activated": @@ -49,17 +59,7 @@ class XFileSharingPro(Hook): else: if self.getConfig('load_default'): - hoster_list |= set(( - #WORKING HOSTERS: - "eyesfile.co", "eyesfile.com", "fileband.com", "filedwon.com", "hostingbulk.com", "linestorage.com", - "ravishare.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", - "vidbull.com", "zalaa.com", "zomgupload.com", - #NOT WORKING: - "amonshare.com", "banicrazy.info", "boosterking.com", "host4desi.com", "laoupload.com", "rd-fs.com" - )) + hoster_list |= set(self.HOSTER_LIST) hoster_list -= (exclude_list) hoster_list -= set(('', u'')) -- cgit v1.2.3 From 70017d6c628d5a53bc61c4a3ed648dcb22354977 Mon Sep 17 00:00:00 2001 From: Walter Purcaro <vuolter@gmail.com> Date: Mon, 13 Oct 2014 00:20:16 +0200 Subject: [XFileSharingPro] Fix regexp --- module/plugins/hooks/XFileSharingPro.py | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) (limited to 'module') diff --git a/module/plugins/hooks/XFileSharingPro.py b/module/plugins/hooks/XFileSharingPro.py index 1d7864390..232c893cc 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.14" + __version__ = "0.15" __config__ = [("activated", "bool", "Activated", True), ("match", "Always;Always except excluded;Listed only", "Match", "Always except excluded"), @@ -45,23 +45,26 @@ class XFileSharingPro(Hook): def loadPattern(self): - hoster_list = self.getConfigSet('include_hosters') - exclude_list = self.getConfigSet('exclude_hosters') + include_hosters = self.getConfigSet('include_hosters') + exclude_hosters = self.getConfigSet('exclude_hosters') if self.getConfig("match") != "Listed only": if self.getConfig("match") == "Always": match_list = "" else: - match_list = '|'.join(sorted(exclude_list)) - self.logDebug("Excluding %d hosters" % len(exclude_list), match_list.replace('|', ', ')) + hoster_list = exclude_hosters - set(('', u'')) + match_list = '|'.join(sorted(hoster_list)) + self.logDebug("Excluding %d hosters" % len(hoster_list), match_list.replace('|', ', ')) - regexp = r'https?://(?!(?:www\.)?(?:%s))(?:www\.)?([\w^_]+(?:\.[a-zA-Z])+(?:\:\d+)?)/(?:embed-)?\w{12}' % match_list.replace('.', '\.') + regexp = r'https?://(?!(?:www\.)?(?:%s))(?:www\.)?([\w^_]+(?:\.[a-zA-Z]{2,})+(?:\:\d+)?)/(?:embed-)?\w{12}' % match_list.replace('.', '\.') else: + hoster_list = include_hosters + if self.getConfig('load_default'): hoster_list |= set(self.HOSTER_LIST) - hoster_list -= (exclude_list) + hoster_list -= exclude_hosters hoster_list -= set(('', u'')) if not hoster_list: @@ -69,9 +72,10 @@ class XFileSharingPro(Hook): return match_list = '|'.join(sorted(hoster_list)) - regexp = r'https?://(?:[^/]*\.)?(%s)/(?:embed-)?\w{12}' % match_list.replace('.', '\.') self.logDebug("Handling %d hosters" % len(hoster_list), match_list.replace('|', ', ')) + regexp = r'https?://(?:[^/]*\.)?(%s)/(?:embed-)?\w{12}' % match_list.replace('.', '\.') + dict = self.core.pluginManager.hosterPlugins['XFileSharingPro'] dict['pattern'] = regexp dict['re'] = re.compile(regexp) -- cgit v1.2.3 From e0c2edca2a55472a5bf15051a093b789627d1d91 Mon Sep 17 00:00:00 2001 From: guidobelix <guidobelix@hotmail.it> Date: Tue, 14 Oct 2014 13:05:56 +0200 Subject: New plugin JunocloudMe (hoster + account) --- module/plugins/accounts/JunocloudMe.py | 16 ++++++++++++++++ module/plugins/hoster/JunocloudMe.py | 29 +++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+) create mode 100644 module/plugins/accounts/JunocloudMe.py create mode 100644 module/plugins/hoster/JunocloudMe.py (limited to 'module') diff --git a/module/plugins/accounts/JunocloudMe.py b/module/plugins/accounts/JunocloudMe.py new file mode 100644 index 000000000..8cd7e8dde --- /dev/null +++ b/module/plugins/accounts/JunocloudMe.py @@ -0,0 +1,16 @@ +# -*- coding: utf-8 -*- + +from module.plugins.internal.XFSPAccount import XFSPAccount + + +class JunocloudMe(XFSPAccount): + __name__ = "JunocloudMe" + __type__ = "account" + __version__ = "0.01" + + __description__ = """Junocloud.me account plugin""" + __license__ = "GPLv3" + __authors__ = [("guidobelix", "guidobelix@hotmail.it")] + + + HOSTER_URL = "http://www.junocloud.me/" diff --git a/module/plugins/hoster/JunocloudMe.py b/module/plugins/hoster/JunocloudMe.py new file mode 100644 index 000000000..e51dda141 --- /dev/null +++ b/module/plugins/hoster/JunocloudMe.py @@ -0,0 +1,29 @@ +# -*- coding: utf-8 -*- + +from module.plugins.internal.XFSPHoster import XFSPHoster, create_getInfo + + +class JunocloudMe(XFSPHoster): + __name__ = "JunocloudMe" + __type__ = "hoster" + __version__ = "0.01" + + __pattern__ = r'http://(?:\w+\.)?junocloud\.me/\w{12}' + + __description__ = """Junocloud.me hoster plugin""" + __license__ = "GPLv3" + __authors__ = [("guidobelix", "guidobelix@hotmail.it")] + + + HOSTER_NAME = "junocloud.me" + + FILE_URL_REPLACEMENTS = [(r'//(junocloud)', r'//dl3.\1')] + + FILE_NAME_PATTERN = r'<p class="request_file">http://junocloud.me/w{12}/(?P<N>.+?)</p>' + FILE_SIZE_PATTERN = r'<p class="request_filesize">Size: (?P<S>[\d.,]+) (?P<U>\w+)</p>' + + OFFLINE_PATTERN = r'>No such file with this filename<' + TEMP_OFFLINE_PATTERN = r'The page may have been renamed, removed or be temporarily unavailable.<' + + +getInfo = create_getInfo(JunocloudMe) -- cgit v1.2.3 From cb41bc9bddd0d9308063224ad5e94264aadb12fc Mon Sep 17 00:00:00 2001 From: guidobelix <guidobelix@hotmail.it> Date: Tue, 14 Oct 2014 13:06:38 +0200 Subject: New crypter JunocloudMeFolder --- module/plugins/crypter/JunocloudMeFolder.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 module/plugins/crypter/JunocloudMeFolder.py (limited to 'module') diff --git a/module/plugins/crypter/JunocloudMeFolder.py b/module/plugins/crypter/JunocloudMeFolder.py new file mode 100644 index 000000000..9e5fa1cbf --- /dev/null +++ b/module/plugins/crypter/JunocloudMeFolder.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- + +from module.plugins.internal.SimpleCrypter import SimpleCrypter + + +class JunocloudMeFolder(SimpleCrypter): + __name__ = "JunocloudMeFolder" + __type__ = "crypter" + __version__ = "0.01" + + __pattern__ = r'http://(?:www\.)?junocloud\.me/folders/(?P<ID>\d+/\w+)' + + __description__ = """Junocloud.me folder decrypter plugin""" + __license__ = "GPLv3" + __authors__ = [("guidobelix", "guidobelix@hotmail.it")] + + + URL_REPLACEMENTS = [(__pattern__, r'http://www.junocloud.me/folders/\g<ID>?per_page=10000')] + + LINK_PATTERN = r'<a href="(.+?)" target="_blank">.+?</a>' -- cgit v1.2.3 From 77ef3e137d2d9222d0f8965adf374e6712123a99 Mon Sep 17 00:00:00 2001 From: Walter Purcaro <vuolter@gmail.com> Date: Tue, 14 Oct 2014 13:07:19 +0200 Subject: [XFSPHoster] TEXT_ENCODING support --- module/plugins/hooks/XFileSharingPro.py | 4 ++-- module/plugins/internal/XFSPHoster.py | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) (limited to 'module') diff --git a/module/plugins/hooks/XFileSharingPro.py b/module/plugins/hooks/XFileSharingPro.py index 232c893cc..f5d40dd62 100644 --- a/module/plugins/hooks/XFileSharingPro.py +++ b/module/plugins/hooks/XFileSharingPro.py @@ -11,12 +11,12 @@ class XFileSharingPro(Hook): __version__ = "0.15" __config__ = [("activated", "bool", "Activated", True), - ("match", "Always;Always except excluded;Listed only", "Match", "Always except excluded"), + ("match", "Always;Always except excluded;Listed only", "Hoster match", "Always except excluded"), ("load_default", "bool", "Include built-in hoster list", True), ("include_hosters", "str", "Include hosters (comma separated)", ""), ("exclude_hosters", "str", "Exclude hosters (comma separated)", "")] - __description__ = """XFileSharingPro hook plugin""" + __description__ = """Load XFileSharingPro based hosters which don't need a own plugin to work fine""" __license__ = "GPLv3" __authors__ = [("zoidberg", "zoidberg@mujmail.cz"), ("Walter Purcaro", "vuolter@gmail.com")] diff --git a/module/plugins/internal/XFSPHoster.py b/module/plugins/internal/XFSPHoster.py index 40bf26cfa..e7348d966 100644 --- a/module/plugins/internal/XFSPHoster.py +++ b/module/plugins/internal/XFSPHoster.py @@ -16,7 +16,7 @@ from module.utils import html_unescape class XFSPHoster(SimpleHoster): __name__ = "XFSPHoster" __type__ = "hoster" - __version__ = "0.02" + __version__ = "0.03" __pattern__ = None @@ -90,7 +90,7 @@ class XFSPHoster(SimpleHoster): # Due to a 0.4.9 core bug self.load would use cookies even if # cookies=False. Workaround using getURL to avoid cookies. # Can be reverted in 0.4.10 as the cookies bug has been fixed. - self.html = getURL(pyfile.url, decode=True, cookies=self.COOKIES) + self.html = getURL(pyfile.url, decode=not self.TEXT_ENCODING, cookies=self.COOKIES) self.file_info = self.getFileInfo() except PluginParseError: self.file_info = None -- cgit v1.2.3 From 450109d53cedf5f6cda68fb617d79fa0c6ebb97a Mon Sep 17 00:00:00 2001 From: Walter Purcaro <vuolter@gmail.com> Date: Tue, 14 Oct 2014 13:11:26 +0200 Subject: [ClickAndLoad] Code cosmetics --- module/plugins/hooks/ClickAndLoad.py | 56 ++++++++++++++++++------------------ module/web/cnl_app.py | 47 ++++++++++++++++-------------- 2 files changed, 53 insertions(+), 50 deletions(-) (limited to 'module') diff --git a/module/plugins/hooks/ClickAndLoad.py b/module/plugins/hooks/ClickAndLoad.py index 304cb9233..253f05ac5 100644 --- a/module/plugins/hooks/ClickAndLoad.py +++ b/module/plugins/hooks/ClickAndLoad.py @@ -6,34 +6,6 @@ import thread from module.plugins.Hook import Hook -class ClickAndLoad(Hook): - __name__ = "ClickAndLoad" - __type__ = "hook" - __version__ = "0.22" - - __config__ = [("activated", "bool", "Activated", True), - ("extern", "bool", "Allow external link adding", False)] - - __description__ = """Gives abillity to use jd's click and load. depends on webinterface""" - __license__ = "GPLv3" - __authors__ = [("RaNaN", "RaNaN@pyload.de"), - ("mkaay", "mkaay@mkaay.de")] - - - def coreReady(self): - self.port = int(self.config['webinterface']['port']) - if self.config['webinterface']['activated']: - try: - if self.getConfig("extern"): - ip = "0.0.0.0" - else: - ip = "127.0.0.1" - - thread.start_new_thread(proxy, (self, ip, self.port, 9666)) - except: - self.logError(_("ClickAndLoad port already in use")) - - def proxy(self, *settings): thread.start_new_thread(server, (self,) + settings) lock = thread.allocate_lock() @@ -75,3 +47,31 @@ def forward(source, destination): else: #source.shutdown(socket.SHUT_RD) destination.shutdown(socket.SHUT_WR) + + +class ClickAndLoad(Hook): + __name__ = "ClickAndLoad" + __type__ = "hook" + __version__ = "0.22" + + __config__ = [("activated", "bool", "Activated", True), + ("extern", "bool", "Allow external link adding", False)] + + __description__ = """Click'N'Load hook plugin""" + __license__ = "GPLv3" + __authors__ = [("RaNaN", "RaNaN@pyload.de"), + ("mkaay", "mkaay@mkaay.de")] + + + def coreReady(self): + self.port = int(self.config['webinterface']['port']) + if self.config['webinterface']['activated']: + try: + if self.getConfig("extern"): + ip = "0.0.0.0" + else: + ip = "127.0.0.1" + + thread.start_new_thread(proxy, (self, ip, self.port, 9666)) + except: + self.logError(_("ClickAndLoad port already in use")) diff --git a/module/web/cnl_app.py b/module/web/cnl_app.py index d8f7c1180..718499dfb 100644 --- a/module/web/cnl_app.py +++ b/module/web/cnl_app.py @@ -1,4 +1,3 @@ -#!/usr/bin/env python # -*- coding: utf-8 -*- from os.path import join import re @@ -9,6 +8,7 @@ from binascii import unhexlify from bottle import route, request, HTTPError from webinterface import PYLOAD, DL_ROOT, JS + try: from Crypto.Cipher import AES except: @@ -17,8 +17,8 @@ except: def local_check(function): def _view(*args, **kwargs): - if request.environ.get('REMOTE_ADDR', "0") in ('127.0.0.1', 'localhost') \ - or request.environ.get('HTTP_HOST','0') == '127.0.0.1:9666': + if request.environ.get("REMOTE_ADDR", "0") in ("127.0.0.1", "localhost") \ + or request.environ.get("HTTP_HOST", "0") in ("127.0.0.1:9666", "localhost:9666"): return function(*args, **kwargs) else: return HTTPError(403, "Forbidden") @@ -26,14 +26,15 @@ def local_check(function): return _view -@route("/flash") -@route("/flash/:id") -@route("/flash", method="POST") +@route('/flash') +@route('/flash/<id>') +@route('/flash', method='POST') @local_check def flash(id="0"): return "JDownloader\r\n" -@route("/flash/add", method="POST") + +@route('/flash/add', method='POST') @local_check def add(request): package = request.POST.get('referer', None) @@ -46,10 +47,10 @@ def add(request): return "" -@route("/flash/addcrypted", method="POST") + +@route('/flash/addcrypted', method='POST') @local_check def addcrypted(): - package = request.forms.get('referer', 'ClickAndLoad Package') dlc = request.forms['crypted'].replace(" ", "+") @@ -65,10 +66,10 @@ def addcrypted(): else: return "success\r\n" -@route("/flash/addcrypted2", method="POST") + +@route('/flash/addcrypted2', method='POST') @local_check def addcrypted2(): - package = request.forms.get("source", None) crypted = request.forms["crypted"] jk = request.forms["jk"] @@ -82,7 +83,7 @@ def addcrypted2(): try: jk = re.findall(r"return ('|\")(.+)('|\")", jk)[0][1] except: - ## Test for some known js functions to decode + ## Test for some known js functions to decode if jk.find("dec") > -1 and jk.find("org") > -1: org = re.findall(r"var org = ('|\")([^\"']+)", jk)[0][1] jk = list(org) @@ -100,7 +101,7 @@ def addcrypted2(): IV = Key obj = AES.new(Key, AES.MODE_CBC, IV) - result = obj.decrypt(crypted).replace("\x00", "").replace("\r","").split("\n") + result = obj.decrypt(crypted).replace("\x00", "").replace("\r", "").split("\n") result = filter(lambda x: x != "", result) @@ -114,13 +115,14 @@ def addcrypted2(): else: return "success\r\n" -@route("/flashgot_pyload") -@route("/flashgot_pyload", method="POST") -@route("/flashgot") -@route("/flashgot", method="POST") + +@route('/flashgot_pyload') +@route('/flashgot_pyload', method='POST') +@route('/flashgot') +@route('/flashgot', method='POST') @local_check def flashgot(): - if request.environ['HTTP_REFERER'] != "http://localhost:9666/flashgot" and request.environ['HTTP_REFERER'] != "http://127.0.0.1:9666/flashgot": + if request.environ['HTTP_REFERER'] not in ("http://localhost:9666/flashgot", "http://127.0.0.1:9666/flashgot"): return HTTPError() autostart = int(request.forms.get('autostart', 0)) @@ -135,7 +137,8 @@ def flashgot(): return "" -@route("/crossdomain.xml") + +@route('/crossdomain.xml') @local_check def crossdomain(): rep = "<?xml version=\"1.0\"?>\n" @@ -146,17 +149,17 @@ def crossdomain(): return rep -@route("/flash/checkSupportForUrl") +@route('/flash/checkSupportForUrl') @local_check def checksupport(): - url = request.GET.get("url") res = PYLOAD.checkURLs([url]) supported = (not res[0][1] is None) return str(supported).lower() -@route("/jdcheck.js") + +@route('/jdcheck.js') @local_check def jdcheck(): rep = "jdownloader=true;\n" -- cgit v1.2.3 From 388a2f6478d42e423f1f8442d8539983f3762f22 Mon Sep 17 00:00:00 2001 From: Walter Purcaro <vuolter@gmail.com> Date: Tue, 14 Oct 2014 13:38:49 +0200 Subject: Improve unit detection in size pattern --- module/plugins/accounts/MultishareCz.py | 2 +- module/plugins/hoster/BayfilesCom.py | 2 +- module/plugins/hoster/BillionuploadsCom.py | 2 +- module/plugins/hoster/BitshareCom.py | 2 +- module/plugins/hoster/CatShareNet.py | 2 +- module/plugins/hoster/CzshareCom.py | 2 +- module/plugins/hoster/DepositfilesCom.py | 2 +- module/plugins/hoster/DevhostSt.py | 2 +- module/plugins/hoster/DropboxCom.py | 2 +- module/plugins/hoster/EdiskCz.py | 2 +- module/plugins/hoster/FastshareCz.py | 2 +- module/plugins/hoster/FileStoreTo.py | 2 +- module/plugins/hoster/FilefactoryCom.py | 2 +- module/plugins/hoster/FileomCom.py | 2 +- module/plugins/hoster/FilepostCom.py | 2 +- module/plugins/hoster/FilepupNet.py | 2 +- module/plugins/hoster/FilerNet.py | 2 +- module/plugins/hoster/FourSharedCom.py | 2 +- module/plugins/hoster/FshareVn.py | 2 +- module/plugins/hoster/HellshareCz.py | 2 +- module/plugins/hoster/HundredEightyUploadCom.py | 2 +- module/plugins/hoster/IfileIt.py | 2 +- module/plugins/hoster/JumbofilesCom.py | 2 +- module/plugins/hoster/JunocloudMe.py | 2 +- module/plugins/hoster/KingfilesNet.py | 2 +- module/plugins/hoster/LoadTo.py | 2 +- module/plugins/hoster/LomafileCom.py | 2 +- module/plugins/hoster/LuckyShareNet.py | 2 +- module/plugins/hoster/MegaRapidCz.py | 2 +- module/plugins/hoster/MegasharesCom.py | 2 +- module/plugins/hoster/MovReelCom.py | 2 +- module/plugins/hoster/NosuploadCom.py | 2 +- module/plugins/hoster/NowDownloadEu.py | 2 +- module/plugins/hoster/OneFichierCom.py | 2 +- module/plugins/hoster/PromptfileCom.py | 2 +- module/plugins/hoster/QuickshareCz.py | 2 +- module/plugins/hoster/RapidgatorNet.py | 2 +- module/plugins/hoster/RemixshareCom.py | 2 +- module/plugins/hoster/RyushareCom.py | 2 +- module/plugins/hoster/SendspaceCom.py | 2 +- module/plugins/hoster/TurbobitNet.py | 2 +- module/plugins/hoster/TusfilesNet.py | 2 +- module/plugins/hoster/TwoSharedCom.py | 2 +- module/plugins/hoster/UloziskoSk.py | 2 +- module/plugins/hoster/UploadingCom.py | 2 +- module/plugins/hoster/UpstoreNet.py | 2 +- module/plugins/hoster/UptoboxCom.py | 2 +- module/plugins/hoster/ZippyshareCom.py | 2 +- module/plugins/internal/XFSPHoster.py | 2 +- 49 files changed, 49 insertions(+), 49 deletions(-) (limited to 'module') diff --git a/module/plugins/accounts/MultishareCz.py b/module/plugins/accounts/MultishareCz.py index a9b0a1620..ae32b8806 100644 --- a/module/plugins/accounts/MultishareCz.py +++ b/module/plugins/accounts/MultishareCz.py @@ -17,7 +17,7 @@ class MultishareCz(Account): __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] - TRAFFIC_LEFT_PATTERN = r'<span class="profil-zvyrazneni">Kredit:</span>\s*<strong>(?P<S>[\d.,]+) (?P<U>\w+)</strong>' + TRAFFIC_LEFT_PATTERN = r'<span class="profil-zvyrazneni">Kredit:</span>\s*<strong>(?P<S>[\d.,]+) (?P<U>[\w^_]+)</strong>' ACCOUNT_INFO_PATTERN = r'<input type="hidden" id="(u_ID|u_hash)" name="[^"]*" value="([^"]+)">' diff --git a/module/plugins/hoster/BayfilesCom.py b/module/plugins/hoster/BayfilesCom.py index 5f097ee2f..d38987227 100644 --- a/module/plugins/hoster/BayfilesCom.py +++ b/module/plugins/hoster/BayfilesCom.py @@ -21,7 +21,7 @@ class BayfilesCom(SimpleHoster): ("Walter Purcaro", "vuolter@gmail.com")] - FILE_INFO_PATTERN = r'<p title="(?P<N>[^"]+)">[^<]*<strong>(?P<S>[\d .,]+)(?P<U>\w+)</strong></p>' + FILE_INFO_PATTERN = r'<p title="(?P<N>[^"]+)">[^<]*<strong>(?P<S>[\d .,]+)(?P<U>[\w^_]+)</strong></p>' OFFLINE_PATTERN = r'(<p>The requested file could not be found.</p>|<title>404 Not Found)' WAIT_PATTERN = r'>Your IP [\d.]* has recently downloaded a file\. Upgrade to premium or wait (\d+) minutes\.<' diff --git a/module/plugins/hoster/BillionuploadsCom.py b/module/plugins/hoster/BillionuploadsCom.py index 7024a9472..2e12ba3cc 100644 --- a/module/plugins/hoster/BillionuploadsCom.py +++ b/module/plugins/hoster/BillionuploadsCom.py @@ -18,7 +18,7 @@ class BillionuploadsCom(XFSPHoster): HOSTER_NAME = "billionuploads.com" FILE_NAME_PATTERN = r'(?P[\d.,]+) (?P\w+)' + FILE_SIZE_PATTERN = r'(?P[\d.,]+) (?P[\w^_]+)' getInfo = create_getInfo(BillionuploadsCom) diff --git a/module/plugins/hoster/BitshareCom.py b/module/plugins/hoster/BitshareCom.py index 1b70b1710..8fd8892be 100644 --- a/module/plugins/hoster/BitshareCom.py +++ b/module/plugins/hoster/BitshareCom.py @@ -21,7 +21,7 @@ class BitshareCom(SimpleHoster): ("fragonib", "fragonib[AT]yahoo[DOT]es")] - FILE_INFO_PATTERN = r'Downloading (?P.+) - (?P[\d.,]+) (?P\w+)' + FILE_INFO_PATTERN = r'Downloading (?P.+) - (?P[\d.,]+) (?P[\w^_]+)' OFFLINE_PATTERN = r'(>We are sorry, but the requested file was not found in our database|>Error - File not available<|The file was deleted either by the uploader, inactivity or due to copyright claim)' COOKIES = [(".bitshare.com", "language_selection", "EN")] diff --git a/module/plugins/hoster/CatShareNet.py b/module/plugins/hoster/CatShareNet.py index 9d680a9ec..592792952 100644 --- a/module/plugins/hoster/CatShareNet.py +++ b/module/plugins/hoster/CatShareNet.py @@ -22,7 +22,7 @@ class CatShareNet(SimpleHoster): TEXT_ENCODING = True - FILE_INFO_PATTERN = r'(?P<N>.+) \((?P<S>[\d.,]+) (?P<U>\w+)\)<' + FILE_INFO_PATTERN = r'<title>(?P<N>.+) \((?P<S>[\d.,]+) (?P<U>[\w^_]+)\)<' OFFLINE_PATTERN = ur'Podany plik został usunięty\s*</div>' IP_BLOCKED_PATTERN = ur'>Nasz serwis wykrył że Twój adres IP nie pochodzi z Polski.<' diff --git a/module/plugins/hoster/CzshareCom.py b/module/plugins/hoster/CzshareCom.py index 9d2b8b35f..0ddca1473 100644 --- a/module/plugins/hoster/CzshareCom.py +++ b/module/plugins/hoster/CzshareCom.py @@ -22,7 +22,7 @@ class CzshareCom(SimpleHoster): FILE_NAME_PATTERN = r'<div class="tab" id="parameters">\s*<p>\s*Cel. n.zev: <a href=[^>]*>(?P<N>[^<]+)</a>' - FILE_SIZE_PATTERN = r'<div class="tab" id="category">(?:\s*<p>[^\n]*</p>)*\s*Velikost:\s*(?P<S>[\d .,]+)(?P<U>\w+)\s*</div>' + FILE_SIZE_PATTERN = r'<div class="tab" id="category">(?:\s*<p>[^\n]*</p>)*\s*Velikost:\s*(?P<S>[\d .,]+)(?P<U>[\w^_]+)\s*</div>' OFFLINE_PATTERN = r'<div class="header clearfix">\s*<h2 class="red">' FILE_SIZE_REPLACEMENTS = [(' ', '')] diff --git a/module/plugins/hoster/DepositfilesCom.py b/module/plugins/hoster/DepositfilesCom.py index 96540d454..5ec690a97 100644 --- a/module/plugins/hoster/DepositfilesCom.py +++ b/module/plugins/hoster/DepositfilesCom.py @@ -23,7 +23,7 @@ class DepositfilesCom(SimpleHoster): FILE_NAME_PATTERN = r'<script type="text/javascript">eval\( unescape\(\'(?P<N>.*?)\'' - FILE_SIZE_PATTERN = r': <b>(?P<S>[\d.,]+) (?P<U>\w+)</b>' + FILE_SIZE_PATTERN = r': <b>(?P<S>[\d.,]+) (?P<U>[\w^_]+)</b>' OFFLINE_PATTERN = r'<span class="html_download_api-not_exists"></span>' FILE_NAME_REPLACEMENTS = [(r'\%u([0-9A-Fa-f]{4})', lambda m: unichr(int(m.group(1), 16))), diff --git a/module/plugins/hoster/DevhostSt.py b/module/plugins/hoster/DevhostSt.py index 9b59ff5df..5c9055ca0 100644 --- a/module/plugins/hoster/DevhostSt.py +++ b/module/plugins/hoster/DevhostSt.py @@ -21,7 +21,7 @@ class DevhostSt(SimpleHoster): FILE_NAME_PATTERN = r'>Filename:</span> <div title="(?P<N>.+?)"' - FILE_SIZE_PATTERN = r'>Size:</span> (?P<S>[\d.,]+) (?P<U>\w+)' + FILE_SIZE_PATTERN = r'>Size:</span> (?P<S>[\d.,]+) (?P<U>[\w^_]+)' OFFLINE_PATTERN = r'>File Not Found<' LINK_PATTERN = r'id="downloadfile" href="(.+?)"' diff --git a/module/plugins/hoster/DropboxCom.py b/module/plugins/hoster/DropboxCom.py index 4f9945d91..01d06e842 100644 --- a/module/plugins/hoster/DropboxCom.py +++ b/module/plugins/hoster/DropboxCom.py @@ -18,7 +18,7 @@ class DropboxCom(SimpleHoster): FILE_NAME_PATTERN = r'<title>Dropbox - (?P<N>.+?)<' - FILE_SIZE_PATTERN = r' ·  (?P<S>[\d.,]+) (?P<U>\w+)' + FILE_SIZE_PATTERN = r' ·  (?P<S>[\d.,]+) (?P<U>[\w^_]+)' OFFLINE_PATTERN = r'<title>Dropbox - (404|Shared link error)<' diff --git a/module/plugins/hoster/EdiskCz.py b/module/plugins/hoster/EdiskCz.py index 9645b9834..afcd18e56 100644 --- a/module/plugins/hoster/EdiskCz.py +++ b/module/plugins/hoster/EdiskCz.py @@ -17,7 +17,7 @@ class EdiskCz(SimpleHoster): __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] - FILE_INFO_PATTERN = r'<span class="fl" title="(?P<N>[^"]+)">\s*.*?\((?P<S>[\d.,]+) (?P<U>\w+)\)</h1></span>' + FILE_INFO_PATTERN = r'<span class="fl" title="(?P<N>[^"]+)">\s*.*?\((?P<S>[\d.,]+) (?P<U>[\w^_]+)\)</h1></span>' OFFLINE_PATTERN = r'<h3>This file does not exist due to one of the following:</h3><ul><li>' ACTION_PATTERN = r'/en/download/(\d+/.*\.html)' diff --git a/module/plugins/hoster/FastshareCz.py b/module/plugins/hoster/FastshareCz.py index db85ae0ed..8c00aeef4 100644 --- a/module/plugins/hoster/FastshareCz.py +++ b/module/plugins/hoster/FastshareCz.py @@ -24,7 +24,7 @@ class FastshareCz(SimpleHoster): ("Walter Purcaro", "vuolter@gmail.com")] - FILE_INFO_PATTERN = r'<h1 class="dwp">(?P<N>[^<]+)</h1>\s*<div class="fileinfo">\s*Size\s*: (?P<S>\d+) (?P<U>\w+),' + FILE_INFO_PATTERN = r'<h1 class="dwp">(?P<N>[^<]+)</h1>\s*<div class="fileinfo">\s*Size\s*: (?P<S>\d+) (?P<U>[\w^_]+),' OFFLINE_PATTERN = r'>(The file has been deleted|Requested page not found)' FILE_URL_REPLACEMENTS = [("#.*", "")] diff --git a/module/plugins/hoster/FileStoreTo.py b/module/plugins/hoster/FileStoreTo.py index 89865e8be..549335a04 100644 --- a/module/plugins/hoster/FileStoreTo.py +++ b/module/plugins/hoster/FileStoreTo.py @@ -18,7 +18,7 @@ class FileStoreTo(SimpleHoster): ("stickell", "l.stickell@yahoo.it")] - FILE_INFO_PATTERN = r'File: <span[^>]*>(?P<N>.+)</span><br />Size: (?P<S>[\d.,]+) (?P<U>\w+)' + FILE_INFO_PATTERN = r'File: <span[^>]*>(?P<N>.+)</span><br />Size: (?P<S>[\d.,]+) (?P<U>[\w^_]+)' OFFLINE_PATTERN = r'>Download-Datei wurde nicht gefunden<' diff --git a/module/plugins/hoster/FilefactoryCom.py b/module/plugins/hoster/FilefactoryCom.py index 15f44ad61..8d231e350 100644 --- a/module/plugins/hoster/FilefactoryCom.py +++ b/module/plugins/hoster/FilefactoryCom.py @@ -29,7 +29,7 @@ class FilefactoryCom(SimpleHoster): __authors__ = [("stickell", "l.stickell@yahoo.it")] - FILE_INFO_PATTERN = r'<div id="file_name"[^>]*>\s*<h2>(?P<N>[^<]+)</h2>\s*<div id="file_info">\s*(?P<S>[\d.,]+) (?P<U>\w+) uploaded' + FILE_INFO_PATTERN = r'<div id="file_name"[^>]*>\s*<h2>(?P<N>[^<]+)</h2>\s*<div id="file_info">\s*(?P<S>[\d.,]+) (?P<U>[\w^_]+) uploaded' LINK_PATTERN = r'<a href="(https?://[^"]+)"[^>]*><i[^>]*></i> Download with FileFactory Premium</a>' OFFLINE_PATTERN = r'<h2>File Removed</h2>|This file is no longer available' PREMIUM_ONLY_PATTERN = r'>Premium Account Required<' diff --git a/module/plugins/hoster/FileomCom.py b/module/plugins/hoster/FileomCom.py index 6c8be59da..60ab5c5f9 100644 --- a/module/plugins/hoster/FileomCom.py +++ b/module/plugins/hoster/FileomCom.py @@ -23,7 +23,7 @@ class FileomCom(XFSPHoster): FILE_URL_REPLACEMENTS = [(r'/$', "")] FILE_NAME_PATTERN = r'Filename: <span>(?P<N>.+?)<' - FILE_SIZE_PATTERN = r'File Size: <span class="size">(?P<S>[\d.,]+) (?P<U>\w+)' + FILE_SIZE_PATTERN = r'File Size: <span class="size">(?P<S>[\d.,]+) (?P<U>[\w^_]+)' ERROR_PATTERN = r'class=["\']err["\'][^>]*>(.*?)(?:\'|</)' diff --git a/module/plugins/hoster/FilepostCom.py b/module/plugins/hoster/FilepostCom.py index 4449ae2c2..f833ab737 100644 --- a/module/plugins/hoster/FilepostCom.py +++ b/module/plugins/hoster/FilepostCom.py @@ -21,7 +21,7 @@ class FilepostCom(SimpleHoster): __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] - FILE_INFO_PATTERN = r'<input type="text" id="url" value=\'<a href[^>]*>(?P<N>[^>]+?) - (?P<S>[\d.,]+) (?P<U>\w+)</a>\' class="inp_text"/>' + FILE_INFO_PATTERN = r'<input type="text" id="url" value=\'<a href[^>]*>(?P<N>[^>]+?) - (?P<S>[\d.,]+) (?P<U>[\w^_]+)</a>\' class="inp_text"/>' OFFLINE_PATTERN = r'class="error_msg_title"> Invalid or Deleted File. </div>|<div class="file_info file_info_deleted">' PREMIUM_ONLY_PATTERN = r'members only. Please upgrade to premium|a premium membership is required to download this file' diff --git a/module/plugins/hoster/FilepupNet.py b/module/plugins/hoster/FilepupNet.py index 1180f7f9e..39979b2a2 100644 --- a/module/plugins/hoster/FilepupNet.py +++ b/module/plugins/hoster/FilepupNet.py @@ -23,7 +23,7 @@ class FilepupNet(SimpleHoster): FILE_NAME_PATTERN = r'>(?P<N>.+?)</h1>' - FILE_SIZE_PATTERN = r'class="fa fa-archive"></i> \((?P<S>[\d.,]+) (?P<U>\w+)' + FILE_SIZE_PATTERN = r'class="fa fa-archive"></i> \((?P<S>[\d.,]+) (?P<U>[\w^_]+)' OFFLINE_PATTERN = r'>This file has been deleted' diff --git a/module/plugins/hoster/FilerNet.py b/module/plugins/hoster/FilerNet.py index 31bb7082a..c8211b435 100644 --- a/module/plugins/hoster/FilerNet.py +++ b/module/plugins/hoster/FilerNet.py @@ -25,7 +25,7 @@ class FilerNet(SimpleHoster): __authors__ = [("stickell", "l.stickell@yahoo.it")] - FILE_INFO_PATTERN = r'<h1 class="page-header">Free Download (?P<N>\S+) <small>(?P<S>[\w.]+) (?P<U>\w+)</small></h1>' + FILE_INFO_PATTERN = r'<h1 class="page-header">Free Download (?P<N>\S+) <small>(?P<S>[\w.]+) (?P<U>[\w^_]+)</small></h1>' OFFLINE_PATTERN = r'Nicht gefunden' LINK_PATTERN = r'href="([^"]+)">Get download</a>' diff --git a/module/plugins/hoster/FourSharedCom.py b/module/plugins/hoster/FourSharedCom.py index a36f43eea..348a027fe 100644 --- a/module/plugins/hoster/FourSharedCom.py +++ b/module/plugins/hoster/FourSharedCom.py @@ -19,7 +19,7 @@ class FourSharedCom(SimpleHoster): FILE_NAME_PATTERN = r'<meta name="title" content="(?P<N>.+?)"' - FILE_SIZE_PATTERN = r'<span title="Size: (?P<S>[\d.,]+) (?P<U>\w+)">' + FILE_SIZE_PATTERN = r'<span title="Size: (?P<S>[\d.,]+) (?P<U>[\w^_]+)">' OFFLINE_PATTERN = r'The file link that you requested is not valid\.|This file was deleted.' FILE_NAME_REPLACEMENTS = [(r"&#(\d+).", lambda m: unichr(int(m.group(1))))] diff --git a/module/plugins/hoster/FshareVn.py b/module/plugins/hoster/FshareVn.py index 4d01d7c7f..2f95d49e6 100644 --- a/module/plugins/hoster/FshareVn.py +++ b/module/plugins/hoster/FshareVn.py @@ -36,7 +36,7 @@ class FshareVn(SimpleHoster): __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] - FILE_INFO_PATTERN = r'<p>(?P<N>[^<]+)<\\/p>[\\trn\s]*<p>(?P<S>[\d.,]+)\s*(?P<U>\w+)<\\/p>' + FILE_INFO_PATTERN = r'<p>(?P<N>[^<]+)<\\/p>[\\trn\s]*<p>(?P<S>[\d.,]+)\s*(?P<U>[\w^_]+)<\\/p>' OFFLINE_PATTERN = r'<div class=\\"f_left file_w\\"|<\\/p>\\t\\t\\t\\t\\r\\n\\t\\t<p><\\/p>\\t\\t\\r\\n\\t\\t<p>0 KB<\\/p>' FILE_NAME_REPLACEMENTS = [("(.*)", doubleDecode)] diff --git a/module/plugins/hoster/HellshareCz.py b/module/plugins/hoster/HellshareCz.py index 00fc17fba..ddb7682b1 100644 --- a/module/plugins/hoster/HellshareCz.py +++ b/module/plugins/hoster/HellshareCz.py @@ -18,7 +18,7 @@ class HellshareCz(SimpleHoster): FILE_NAME_PATTERN = r'<h1 id="filename"[^>]*>(?P<N>[^<]+)</h1>' - FILE_SIZE_PATTERN = r'<strong id="FileSize_master">(?P<S>[\d.,]+) (?P<U>\w+)</strong>' + FILE_SIZE_PATTERN = r'<strong id="FileSize_master">(?P<S>[\d.,]+) (?P<U>[\w^_]+)</strong>' OFFLINE_PATTERN = r'<h1>File not found.</h1>' SHOW_WINDOW_PATTERN = r'<a href="([^?]+/(\d+)/\?do=(fileDownloadButton|relatedFileDownloadButton-\2)-showDownloadWindow)"' diff --git a/module/plugins/hoster/HundredEightyUploadCom.py b/module/plugins/hoster/HundredEightyUploadCom.py index 02bdf80fa..c16800563 100644 --- a/module/plugins/hoster/HundredEightyUploadCom.py +++ b/module/plugins/hoster/HundredEightyUploadCom.py @@ -21,7 +21,7 @@ class HundredEightyUploadCom(XFSPHoster): HOSTER_NAME = "180upload.com" FILE_NAME_PATTERN = r'Filename:</b></td><td nowrap>(?P<N>.+)</td></tr>-->' - FILE_SIZE_PATTERN = r'Size:</b></td><td>(?P<S>[\d.,]+) (?P<U>\w+)\s*<small>' + FILE_SIZE_PATTERN = r'Size:</b></td><td>(?P<S>[\d.,]+) (?P<U>[\w^_]+)\s*<small>' getInfo = create_getInfo(HundredEightyUploadCom) diff --git a/module/plugins/hoster/IfileIt.py b/module/plugins/hoster/IfileIt.py index 6fb8e992f..e6bd4fd04 100644 --- a/module/plugins/hoster/IfileIt.py +++ b/module/plugins/hoster/IfileIt.py @@ -21,7 +21,7 @@ class IfileIt(SimpleHoster): LINK_PATTERN = r'</span> If it doesn\'t, <a target="_blank" href="([^"]+)">' RECAPTCHA_PATTERN = r'var __recaptcha_public\s*=\s*\'(.+?)\'' - FILE_INFO_PATTERN = r'<span style="cursor: default;[^>]*>\s*(?P<N>.*?)\s* \s*<strong>\s*(?P<S>[\d.,]+)\s*(?P<U>\w+)\s*</strong>\s*</span>' + FILE_INFO_PATTERN = r'<span style="cursor: default;[^>]*>\s*(?P<N>.*?)\s* \s*<strong>\s*(?P<S>[\d.,]+)\s*(?P<U>[\w^_]+)\s*</strong>\s*</span>' OFFLINE_PATTERN = r'<span style="cursor: default;[^>]*>\s* \s*<strong>\s*</strong>\s*</span>' TEMP_OFFLINE_PATTERN = r'<span class="msg_red">Downloading of this file is temporarily disabled</span>' diff --git a/module/plugins/hoster/JumbofilesCom.py b/module/plugins/hoster/JumbofilesCom.py index f5456efb7..fe0b72804 100644 --- a/module/plugins/hoster/JumbofilesCom.py +++ b/module/plugins/hoster/JumbofilesCom.py @@ -17,7 +17,7 @@ class JumbofilesCom(SimpleHoster): __authors__ = [("godofdream", "soilfiction@gmail.com")] - FILE_INFO_PATTERN = r'<TR><TD>(?P<N>[^<]+?)\s*<small>\((?P<S>[\d.,]+)\s*(?P<U>\w+)' + FILE_INFO_PATTERN = r'<TR><TD>(?P<N>[^<]+?)\s*<small>\((?P<S>[\d.,]+)\s*(?P<U>[\w^_]+)' OFFLINE_PATTERN = r'Not Found or Deleted / Disabled due to inactivity or DMCA' LINK_PATTERN = r'<meta http-equiv="refresh" content="10;url=(.+)">' diff --git a/module/plugins/hoster/JunocloudMe.py b/module/plugins/hoster/JunocloudMe.py index e51dda141..a60981236 100644 --- a/module/plugins/hoster/JunocloudMe.py +++ b/module/plugins/hoster/JunocloudMe.py @@ -20,7 +20,7 @@ class JunocloudMe(XFSPHoster): FILE_URL_REPLACEMENTS = [(r'//(junocloud)', r'//dl3.\1')] FILE_NAME_PATTERN = r'<p class="request_file">http://junocloud.me/w{12}/(?P<N>.+?)</p>' - FILE_SIZE_PATTERN = r'<p class="request_filesize">Size: (?P<S>[\d.,]+) (?P<U>\w+)</p>' + FILE_SIZE_PATTERN = r'<p class="request_filesize">Size: (?P<S>[\d.,]+) (?P<U>[\w^_]+)</p>' OFFLINE_PATTERN = r'>No such file with this filename<' TEMP_OFFLINE_PATTERN = r'The page may have been renamed, removed or be temporarily unavailable.<' diff --git a/module/plugins/hoster/KingfilesNet.py b/module/plugins/hoster/KingfilesNet.py index 8eaf54e12..e4e664c14 100644 --- a/module/plugins/hoster/KingfilesNet.py +++ b/module/plugins/hoster/KingfilesNet.py @@ -20,7 +20,7 @@ class KingfilesNet(SimpleHoster): FILE_NAME_PATTERN = r'name="fname" value="(?P<N>.+?)">' - FILE_SIZE_PATTERN = r'>Size: .+?">(?P<S>[\d.,]+) (?P<U>\w+)' + FILE_SIZE_PATTERN = r'>Size: .+?">(?P<S>[\d.,]+) (?P<U>[\w^_]+)' OFFLINE_PATTERN = r'>(File Not Found</b><br><br>|File Not Found</h2>)' diff --git a/module/plugins/hoster/LoadTo.py b/module/plugins/hoster/LoadTo.py index 03ec6e71b..b0f974133 100644 --- a/module/plugins/hoster/LoadTo.py +++ b/module/plugins/hoster/LoadTo.py @@ -24,7 +24,7 @@ class LoadTo(SimpleHoster): FILE_NAME_PATTERN = r'<h1>(?P<N>.+)</h1>' - FILE_SIZE_PATTERN = r'Size: (?P<S>[\d.,]+) (?P<U>\w+)' + FILE_SIZE_PATTERN = r'Size: (?P<S>[\d.,]+) (?P<U>[\w^_]+)' OFFLINE_PATTERN = r'>Can\'t find file' LINK_PATTERN = r'<form method="post" action="(.+?)"' diff --git a/module/plugins/hoster/LomafileCom.py b/module/plugins/hoster/LomafileCom.py index 51e1d7711..0c7e03484 100644 --- a/module/plugins/hoster/LomafileCom.py +++ b/module/plugins/hoster/LomafileCom.py @@ -19,7 +19,7 @@ class LomafileCom(XFSPHoster): HOSTER_NAME = "lomafile.com" FILE_NAME_PATTERN = r'<a href="http://lomafile\.com/w{12}/(?P<N>.+?)">' - FILE_SIZE_PATTERN = r'Size:</b></td><td>(?P<S>[\d.,]+) (?P<U>\w+)' + FILE_SIZE_PATTERN = r'Size:</b></td><td>(?P<S>[\d.,]+) (?P<U>[\w^_]+)' OFFLINE_PATTERN = r'>(No such file|Software error:<)' TEMP_OFFLINE_PATTERN = r'The page may have been renamed, removed or be temporarily unavailable.<' diff --git a/module/plugins/hoster/LuckyShareNet.py b/module/plugins/hoster/LuckyShareNet.py index 1637adac0..82c615bbd 100644 --- a/module/plugins/hoster/LuckyShareNet.py +++ b/module/plugins/hoster/LuckyShareNet.py @@ -20,7 +20,7 @@ class LuckyShareNet(SimpleHoster): __authors__ = [("stickell", "l.stickell@yahoo.it")] - FILE_INFO_PATTERN = r'<h1 class=\'file_name\'>(?P<N>\S+)</h1>\s*<span class=\'file_size\'>Filesize: (?P<S>[\d.,]+)(?P<U>\w+)</span>' + FILE_INFO_PATTERN = r'<h1 class=\'file_name\'>(?P<N>\S+)</h1>\s*<span class=\'file_size\'>Filesize: (?P<S>[\d.,]+)(?P<U>[\w^_]+)</span>' OFFLINE_PATTERN = r'There is no such file available' diff --git a/module/plugins/hoster/MegaRapidCz.py b/module/plugins/hoster/MegaRapidCz.py index cc24e6fa6..06e6626c6 100644 --- a/module/plugins/hoster/MegaRapidCz.py +++ b/module/plugins/hoster/MegaRapidCz.py @@ -35,7 +35,7 @@ class MegaRapidCz(SimpleHoster): FILE_NAME_PATTERN = r'<h1[^>]*><span[^>]*>(?:<a[^>]*>)?(?P<N>[^<]+)' - FILE_SIZE_PATTERN = r'<td class="i">Velikost:</td>\s*<td class="h"><strong>\s*(?P<S>[\d.,]+) (?P<U>\w+)</strong></td>' + FILE_SIZE_PATTERN = r'<td class="i">Velikost:</td>\s*<td class="h"><strong>\s*(?P<S>[\d.,]+) (?P<U>[\w^_]+)</strong></td>' OFFLINE_PATTERN = ur'Nastala chyba 404|Soubor byl smazán' FORCE_CHECK_TRAFFIC = True diff --git a/module/plugins/hoster/MegasharesCom.py b/module/plugins/hoster/MegasharesCom.py index 799c8f5e0..2a7d4659d 100644 --- a/module/plugins/hoster/MegasharesCom.py +++ b/module/plugins/hoster/MegasharesCom.py @@ -20,7 +20,7 @@ class MegasharesCom(SimpleHoster): FILE_NAME_PATTERN = r'<h1 class="black xxl"[^>]*title="(?P<N>[^"]+)">' - FILE_SIZE_PATTERN = r'<strong><span class="black">Filesize:</span></strong> (?P<S>[\d.,]+) (?P<U>\w+)' + FILE_SIZE_PATTERN = r'<strong><span class="black">Filesize:</span></strong> (?P<S>[\d.,]+) (?P<U>[\w^_]+)' OFFLINE_PATTERN = r'<dd class="red">(Invalid Link Request|Link has been deleted|Invalid link)' LINK_PATTERN = r'<div id="show_download_button_%d"[^>]*>\s*<a href="([^"]+)">' diff --git a/module/plugins/hoster/MovReelCom.py b/module/plugins/hoster/MovReelCom.py index 96741f347..4b3cca4d5 100644 --- a/module/plugins/hoster/MovReelCom.py +++ b/module/plugins/hoster/MovReelCom.py @@ -18,7 +18,7 @@ class MovReelCom(XFSPHoster): HOSTER_NAME = "movreel.com" FILE_NAME_PATTERN = r'Filename: <b>(?P<N>.+?)<' - FILE_SIZE_PATTERN = r'Size: (?P<S>[\d.,]+) (?P<U>\w+)' + FILE_SIZE_PATTERN = r'Size: (?P<S>[\d.,]+) (?P<U>[\w^_]+)' LINK_PATTERN = r'<a href="([^"]+)">Download Link' diff --git a/module/plugins/hoster/NosuploadCom.py b/module/plugins/hoster/NosuploadCom.py index a8bb345f2..19d851b0a 100644 --- a/module/plugins/hoster/NosuploadCom.py +++ b/module/plugins/hoster/NosuploadCom.py @@ -19,7 +19,7 @@ class NosuploadCom(XFSPHoster): HOSTER_NAME = "nosupload.com" - FILE_SIZE_PATTERN = r'<p><strong>Size:</strong> (?P<S>[\d.,]+) (?P<U>\w+)</p>' + FILE_SIZE_PATTERN = r'<p><strong>Size:</strong> (?P<S>[\d.,]+) (?P<U>[\w^_]+)</p>' LINK_PATTERN = r'<a class="select" href="(http://.+?)">Download</a>' WAIT_PATTERN = r'Please wait.*?>(\d+)</span>' diff --git a/module/plugins/hoster/NowDownloadEu.py b/module/plugins/hoster/NowDownloadEu.py index 2bde071ab..b2c98dc40 100644 --- a/module/plugins/hoster/NowDownloadEu.py +++ b/module/plugins/hoster/NowDownloadEu.py @@ -19,7 +19,7 @@ class NowDownloadEu(SimpleHoster): ("Walter Purcaro", "vuolter@gmail.com")] - FILE_INFO_PATTERN = r'Downloading</span> <br> (?P<N>.*) (?P<S>[\d.,]+) (?P<U>\w+) </h4>' + FILE_INFO_PATTERN = r'Downloading</span> <br> (?P<N>.*) (?P<S>[\d.,]+) (?P<U>[\w^_]+) </h4>' OFFLINE_PATTERN = r'(This file does not exist!)' TOKEN_PATTERN = r'"(/api/token\.php\?token=\w+)"' diff --git a/module/plugins/hoster/OneFichierCom.py b/module/plugins/hoster/OneFichierCom.py index 81eff0a27..41a618d13 100644 --- a/module/plugins/hoster/OneFichierCom.py +++ b/module/plugins/hoster/OneFichierCom.py @@ -23,7 +23,7 @@ class OneFichierCom(SimpleHoster): FILE_NAME_PATTERN = r'>Filename :</th>\s*<td>(?P<N>.+?)<' - FILE_SIZE_PATTERN = r'>Size :</th>\s*<td>(?P<S>[\d.,]+) (?P<U>\w+)' + FILE_SIZE_PATTERN = r'>Size :</th>\s*<td>(?P<S>[\d.,]+) (?P<U>[\w^_]+)' OFFLINE_PATTERN = r'>The (requested)? file (could not be found|has been deleted)' FILE_URL_REPLACEMENTS = [(__pattern__, r'http://\g<ID>.\g<HOST>/en/')] diff --git a/module/plugins/hoster/PromptfileCom.py b/module/plugins/hoster/PromptfileCom.py index 548f510fe..11b7d5857 100644 --- a/module/plugins/hoster/PromptfileCom.py +++ b/module/plugins/hoster/PromptfileCom.py @@ -17,7 +17,7 @@ class PromptfileCom(SimpleHoster): __authors__ = [("igel", "igelkun@myopera.com")] - FILE_INFO_PATTERN = r'<span style="[^"]*" title="[^"]*">(?P<N>.*?) \((?P<S>[\d.,]+) (?P<U>\w+)\)</span>' + FILE_INFO_PATTERN = r'<span style="[^"]*" title="[^"]*">(?P<N>.*?) \((?P<S>[\d.,]+) (?P<U>[\w^_]+)\)</span>' OFFLINE_PATTERN = r'<span style="[^"]*" title="File Not Found">File Not Found</span>' CHASH_PATTERN = r'<input type="hidden" name="chash" value="([^"]*)" />' diff --git a/module/plugins/hoster/QuickshareCz.py b/module/plugins/hoster/QuickshareCz.py index 20af76813..5946565c6 100644 --- a/module/plugins/hoster/QuickshareCz.py +++ b/module/plugins/hoster/QuickshareCz.py @@ -20,7 +20,7 @@ class QuickshareCz(SimpleHoster): FILE_NAME_PATTERN = r'<th width="145px">Název:</th>\s*<td style="word-wrap:break-word;">(?P<N>[^<]+)</td>' - FILE_SIZE_PATTERN = r'<th>Velikost:</th>\s*<td>(?P<S>[\d.,]+) (?P<U>\w+)</td>' + FILE_SIZE_PATTERN = r'<th>Velikost:</th>\s*<td>(?P<S>[\d.,]+) (?P<U>[\w^_]+)</td>' OFFLINE_PATTERN = r'<script type="text/javascript">location\.href=\'/chyba\';</script>' diff --git a/module/plugins/hoster/RapidgatorNet.py b/module/plugins/hoster/RapidgatorNet.py index 639e70ffa..3da9846cf 100644 --- a/module/plugins/hoster/RapidgatorNet.py +++ b/module/plugins/hoster/RapidgatorNet.py @@ -29,7 +29,7 @@ class RapidgatorNet(SimpleHoster): API_URL = "http://rapidgator.net/api/file" FILE_NAME_PATTERN = r'<title>Download file (?P<N>.*)' - FILE_SIZE_PATTERN = r'File size:\s*(?P[\d.,]+) (?P\w+)' + FILE_SIZE_PATTERN = r'File size:\s*(?P[\d.,]+) (?P[\w^_]+)' OFFLINE_PATTERN = r'>(File not found|Error 404)' JSVARS_PATTERN = r'\s+var\s*(startTimerUrl|getDownloadUrl|captchaUrl|fid|secs)\s*=\s*\'?(.*?)\'?;' diff --git a/module/plugins/hoster/RemixshareCom.py b/module/plugins/hoster/RemixshareCom.py index dc50fcbfd..5e691c2bc 100644 --- a/module/plugins/hoster/RemixshareCom.py +++ b/module/plugins/hoster/RemixshareCom.py @@ -26,7 +26,7 @@ class RemixshareCom(SimpleHoster): ("Walter Purcaro", "vuolter@gmail.com")] - FILE_INFO_PATTERN = r'title=\'.+?\'>(?P.+?) \((?P\d+) (?P\w+)\)<' + FILE_INFO_PATTERN = r'title=\'.+?\'>(?P.+?) \((?P\d+) (?P[\w^_]+)\)<' OFFLINE_PATTERN = r'

    Ooops!<' LINK_PATTERN = r'(http://remixshare\.com/downloadfinal/.+?)"' diff --git a/module/plugins/hoster/RyushareCom.py b/module/plugins/hoster/RyushareCom.py index e88d9a8c6..841af351c 100644 --- a/module/plugins/hoster/RyushareCom.py +++ b/module/plugins/hoster/RyushareCom.py @@ -25,7 +25,7 @@ class RyushareCom(XFSPHoster): HOSTER_NAME = "ryushare.com" - FILE_SIZE_PATTERN = r'You have requested [^<]+ \((?P[\d.,]+) (?P\w+)' + FILE_SIZE_PATTERN = r'You have requested [^<]+ \((?P[\d.,]+) (?P[\w^_]+)' WAIT_PATTERN = r'You have to wait ((?P\d+) hour[s]?, )?((?P\d+) minute[s], )?(?P\d+) second[s]' LINK_PATTERN = r'Click here to download<' diff --git a/module/plugins/hoster/SendspaceCom.py b/module/plugins/hoster/SendspaceCom.py index 6b71c65bd..85fa196a3 100644 --- a/module/plugins/hoster/SendspaceCom.py +++ b/module/plugins/hoster/SendspaceCom.py @@ -18,7 +18,7 @@ class SendspaceCom(SimpleHoster): FILE_NAME_PATTERN = r'

    \s*<(?:b|strong)>(?P[^<]+)\s*File Size:\s*(?P[\d.,]+)(?P\w+)\s*

    ' + FILE_SIZE_PATTERN = r'
    \s*File Size:\s*(?P[\d.,]+)(?P[\w^_]+)\s*
    ' OFFLINE_PATTERN = r'
    Sorry, the file you requested is not available.
    ' LINK_PATTERN = r'
    (?P.+?)<' - FILE_SIZE_PATTERN = r'class="file-size">(?P[\d.,]+) (?P\w+)' + FILE_SIZE_PATTERN = r'class="file-size">(?P[\d.,]+) (?P[\w^_]+)' OFFLINE_PATTERN = r'

    File Not Found

    |html\(\'File (?:was )?not found' FILE_URL_REPLACEMENTS = [(__pattern__, "http://turbobit.net/\g.html")] diff --git a/module/plugins/hoster/TusfilesNet.py b/module/plugins/hoster/TusfilesNet.py index b976506de..b0540a15f 100644 --- a/module/plugins/hoster/TusfilesNet.py +++ b/module/plugins/hoster/TusfilesNet.py @@ -18,7 +18,7 @@ class TusfilesNet(XFSPHoster): HOSTER_NAME = "tusfiles.net" - FILE_INFO_PATTERN = r'\](?P.+) - (?P[\d.,]+) (?P\w+)\[' + FILE_INFO_PATTERN = r'\](?P.+) - (?P[\d.,]+) (?P[\w^_]+)\[' OFFLINE_PATTERN = r'>File Not Found|TusFiles - Fast Sharing Files!' diff --git a/module/plugins/hoster/TwoSharedCom.py b/module/plugins/hoster/TwoSharedCom.py index 280f1d910..adfd44d6f 100644 --- a/module/plugins/hoster/TwoSharedCom.py +++ b/module/plugins/hoster/TwoSharedCom.py @@ -18,7 +18,7 @@ class TwoSharedCom(SimpleHoster): FILE_NAME_PATTERN = r'<h1>(?P<N>.*)</h1>' - FILE_SIZE_PATTERN = r'<span class="dtitle">File size:</span>\s*(?P<S>[\d.,]+) (?P<U>\w+)' + FILE_SIZE_PATTERN = r'<span class="dtitle">File size:</span>\s*(?P<S>[\d.,]+) (?P<U>[\w^_]+)' OFFLINE_PATTERN = r'The file link that you requested is not valid\.|This file was deleted\.' LINK_PATTERN = r'window.location =\'(.+?)\';' diff --git a/module/plugins/hoster/UloziskoSk.py b/module/plugins/hoster/UloziskoSk.py index 7666678cd..bd4bedf92 100644 --- a/module/plugins/hoster/UloziskoSk.py +++ b/module/plugins/hoster/UloziskoSk.py @@ -18,7 +18,7 @@ class UloziskoSk(SimpleHoster): FILE_NAME_PATTERN = r'<div class="down1">(?P<N>[^<]+)</div>' - FILE_SIZE_PATTERN = ur'Veľkosť súboru: <strong>(?P<S>[\d.,]+) (?P<U>\w+)</strong><br />' + FILE_SIZE_PATTERN = ur'Veľkosť súboru: <strong>(?P<S>[\d.,]+) (?P<U>[\w^_]+)</strong><br />' OFFLINE_PATTERN = ur'<span class = "red">Zadaný súbor neexistuje z jedného z nasledujúcich dôvodov:</span>' LINK_PATTERN = r'<form name = "formular" action = "([^"]+)" method = "post">' diff --git a/module/plugins/hoster/UploadingCom.py b/module/plugins/hoster/UploadingCom.py index a55790441..e3f75a3f9 100644 --- a/module/plugins/hoster/UploadingCom.py +++ b/module/plugins/hoster/UploadingCom.py @@ -23,7 +23,7 @@ class UploadingCom(SimpleHoster): FILE_NAME_PATTERN = r'id="file_title">(?P<N>.+)</' - FILE_SIZE_PATTERN = r'size tip_container">(?P<S>[\d.,]+) (?P<U>\w+)<' + FILE_SIZE_PATTERN = r'size tip_container">(?P<S>[\d.,]+) (?P<U>[\w^_]+)<' OFFLINE_PATTERN = r'(Page|file) not found' COOKIES = [(".uploading.com", "lang", "1"), diff --git a/module/plugins/hoster/UpstoreNet.py b/module/plugins/hoster/UpstoreNet.py index ef9cd9e5d..fd13f6d41 100644 --- a/module/plugins/hoster/UpstoreNet.py +++ b/module/plugins/hoster/UpstoreNet.py @@ -18,7 +18,7 @@ class UpstoreNet(SimpleHoster): __authors__ = [("igel", "igelkun@myopera.com")] - FILE_INFO_PATTERN = r'<div class="comment">.*?</div>\s*\n<h2 style="margin:0">(?P<N>.*?)</h2>\s*\n<div class="comment">\s*\n\s*(?P<S>[\d.,]+) (?P<U>\w+)' + FILE_INFO_PATTERN = r'<div class="comment">.*?</div>\s*\n<h2 style="margin:0">(?P<N>.*?)</h2>\s*\n<div class="comment">\s*\n\s*(?P<S>[\d.,]+) (?P<U>[\w^_]+)' OFFLINE_PATTERN = r'<span class="error">File not found</span>' WAIT_PATTERN = r'var sec = (\d+)' diff --git a/module/plugins/hoster/UptoboxCom.py b/module/plugins/hoster/UptoboxCom.py index 3b3757bb2..90bae2c01 100644 --- a/module/plugins/hoster/UptoboxCom.py +++ b/module/plugins/hoster/UptoboxCom.py @@ -19,7 +19,7 @@ class UptoboxCom(XFSPHoster): HOSTER_NAME = "uptobox.com" - FILE_INFO_PATTERN = r'"para_title">(?P<N>.+) \((?P<S>[\d.,]+) (?P<U>\w+)\)' + FILE_INFO_PATTERN = r'"para_title">(?P<N>.+) \((?P<S>[\d.,]+) (?P<U>[\w^_]+)\)' OFFLINE_PATTERN = r'>(File not found|Access Denied|404 Not Found)' WAIT_PATTERN = r'>(\d+)</span> seconds<' diff --git a/module/plugins/hoster/ZippyshareCom.py b/module/plugins/hoster/ZippyshareCom.py index f2ba853fc..29a23353f 100644 --- a/module/plugins/hoster/ZippyshareCom.py +++ b/module/plugins/hoster/ZippyshareCom.py @@ -21,7 +21,7 @@ class ZippyshareCom(SimpleHoster): FILE_NAME_PATTERN = r'>Name:.+?">(?P<N>.+?)<' - FILE_SIZE_PATTERN = r'>Size:.+?">(?P<S>[\d.,]+) (?P<U>\w+)' + FILE_SIZE_PATTERN = r'>Size:.+?">(?P<S>[\d.,]+) (?P<U>[\w^_]+)' OFFLINE_PATTERN = r'>File does not exist on this server<' diff --git a/module/plugins/internal/XFSPHoster.py b/module/plugins/internal/XFSPHoster.py index e7348d966..f1a250f85 100644 --- a/module/plugins/internal/XFSPHoster.py +++ b/module/plugins/internal/XFSPHoster.py @@ -35,7 +35,7 @@ class XFSPHoster(SimpleHoster): FILE_INFO_PATTERN = r'<tr><td align=right><b>Filename:</b></td><td nowrap>(?P<N>[^<]+)</td></tr>\s*.*?<small>\((?P<S>[^<]+)\)</small>' FILE_NAME_PATTERN = r'<input type="hidden" name="fname" value="(?P<N>[^"]+)"' - FILE_SIZE_PATTERN = r'You have requested .*\((?P<S>[\d\.\,]+) ?(?P<U>\w+)?\)</font>' + FILE_SIZE_PATTERN = r'You have requested .*\((?P<S>[\d\.\,]+) ?(?P<U>[\w^_]+)?\)</font>' OFFLINE_PATTERN = r'>\s*\w+ (Not Found|file (was|has been) removed)' TEMP_OFFLINE_PATTERN = r'>\s*\w+ server (is in )?(maintenance|maintainance)' -- cgit v1.2.3 From 93106fbef7579707e2918bcd9694e4a21b37d390 Mon Sep 17 00:00:00 2001 From: Walter Purcaro <vuolter@gmail.com> Date: Wed, 15 Oct 2014 02:04:25 +0200 Subject: [XFSPAccount] Improve TRAFFIC_LEFT_PATTERN --- module/plugins/internal/XFSPAccount.py | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) (limited to 'module') diff --git a/module/plugins/internal/XFSPAccount.py b/module/plugins/internal/XFSPAccount.py index 18543b9cd..9191b71a0 100644 --- a/module/plugins/internal/XFSPAccount.py +++ b/module/plugins/internal/XFSPAccount.py @@ -13,7 +13,7 @@ from module.utils import parseFileSize class XFSPAccount(Account): __name__ = "XFSPAccount" __type__ = "account" - __version__ = "0.10" + __version__ = "0.11" __description__ = """XFileSharingPro account plugin""" __license__ = "GPLv3" @@ -26,8 +26,12 @@ class XFSPAccount(Account): COOKIES = None #: or list of tuples [(domain, name, value)] VALID_UNTIL_PATTERN = r'>Premium.[Aa]ccount expire:.*?<b>(.+?)</b>' - TRAFFIC_LEFT_PATTERN = r'>Traffic available today:.*?<b>(?P<S>.+?)</b>' + + TRAFFIC_LEFT_PATTERN = r'>Traffic available today:.*?<b>\s*(?P<S>[\d.,]+)\s*(?P<U>[\w^_]+)\s*</b>' + TRAFFIC_LEFT_UNIT = "MB" #: used only if no group <U> was found + LOGIN_FAIL_PATTERN = r'>(Incorrect Login or Password|Error<)' + # PREMIUM_PATTERN = r'>Renew premium<' @@ -61,13 +65,18 @@ class XFSPAccount(Account): try: traffic = re.search(self.TRAFFIC_LEFT_PATTERN, html).groupdict() - trafficsize = traffic['S'] + traffic['U'] if 'U' in traffic else traffic['S'] - if "Unlimited" in trafficsize: + if "Unlimited" in traffic['S']: trafficleft = -1 if premium is None: premium = True else: - trafficleft = parseFileSize(trafficsize) + if 'U' in traffic: + unit = traffic['U'] + elif isinstance(self.TRAFFIC_LEFT_UNIT, basestring): + unit = self.TRAFFIC_LEFT_UNIT + else: + unit = None + trafficleft = parseFileSize(traffic['S'], unit) except: pass -- cgit v1.2.3 From e7e59f4f7c3211920016bb3e5e063f954a19c92e Mon Sep 17 00:00:00 2001 From: guidobelix <guidobelix@hotmail.it> Date: Wed, 15 Oct 2014 02:05:25 +0200 Subject: New plugin RapidfileshareNet (account + hoster) --- module/plugins/accounts/RapidfileshareNet.py | 18 ++++++++++++++++ module/plugins/hoster/RapidfileshareNet.py | 31 ++++++++++++++++++++++++++++ 2 files changed, 49 insertions(+) create mode 100644 module/plugins/accounts/RapidfileshareNet.py create mode 100644 module/plugins/hoster/RapidfileshareNet.py (limited to 'module') diff --git a/module/plugins/accounts/RapidfileshareNet.py b/module/plugins/accounts/RapidfileshareNet.py new file mode 100644 index 000000000..56ae80cf0 --- /dev/null +++ b/module/plugins/accounts/RapidfileshareNet.py @@ -0,0 +1,18 @@ +# -*- coding: utf-8 -*- + +from module.plugins.internal.XFSPAccount import XFSPAccount + + +class RapidfileshareNet(XFSPAccount): + __name__ = "RapidfileshareNet" + __type__ = "account" + __version__ = "0.01" + + __description__ = """Rapidfileshare.net account plugin""" + __license__ = "GPLv3" + __authors__ = [("guidobelix", "guidobelix@hotmail.it")] + + + HOSTER_URL = "http://www.rapidfileshare.net/" + + TRAFFIC_LEFT_PATTERN = r'>Traffic available today:</TD><TD><label for="name">(?P<S>.+?)</label></TD></TR>' diff --git a/module/plugins/hoster/RapidfileshareNet.py b/module/plugins/hoster/RapidfileshareNet.py new file mode 100644 index 000000000..f29e2b6a1 --- /dev/null +++ b/module/plugins/hoster/RapidfileshareNet.py @@ -0,0 +1,31 @@ +# -*- coding: utf-8 -*- + +from module.plugins.internal.XFSPHoster import XFSPHoster, create_getInfo + + +class RapidfileshareNet(XFSPHoster): + __name__ = "RapidfileshareNet" + __type__ = "hoster" + __version__ = "0.01" + + __pattern__ = r'http://(?:www\.)?rapidfileshare\.net/\w{12}' + + __description__ = """Rapidfileshare.net hoster plugin""" + __license__ = "GPLv3" + __authors__ = [("guidobelix", "guidobelix@hotmail.it")] + + + HOSTER_NAME = "rapidfileshare.net" + + FILE_NAME_PATTERN = r'<input type="hidden" name="fname" value="(?P<N>.+?)">' + FILE_SIZE_PATTERN = r'>http://www.rapidfileshare.net/\w+?</font> \((?P<S>[\d.,]+) (?P<U>[\w^_]+)\)</font>' + + OFFLINE_PATTERN = r'>No such file with this filename' + TEMP_OFFLINE_PATTERN = r'The page may have been renamed, removed or be temporarily unavailable.<' + + + def handlePremium(self): + self.fail("Premium download not implemented") + + +getInfo = create_getInfo(RapidfileshareNet) -- cgit v1.2.3 From 6d45792d15df2c0b9c3481c4854cb7b09c134581 Mon Sep 17 00:00:00 2001 From: guidobelix <guidobelix@hotmail.it> Date: Wed, 15 Oct 2014 02:06:10 +0200 Subject: New crypter RapidfileshareNetFolder --- module/plugins/crypter/RapidfileshareNetFolder.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 module/plugins/crypter/RapidfileshareNetFolder.py (limited to 'module') diff --git a/module/plugins/crypter/RapidfileshareNetFolder.py b/module/plugins/crypter/RapidfileshareNetFolder.py new file mode 100644 index 000000000..7f7f85cbd --- /dev/null +++ b/module/plugins/crypter/RapidfileshareNetFolder.py @@ -0,0 +1,19 @@ +# -*- coding: utf-8 -*- + +from module.plugins.internal.SimpleCrypter import SimpleCrypter + + +class RapidfileshareNetFolder(SimpleCrypter): + __name__ = "RapidfileshareNetFolder" + __type__ = "crypter" + __version__ = "0.01" + + __pattern__ = r'http://(?:www\.)?rapidfileshare\.net/users/\w+/\d+/\w+' + + __description__ = """Rapidfileshare.net folder decrypter plugin""" + __license__ = "GPLv3" + __authors__ = [("guidobelix", "guidobelix@hotmail.it")] + + + LINK_PATTERN = r'<a href="(.+?)" target="_blank">.+?</a>' + TITLE_PATTERN = r'<Title>Files of \w+: ([^<]+) folder<' -- cgit v1.2.3 From d6ac1dccae1c0975d97d1a6374aa9f349a0034a7 Mon Sep 17 00:00:00 2001 From: Walter Purcaro <vuolter@gmail.com> Date: Wed, 15 Oct 2014 02:08:14 +0200 Subject: New hoster NowVideoAt --- module/plugins/hoster/NowDownloadEu.py | 10 ++++----- module/plugins/hoster/NowVideoAt.py | 38 ++++++++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+), 5 deletions(-) create mode 100644 module/plugins/hoster/NowVideoAt.py (limited to 'module') diff --git a/module/plugins/hoster/NowDownloadEu.py b/module/plugins/hoster/NowDownloadEu.py index b2c98dc40..dcf13e678 100644 --- a/module/plugins/hoster/NowDownloadEu.py +++ b/module/plugins/hoster/NowDownloadEu.py @@ -11,21 +11,21 @@ class NowDownloadEu(SimpleHoster): __type__ = "hoster" __version__ = "0.05" - __pattern__ = r'http://(?:www\.)?nowdownload\.(ch|co|eu|sx)/(dl/|download\.php\?id=)(?P<ID>\w+)' + __pattern__ = r'http://(?:www\.)?nowdownload\.(at|ch|co|eu|sx)/(dl/|download\.php\?id=)\w+' - __description__ = """NowDownload.ch hoster plugin""" + __description__ = """NowDownload.at hoster plugin""" __license__ = "GPLv3" __authors__ = [("godofdream", "soilfiction@gmail.com"), ("Walter Purcaro", "vuolter@gmail.com")] FILE_INFO_PATTERN = r'Downloading</span> <br> (?P<N>.*) (?P<S>[\d.,]+) (?P<U>[\w^_]+) </h4>' - OFFLINE_PATTERN = r'(This file does not exist!)' + OFFLINE_PATTERN = r'>This file does not exist' TOKEN_PATTERN = r'"(/api/token\.php\?token=\w+)"' CONTINUE_PATTERN = r'"(/dl2/\w+/\w+)"' WAIT_PATTERN = r'\.countdown\(\{until: \+(\d+),' - LINK_PATTERN = r'"(http://f\d+\.nowdownload\.ch/dl/\w+/\w+)' + LINK_PATTERN = r'"(http://f\d+\.nowdownload\.at/dl/\w+/\w+)' FILE_NAME_REPLACEMENTS = [("&#?\w+;", fixup), (r'<[^>]*>', '')] @@ -46,7 +46,7 @@ class NowDownloadEu(SimpleHoster): else: wait = 60 - baseurl = "http://www.nowdownload.ch" + baseurl = "http://www.nowdownload.at" self.html = self.load(baseurl + str(tokenlink.group(1))) self.wait(wait) diff --git a/module/plugins/hoster/NowVideoAt.py b/module/plugins/hoster/NowVideoAt.py new file mode 100644 index 000000000..c224b6172 --- /dev/null +++ b/module/plugins/hoster/NowVideoAt.py @@ -0,0 +1,38 @@ +# -*- coding: utf-8 -*- + +import re + +from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo + + +class NowVideoAt(SimpleHoster): + __name__ = "NowVideoAt" + __type__ = "hoster" + __version__ = "0.01" + + __pattern__ = r'http://(?:www\.)?nowvideo\.(at|ch|co|eu|sx)/(video|mobile/#/videos)/(?P<ID>\w+)' + + __description__ = """NowVideo.at hoster plugin""" + __license__ = "GPLv3" + __authors__ = [("Walter Purcaro", "vuolter@gmail.com")] + + + FILE_URL_REPLACEMENTS = [(__pattern__, r'http://www.nowvideo.at/video/\g<ID>')] + + FILE_NAME_PATTERN = r'<h4>(?P<N>.+?)<' + OFFLINE_PATTERN = r'>This file no longer exists' + + LINK_PATTERN = r'<source src="(.+?)"' + + + def handleFree(self): + self.html = self.load("http://www.nowvideo.at/mobile/video.php", get={'id': self.file_info['ID']}) + + m = re.search(self.LINK_PATTERN, self.html) + if m is None: + self.parseError("Download link not found") + + self.download(m.group(1), disposition=True) + + +getInfo = create_getInfo(NowVideoAt) -- cgit v1.2.3 From 268b16c9ecc588e6e884749e3fe715431367d1c9 Mon Sep 17 00:00:00 2001 From: Walter Purcaro <vuolter@gmail.com> Date: Wed, 15 Oct 2014 13:42:32 +0200 Subject: [XFSPAccount] Fix TRAFFIC_LEFT_PATTERN --- module/plugins/internal/XFSPAccount.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'module') diff --git a/module/plugins/internal/XFSPAccount.py b/module/plugins/internal/XFSPAccount.py index 9191b71a0..f75422ca1 100644 --- a/module/plugins/internal/XFSPAccount.py +++ b/module/plugins/internal/XFSPAccount.py @@ -13,7 +13,7 @@ from module.utils import parseFileSize class XFSPAccount(Account): __name__ = "XFSPAccount" __type__ = "account" - __version__ = "0.11" + __version__ = "0.12" __description__ = """XFileSharingPro account plugin""" __license__ = "GPLv3" @@ -27,7 +27,7 @@ class XFSPAccount(Account): VALID_UNTIL_PATTERN = r'>Premium.[Aa]ccount expire:.*?<b>(.+?)</b>' - TRAFFIC_LEFT_PATTERN = r'>Traffic available today:.*?<b>\s*(?P<S>[\d.,]+)\s*(?P<U>[\w^_]+)\s*</b>' + TRAFFIC_LEFT_PATTERN = r'>Traffic available today:.*?<b>\s*(?P<S>[\d.,]+)\s*(?:(?P<U>[\w^_]+)\s*)?</b>' TRAFFIC_LEFT_UNIT = "MB" #: used only if no group <U> was found LOGIN_FAIL_PATTERN = r'>(Incorrect Login or Password|Error<)' -- cgit v1.2.3 From 90c4bf19a6b03e28c9be69a20ce6330391dcb839 Mon Sep 17 00:00:00 2001 From: guidobelix <guidobelix@hotmail.it> Date: Wed, 15 Oct 2014 20:28:28 +0200 Subject: Sinplified after the improvements to XFSPAccount modified: module/plugins/accounts/TusfilesNet.py --- module/plugins/accounts/TusfilesNet.py | 36 +--------------------------------- 1 file changed, 1 insertion(+), 35 deletions(-) (limited to 'module') diff --git a/module/plugins/accounts/TusfilesNet.py b/module/plugins/accounts/TusfilesNet.py index a1b3613b2..775aab9c0 100644 --- a/module/plugins/accounts/TusfilesNet.py +++ b/module/plugins/accounts/TusfilesNet.py @@ -11,7 +11,7 @@ from module.utils import parseFileSize class TusfilesNet(XFSPAccount): __name__ = "TusfilesNet" __type__ = "account" - __version__ = "0.02" + __version__ = "0.03" __description__ = """ Tusfile.net account plugin """ __license__ = "GPLv3" @@ -22,37 +22,3 @@ class TusfilesNet(XFSPAccount): VALID_UNTIL_PATTERN = r'<span class="label label-default">([^<]+)</span>' TRAFFIC_LEFT_PATTERN = r'<td><img src="//www\.tusfiles\.net/i/icon/meter\.png" alt=""/></td>\n<td> (?P<S>[^<]+)</td>' - - - def loadAccountInfo(self, user, req): - html = req.load(self.HOSTER_URL, get={'op': "my_account"}, decode=True) - - validuntil = None - trafficleft = None - premium = False - - m = re.search(self.VALID_UNTIL_PATTERN, html) - if m: - expiredate = m.group(1) - self.logDebug("Expire date: " + expiredate) - - try: - validuntil = mktime(strptime(expiredate, "%d %B %Y")) - except Exception, e: - self.logError(e) - - if validuntil > mktime(gmtime()): - premium = True - else: - premium = False - validuntil = None - - m = re.search(self.TRAFFIC_LEFT_PATTERN, html) - if m: - trafficleft = m.group(1) - if "Unlimited" in trafficleft: - trafficleft = -1 - else: - trafficleft = parseFileSize(trafficleft) * 1024 - - return {'validuntil': validuntil, 'trafficleft': trafficleft, 'premium': premium} -- cgit v1.2.3 From f6d78488cfb56da8afac826a353626b56c942753 Mon Sep 17 00:00:00 2001 From: guidobelix <guidobelix@hotmail.it> Date: Wed, 15 Oct 2014 23:20:54 +0200 Subject: [RapidfileshareNet] Improve TRAFFIC_LEFT_PATTERN Improved TRAFFIC_LEFT_PATTERN to be able to read Units, regardless of #798. --- module/plugins/accounts/RapidfileshareNet.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'module') diff --git a/module/plugins/accounts/RapidfileshareNet.py b/module/plugins/accounts/RapidfileshareNet.py index 56ae80cf0..0b021aea7 100644 --- a/module/plugins/accounts/RapidfileshareNet.py +++ b/module/plugins/accounts/RapidfileshareNet.py @@ -6,7 +6,7 @@ from module.plugins.internal.XFSPAccount import XFSPAccount class RapidfileshareNet(XFSPAccount): __name__ = "RapidfileshareNet" __type__ = "account" - __version__ = "0.01" + __version__ = "0.02" __description__ = """Rapidfileshare.net account plugin""" __license__ = "GPLv3" @@ -15,4 +15,5 @@ class RapidfileshareNet(XFSPAccount): HOSTER_URL = "http://www.rapidfileshare.net/" - TRAFFIC_LEFT_PATTERN = r'>Traffic available today:</TD><TD><label for="name">(?P<S>.+?)</label></TD></TR>' + TRAFFIC_LEFT_PATTERN = r'>Traffic available today:</TD><TD><label for="name">\s*(?P<S>[\d.,]+)\s*(?:(?P<U>[\w^_]+)\s*)?</label></TD></TR>' + -- cgit v1.2.3 From 4d9e18ca6364fdef2d7dabf7000f4d0e66dceaa9 Mon Sep 17 00:00:00 2001 From: Walter Purcaro <vuolter@gmail.com> Date: Thu, 16 Oct 2014 11:27:19 +0200 Subject: [Webui] Fix wrong trafficleft format --- module/web/pyload_app.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'module') diff --git a/module/web/pyload_app.py b/module/web/pyload_app.py index df4a4b3d4..f3515f05f 100644 --- a/module/web/pyload_app.py +++ b/module/web/pyload_app.py @@ -261,7 +261,7 @@ def config(): elif not data.trafficleft: data.trafficleft = _("not available") else: - data.trafficleft = formatSize(data.trafficleft * 1024) + data.trafficleft = formatSize(data.trafficleft) if data.validuntil == -1: data.validuntil = _("unlimited") -- cgit v1.2.3 From 5d26b3f5c3b18d916b2ea24a22770cf62e207a50 Mon Sep 17 00:00:00 2001 From: Walter Purcaro <vuolter@gmail.com> Date: Thu, 16 Oct 2014 12:12:14 +0200 Subject: Fix trafficleft size in some account plugins --- module/plugins/accounts/EasybytezCom.py | 2 +- module/plugins/accounts/FastshareCz.py | 2 +- module/plugins/accounts/FilerNet.py | 2 +- module/plugins/accounts/MultishareCz.py | 2 +- module/plugins/accounts/OboomCom.py | 4 ++-- module/plugins/accounts/PremiumTo.py | 2 +- module/plugins/accounts/PremiumizeMe.py | 2 +- module/plugins/accounts/QuickshareCz.py | 2 +- module/plugins/accounts/RapidgatorNet.py | 2 +- module/plugins/accounts/SimplyPremiumCom.py | 4 ++-- module/plugins/accounts/UnrestrictLi.py | 2 +- 11 files changed, 13 insertions(+), 13 deletions(-) (limited to 'module') diff --git a/module/plugins/accounts/EasybytezCom.py b/module/plugins/accounts/EasybytezCom.py index 00732c12d..bb15ea8a2 100644 --- a/module/plugins/accounts/EasybytezCom.py +++ b/module/plugins/accounts/EasybytezCom.py @@ -52,6 +52,6 @@ class EasybytezCom(XFSPAccount): if "Unlimited" in trafficleft: trafficleft = -1 else: - trafficleft = parseFileSize(trafficleft) / 1024 + trafficleft = parseFileSize(trafficleft) return {"validuntil": validuntil, "trafficleft": trafficleft, "premium": premium} diff --git a/module/plugins/accounts/FastshareCz.py b/module/plugins/accounts/FastshareCz.py index a199ad36c..1f74ea2f9 100644 --- a/module/plugins/accounts/FastshareCz.py +++ b/module/plugins/accounts/FastshareCz.py @@ -24,7 +24,7 @@ class FastshareCz(Account): m = re.search(self.CREDIT_PATTERN, html) if m: - trafficleft = parseFileSize(m.group(1)) / 1024 + trafficleft = parseFileSize(m.group(1)) premium = True if trafficleft else False else: trafficleft = None diff --git a/module/plugins/accounts/FilerNet.py b/module/plugins/accounts/FilerNet.py index 8bd66221f..82f78ed0c 100644 --- a/module/plugins/accounts/FilerNet.py +++ b/module/plugins/accounts/FilerNet.py @@ -34,7 +34,7 @@ class FilerNet(Account): traffic = re.search(self.TRAFFIC_PATTERN, html) if until and traffic: validuntil = int(time.mktime(time.strptime(until.group(1), "%d.%m.%Y %H:%M:%S"))) - trafficleft = parseFileSize(traffic.group(1)) / 1024 + trafficleft = parseFileSize(traffic.group(1)) return {"premium": True, "validuntil": validuntil, "trafficleft": trafficleft} else: self.logError("Unable to retrieve account information - Plugin may be out of date") diff --git a/module/plugins/accounts/MultishareCz.py b/module/plugins/accounts/MultishareCz.py index ae32b8806..813f36496 100644 --- a/module/plugins/accounts/MultishareCz.py +++ b/module/plugins/accounts/MultishareCz.py @@ -26,7 +26,7 @@ class MultishareCz(Account): html = req.load("http://www.multishare.cz/profil/", decode=True) m = re.search(self.TRAFFIC_LEFT_PATTERN, html) - trafficleft = parseFileSize(m.group('S'), m.group('U')) / 1024 if m else 0 + trafficleft = parseFileSize(m.group('S'), m.group('U')) if m else 0 self.premium = True if trafficleft else False html = req.load("http://www.multishare.cz/", decode=True) diff --git a/module/plugins/accounts/OboomCom.py b/module/plugins/accounts/OboomCom.py index ba71fcbbd..a0d945342 100644 --- a/module/plugins/accounts/OboomCom.py +++ b/module/plugins/accounts/OboomCom.py @@ -53,8 +53,8 @@ class OboomCom(Account): return {'premium': premium, 'validuntil': validUntil, - 'trafficleft': trafficLeft / 1024, - 'maxtraffic': maxTraffic / 1024, + 'trafficleft': trafficLeft, + 'maxtraffic': maxTraffic, 'session': session} diff --git a/module/plugins/accounts/PremiumTo.py b/module/plugins/accounts/PremiumTo.py index d13d9b866..7875e5021 100644 --- a/module/plugins/accounts/PremiumTo.py +++ b/module/plugins/accounts/PremiumTo.py @@ -20,7 +20,7 @@ class PremiumTo(Account): get={'username': self.username, 'password': self.password}) traffic = sum(map(int, api_r.split(';'))) - return {"trafficleft": int(traffic) / 1024, "validuntil": -1} + return {"trafficleft": int(traffic), "validuntil": -1} def login(self, user, data, req): diff --git a/module/plugins/accounts/PremiumizeMe.py b/module/plugins/accounts/PremiumizeMe.py index a234a8d93..e65b9ec4b 100644 --- a/module/plugins/accounts/PremiumizeMe.py +++ b/module/plugins/accounts/PremiumizeMe.py @@ -22,7 +22,7 @@ class PremiumizeMe(Account): # Parse account info account_info = {"validuntil": float(status['result']['expires']), - "trafficleft": max(0, status['result']['trafficleft_bytes'] / 1024)} + "trafficleft": max(0, status['result']['trafficleft_bytes'])} if status['result']['type'] == 'free': account_info['premium'] = False diff --git a/module/plugins/accounts/QuickshareCz.py b/module/plugins/accounts/QuickshareCz.py index fa0acd06d..e83f7308d 100644 --- a/module/plugins/accounts/QuickshareCz.py +++ b/module/plugins/accounts/QuickshareCz.py @@ -20,7 +20,7 @@ class QuickshareCz(Account): m = re.search(r'Stav kreditu: <strong>(.+?)</strong>', html) if m: - trafficleft = parseFileSize(m.group(1)) / 1024 + trafficleft = parseFileSize(m.group(1)) premium = True if trafficleft else False else: trafficleft = None diff --git a/module/plugins/accounts/RapidgatorNet.py b/module/plugins/accounts/RapidgatorNet.py index 981f2f90f..c6833a0f3 100644 --- a/module/plugins/accounts/RapidgatorNet.py +++ b/module/plugins/accounts/RapidgatorNet.py @@ -31,7 +31,7 @@ class RapidgatorNet(Account): self.scheduleRefresh(user, json['response']['reset_in']) return {"validuntil": json['response']['expire_date'], - "trafficleft": int(json['response']['traffic_left']) / 1024, + "trafficleft": int(json['response']['traffic_left']), "premium": True} else: self.logError(json['response_details']) diff --git a/module/plugins/accounts/SimplyPremiumCom.py b/module/plugins/accounts/SimplyPremiumCom.py index 442aaa9f3..2fe41abef 100644 --- a/module/plugins/accounts/SimplyPremiumCom.py +++ b/module/plugins/accounts/SimplyPremiumCom.py @@ -25,8 +25,8 @@ class SimplyPremiumCom(Account): #Time package validuntil = float(json_data['result']['timeend']) #Traffic package - # {"trafficleft": int(traffic) / 1024, "validuntil": -1} - #trafficleft = int(json_data['result']['traffic'] / 1024) + # {"trafficleft": int(traffic), "validuntil": -1} + #trafficleft = int(json_data['result']['traffic']) #return {"premium": True, "validuntil": validuntil, "trafficleft": trafficleft} return {"premium": True, "validuntil": validuntil} diff --git a/module/plugins/accounts/UnrestrictLi.py b/module/plugins/accounts/UnrestrictLi.py index 5a02e04a2..f89eab473 100644 --- a/module/plugins/accounts/UnrestrictLi.py +++ b/module/plugins/accounts/UnrestrictLi.py @@ -23,7 +23,7 @@ class UnrestrictLi(Account): return {"premium": False} validuntil = json_data['result']['expires'] - trafficleft = int(json_data['result']['traffic'] / 1024) + trafficleft = int(json_data['result']['traffic']) return {"premium": True, "validuntil": validuntil, "trafficleft": trafficleft} -- cgit v1.2.3 From 9aba73b8929e8e3688de7be1dee7bf97ecd848a5 Mon Sep 17 00:00:00 2001 From: zapp-brannigan <fuerst.reinje@web.de> Date: Thu, 16 Oct 2014 12:38:23 +0200 Subject: Update PromptfileCom.py The plugin is out of date. The direct link can not be found. --- module/plugins/hoster/PromptfileCom.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'module') diff --git a/module/plugins/hoster/PromptfileCom.py b/module/plugins/hoster/PromptfileCom.py index 11b7d5857..4af762e29 100644 --- a/module/plugins/hoster/PromptfileCom.py +++ b/module/plugins/hoster/PromptfileCom.py @@ -8,7 +8,7 @@ from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo class PromptfileCom(SimpleHoster): __name__ = "PromptfileCom" __type__ = "hoster" - __version__ = "0.1" + __version__ = "0.11" __pattern__ = r'https?://(?:www\.)?promptfile\.com/' @@ -21,7 +21,7 @@ class PromptfileCom(SimpleHoster): OFFLINE_PATTERN = r'<span style="[^"]*" title="File Not Found">File Not Found</span>' CHASH_PATTERN = r'<input type="hidden" name="chash" value="([^"]*)" />' - LINK_PATTERN = r'clip: {\s*url: \'(https?://(?:www\.)promptfile[^\']*)\',' + LINK_PATTERN = r'<a href=\"(.+)\" target=\"_blank\" class=\"view_dl_link\">Download File</a>' def handleFree(self): @@ -35,7 +35,7 @@ class PromptfileCom(SimpleHoster): self.html = self.load(self.pyfile.url, decode=True, post={'chash': chash}) # STAGE 2: get the direct link - m = re.search(self.LINK_PATTERN, self.html, re.MULTILINE | re.DOTALL) + m = re.search(self.LINK_PATTERN, self.html) if m is None: self.parseError("Unable to detect direct link") direct = m.group(1) -- cgit v1.2.3 From c860958e4ae4ab326ac4d024afbf13617e9292d5 Mon Sep 17 00:00:00 2001 From: zapp-brannigan <fuerst.reinje@web.de> Date: Fri, 17 Oct 2014 17:03:04 +0200 Subject: Update ZippyshareCom.py The current version can not detect the filename, download is not working: 17.10.2014 16:43:23 DEBUG ZippyshareCom: FILE NAME: <img style="margin-left: 10px;" src="/fileName?key=82680550&size=small" alt="file name"> FILE SIZE: 209998315 --- module/plugins/hoster/ZippyshareCom.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'module') diff --git a/module/plugins/hoster/ZippyshareCom.py b/module/plugins/hoster/ZippyshareCom.py index 29a23353f..6144132f9 100644 --- a/module/plugins/hoster/ZippyshareCom.py +++ b/module/plugins/hoster/ZippyshareCom.py @@ -11,7 +11,7 @@ from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo class ZippyshareCom(SimpleHoster): __name__ = "ZippyshareCom" __type__ = "hoster" - __version__ = "0.51" + __version__ = "0.52" __pattern__ = r'(?P<HOST>http://www\d{0,2}\.zippyshare\.com)/v(?:/|iew\.jsp.*key=)(?P<KEY>\d+)' @@ -20,7 +20,7 @@ class ZippyshareCom(SimpleHoster): __authors__ = [("Walter Purcaro", "vuolter@gmail.com")] - FILE_NAME_PATTERN = r'>Name:.+?">(?P<N>.+?)<' + FILE_NAME_PATTERN = r'var exam1x = .+ \+ "/(?P<N>.+)";' FILE_SIZE_PATTERN = r'>Size:.+?">(?P<S>[\d.,]+) (?P<U>[\w^_]+)' OFFLINE_PATTERN = r'>File does not exist on this server<' -- cgit v1.2.3 From 9a4aa10da480d9bb07592352fb22ebd2acf5dc84 Mon Sep 17 00:00:00 2001 From: Walter Purcaro <vuolter@gmail.com> Date: Fri, 17 Oct 2014 20:51:35 +0200 Subject: New internal plugin XFSPCrypter --- module/plugins/internal/XFSPCrypter.py | 39 ++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 module/plugins/internal/XFSPCrypter.py (limited to 'module') diff --git a/module/plugins/internal/XFSPCrypter.py b/module/plugins/internal/XFSPCrypter.py new file mode 100644 index 000000000..4c5fff4f3 --- /dev/null +++ b/module/plugins/internal/XFSPCrypter.py @@ -0,0 +1,39 @@ +# -*- coding: utf-8 -*- + +from module.plugins.internal.SimpleCrypter import SimpleCrypter + + +class XFSPCrypter(SimpleCrypter): + __name__ = "XFSPCrypter" + __type__ = "crypter" + __version__ = "0.01" + + __pattern__ = None + + __description__ = """XFileSharingPro decrypter plugin""" + __license__ = "GPLv3" + __authors__ = [("Walter Purcaro", "vuolter@gmail.com")] + + + HOSTER_NAME = None + + URL_REPLACEMENTS = [(r'[?/&]+$', r''), (r'(.+/[^?]*)$', r'\1?'), (r'$', r'&per_page=10000')] + + COOKIES = [(HOSTER_NAME, "lang", "english")] + + LINK_PATTERN = None + TITLE_PATTERN = r'<[tT]itle>.*?\: (.+) folder</[tT]itle>' + + OFFLINE_PATTERN = r'>\s*\w+ (Not Found|file (was|has been) removed)' + TEMP_OFFLINE_PATTERN = r'>\s*\w+ server (is in )?(maintenance|maintainance)' + + + def prepare(self): + if not self.HOSTER_NAME: + self.fail("Missing HOSTER_NAME") + + if not self.LINK_PATTERN: + pattern = r'<a href="(.+?)" target="_blank">.+?(?:</a>)?\s*</(?:td|TD)>' + self.LINK_PATTERN = pattern % self.HOSTER_NAME + + super(XFSPCrypter, self).prepare() -- cgit v1.2.3 From 1ecae2cb2b2b367bee8b6174036e3dc7ad054a9c Mon Sep 17 00:00:00 2001 From: Walter Purcaro <vuolter@gmail.com> Date: Fri, 17 Oct 2014 20:52:26 +0200 Subject: New decrypter XFileSharingProFolder --- module/plugins/crypter/XFileSharingProFolder.py | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 module/plugins/crypter/XFileSharingProFolder.py (limited to 'module') diff --git a/module/plugins/crypter/XFileSharingProFolder.py b/module/plugins/crypter/XFileSharingProFolder.py new file mode 100644 index 000000000..f3003e2aa --- /dev/null +++ b/module/plugins/crypter/XFileSharingProFolder.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- + +import re + +from module.plugins.internal.XFSPCrypter import XFSPCrypter + + +class XFileSharingProFolder(XFSPCrypter): + __name__ = "XFileSharingProFolder" + __type__ = "crypter" + __version__ = "0.01" + + __pattern__ = r'^unmatchable$' + + __description__ = """XFileSharingPro dummy folder decrypter plugin for hook""" + __license__ = "GPLv3" + __authors__ = [("Walter Purcaro", "vuolter@gmail.com")] + + + def setup(self): + self.__pattern__ = self.core.pluginManager.crypterPlugins[self.__name__]['pattern'] + self.HOSTER_NAME = re.match(self.__pattern__, self.pyfile.url).group(1).lower() -- cgit v1.2.3 From fac6b2007a93101f8441810118f3c8d10a3db13a Mon Sep 17 00:00:00 2001 From: Walter Purcaro <vuolter@gmail.com> Date: Fri, 17 Oct 2014 20:53:31 +0200 Subject: [SimpleCrypter] Fix missing LINK_PATTERN --- module/plugins/internal/SimpleCrypter.py | 2 ++ 1 file changed, 2 insertions(+) (limited to 'module') diff --git a/module/plugins/internal/SimpleCrypter.py b/module/plugins/internal/SimpleCrypter.py index 8139d661d..73329ed65 100644 --- a/module/plugins/internal/SimpleCrypter.py +++ b/module/plugins/internal/SimpleCrypter.py @@ -51,6 +51,8 @@ class SimpleCrypter(Crypter): return the html of the page number page_n """ + LINK_PATTERN = None + TITLE_REPLACEMENTS = [("&#?\w+;", fixup)] URL_REPLACEMENTS = [] -- cgit v1.2.3 From fe490d4542b78cb52b0db3c037ac71bc07aedfce Mon Sep 17 00:00:00 2001 From: Walter Purcaro <vuolter@gmail.com> Date: Fri, 17 Oct 2014 20:54:17 +0200 Subject: [XFileSharingPro] Updated to support XFileSharingProFolder --- module/plugins/hooks/XFileSharingPro.py | 82 +++++++++++++++++++-------------- 1 file changed, 47 insertions(+), 35 deletions(-) (limited to 'module') diff --git a/module/plugins/hooks/XFileSharingPro.py b/module/plugins/hooks/XFileSharingPro.py index f5d40dd62..62a5791b7 100644 --- a/module/plugins/hooks/XFileSharingPro.py +++ b/module/plugins/hooks/XFileSharingPro.py @@ -8,15 +8,18 @@ from module.plugins.Hook import Hook class XFileSharingPro(Hook): __name__ = "XFileSharingPro" __type__ = "hook" - __version__ = "0.15" + __version__ = "0.16" __config__ = [("activated", "bool", "Activated", True), - ("match", "Always;Always except excluded;Listed only", "Hoster match", "Always except excluded"), - ("load_default", "bool", "Include built-in hoster list", True), + ("match_hoster", "Always;Always except excluded;Listed only", "Hoster match", "Always except excluded"), + ("match_crypter", "Always;Always except excluded;Listed only", "Crypter match", "Always except excluded"), + ("load_default", "bool", "Include built-in lists", True), ("include_hosters", "str", "Include hosters (comma separated)", ""), - ("exclude_hosters", "str", "Exclude hosters (comma separated)", "")] + ("exclude_hosters", "str", "Exclude hosters (comma separated)", ""), + ("include_crypters", "str", "Include crypters (comma separated)", ""), + ("exclude_crypters", "str", "Exclude crypters (comma separated)", "")] - __description__ = """Load XFileSharingPro based hosters which don't need a own plugin to work fine""" + __description__ = """Load hosters and crypter, based upon XFileSharingPro, which don't need a own plugin to work fine""" __license__ = "GPLv3" __authors__ = [("zoidberg", "zoidberg@mujmail.cz"), ("Walter Purcaro", "vuolter@gmail.com")] @@ -33,6 +36,7 @@ class XFileSharingPro(Hook): "vidbull.com", "zalaa.com", "zomgupload.com", #NOT WORKING: "amonshare.com", "banicrazy.info", "boosterking.com", "host4desi.com", "laoupload.com", "rd-fs.com"] + CRYPTER_LIST = [] def pluginConfigChanged(self, plugin, name, value): @@ -45,41 +49,48 @@ class XFileSharingPro(Hook): def loadPattern(self): - include_hosters = self.getConfigSet('include_hosters') - exclude_hosters = self.getConfigSet('exclude_hosters') + regex = {'hoster' = (r'https?://(?!(?:www\.)?(?:%s))(?:www\.)?([\w^_]+(?:\.[a-zA-Z]{2,})+(?:\:\d+)?)/(?:embed-)?\w{12}', + r'https?://(?:[^/]+\.)?(%s)/(?:embed-)?\w{12}'), + 'crypter' = (r'https?://(?!(?:www\.)?(?:%s))(?:www\.)?([\w^_]+(?:\.[a-zA-Z]{2,})+(?:\:\d+)?)/(?:user|folder)s?/\w+', + r'https?://(?:[^/]+\.)?(%s)/(?:user|folder)s?/\w+')} + + for type, plugin in (("hoster", "XFileSharingPro"), ("crypter", "XFileSharingProFolder")): + match = self.getConfig('match_%ss' % type) + include_set = self.getConfigSet('include_%ss' % type) + exclude_set = self.getConfigSet('exclude_%ss' % type) + + if match != "Listed only": + if match == "Always": + match_list = "" + else: + hoster_list = exclude_set - set(('', u'')) + match_list = '|'.join(sorted(hoster_list)) + self.logDebug("Excluding %d %ss" % (len(hoster_list), type), match_list.replace('|', ', ')) + + regexp = regex[type][0] % match_list.replace('.', '\.') - if self.getConfig("match") != "Listed only": - if self.getConfig("match") == "Always": - match_list = "" else: - hoster_list = exclude_hosters - set(('', u'')) - match_list = '|'.join(sorted(hoster_list)) - self.logDebug("Excluding %d hosters" % len(hoster_list), match_list.replace('|', ', ')) - - regexp = r'https?://(?!(?:www\.)?(?:%s))(?:www\.)?([\w^_]+(?:\.[a-zA-Z]{2,})+(?:\:\d+)?)/(?:embed-)?\w{12}' % match_list.replace('.', '\.') + hoster_list = include_set - else: - hoster_list = include_hosters + if self.getConfig('load_default'): + hoster_list |= set(getattr(self, "%s_LIST" % type.upper())) - if self.getConfig('load_default'): - hoster_list |= set(self.HOSTER_LIST) + hoster_list -= exclude_set + hoster_list -= set(('', u'')) - hoster_list -= exclude_hosters - hoster_list -= set(('', u'')) + if not hoster_list: + self.unload() + return - if not hoster_list: - self.unload() - return - - match_list = '|'.join(sorted(hoster_list)) - self.logDebug("Handling %d hosters" % len(hoster_list), match_list.replace('|', ', ')) + match_list = '|'.join(sorted(hoster_list)) + self.logDebug("Handling %d %ss" % (len(hoster_list), type), match_list.replace('|', ', ')) - regexp = r'https?://(?:[^/]*\.)?(%s)/(?:embed-)?\w{12}' % match_list.replace('.', '\.') + regexp = regex[type][1] % match_list.replace('.', '\.') - dict = self.core.pluginManager.hosterPlugins['XFileSharingPro'] - dict['pattern'] = regexp - dict['re'] = re.compile(regexp) - self.logDebug("Pattern loaded") + dict = self.core.pluginManager.plugins[type][plugin] + dict['pattern'] = regexp + dict['re'] = re.compile(regexp) + self.logDebug("Pattern loaded for %ss" % type) def getConfigSet(self, option): @@ -89,6 +100,7 @@ class XFileSharingPro(Hook): def unload(self): regexp = r'^unmatchable$' - dict = self.core.pluginManager.hosterPlugins['XFileSharingPro'] - dict['pattern'] = regexp - dict['re'] = re.compile(regexp) + for type, plugin in (("hoster", "XFileSharingPro"), ("crypter", "XFileSharingProFolder")): + dict = self.core.pluginManager.plugins[type][plugin] + dict['pattern'] = regexp + dict['re'] = re.compile(regexp) -- cgit v1.2.3 From 18836967d39d0b6e6f2aeea4e6aece605246a2bf Mon Sep 17 00:00:00 2001 From: Walter Purcaro <vuolter@gmail.com> Date: Fri, 17 Oct 2014 20:55:00 +0200 Subject: Spare code cosmetics --- module/plugins/Plugin.py | 12 ++++++------ module/plugins/accounts/RapidfileshareNet.py | 2 +- module/plugins/captcha/captcha.py | 15 ++++++--------- module/plugins/crypter/EasybytezComFolder.py | 2 +- module/plugins/crypter/TusfilesNetFolder.py | 2 +- 5 files changed, 15 insertions(+), 18 deletions(-) (limited to 'module') diff --git a/module/plugins/Plugin.py b/module/plugins/Plugin.py index fa1d2c3b1..d17776485 100644 --- a/module/plugins/Plugin.py +++ b/module/plugins/Plugin.py @@ -335,9 +335,9 @@ class Plugin(Base): img = self.load(url, get=get, post=post, cookies=cookies) id = ("%.2f" % time())[-6:].replace(".", "") - temp_file = open(join("tmp", "tmpCaptcha_%s_%s.%s" % (self.__name__, id, imgtype)), "wb") - temp_file.write(img) - temp_file.close() + tmpCaptcha = open(join("tmp", "tmpCaptcha_%s_%s.%s" % (self.__name__, id, imgtype)), "wb") + tmpCaptcha.write(img) + tmpCaptcha.close() has_plugin = self.__name__ in self.core.pluginManager.captchaPlugins @@ -351,10 +351,10 @@ class Plugin(Base): if self.pyfile.abort: raise Abort ocr = Ocr() - result = ocr.get_captcha(temp_file.name) + result = ocr.get_captcha(tmpCaptcha.name) else: captchaManager = self.core.captchaManager - task = captchaManager.newTask(img, imgtype, temp_file.name, result_type) + task = captchaManager.newTask(img, imgtype, tmpCaptcha.name, result_type) self.cTask = task captchaManager.handleCaptcha(task) @@ -378,7 +378,7 @@ class Plugin(Base): if not self.core.debug: try: - remove(temp_file.name) + remove(tmpCaptcha.name) except: pass diff --git a/module/plugins/accounts/RapidfileshareNet.py b/module/plugins/accounts/RapidfileshareNet.py index 0b021aea7..99a4af98b 100644 --- a/module/plugins/accounts/RapidfileshareNet.py +++ b/module/plugins/accounts/RapidfileshareNet.py @@ -16,4 +16,4 @@ class RapidfileshareNet(XFSPAccount): HOSTER_URL = "http://www.rapidfileshare.net/" TRAFFIC_LEFT_PATTERN = r'>Traffic available today:</TD><TD><label for="name">\s*(?P<S>[\d.,]+)\s*(?:(?P<U>[\w^_]+)\s*)?</label></TD></TR>' - + diff --git a/module/plugins/captcha/captcha.py b/module/plugins/captcha/captcha.py index b3d4bd57e..fb85d8996 100644 --- a/module/plugins/captcha/captcha.py +++ b/module/plugins/captcha/captcha.py @@ -51,28 +51,25 @@ class OCR(object): self.logger.debug("Tesseract ReturnCode %s Output: %s" % (popen.returncode, output)) def run_tesser(self, subset=False, digits=True, lowercase=True, uppercase=True): - #self.logger.debug("create tmp tif") + #tmpTif = tempfile.NamedTemporaryFile(suffix=".tif") + tmpTif = open(join("tmp", "tmpTif_%s.tif" % self.__name__), "wb") + tmpTif.close() - #tmp = tempfile.NamedTemporaryFile(suffix=".tif") - tmp = open(join("tmp", "tmpTif_%s.tif" % self.__name__), "wb") - tmp.close() - #self.logger.debug("create tmp txt") #tmpTxt = tempfile.NamedTemporaryFile(suffix=".txt") tmpTxt = open(join("tmp", "tmpTxt_%s.txt" % self.__name__), "wb") tmpTxt.close() self.logger.debug("save tiff") - self.image.save(tmp.name, 'TIFF') + self.image.save(tmpTif.name, 'TIFF') if os.name == "nt": tessparams = [join(pypath, "tesseract", "tesseract.exe")] else: tessparams = ["tesseract"] - tessparams.extend( [abspath(tmp.name), abspath(tmpTxt.name).replace(".txt", "")] ) + tessparams.extend( [abspath(tmpTif.name), abspath(tmpTxt.name).replace(".txt", "")] ) if subset and (digits or lowercase or uppercase): - #self.logger.debug("create temp subset config") #tmpSub = tempfile.NamedTemporaryFile(suffix=".subset") tmpSub = open(join("tmp", "tmpSub_%s.subset" % self.__name__), "wb") tmpSub.write("tessedit_char_whitelist ") @@ -99,7 +96,7 @@ class OCR(object): self.logger.debug(self.result_captcha) try: - os.remove(tmp.name) + os.remove(tmpTif.name) os.remove(tmpTxt.name) if subset and (digits or lowercase or uppercase): os.remove(tmpSub.name) diff --git a/module/plugins/crypter/EasybytezComFolder.py b/module/plugins/crypter/EasybytezComFolder.py index 0b73a10ae..c80b6cd61 100644 --- a/module/plugins/crypter/EasybytezComFolder.py +++ b/module/plugins/crypter/EasybytezComFolder.py @@ -15,7 +15,7 @@ class EasybytezComFolder(SimpleCrypter): __authors__ = [("stickell", "l.stickell@yahoo.it")] - URL_REPLACEMENTS = [(__pattern__, r"http://www.easybytez.com/users/\g<ID>?per_page=10000")] + URL_REPLACEMENTS = [(__pattern__, r'http://www.easybytez.com/users/\g<ID>?per_page=10000')] LINK_PATTERN = r'<td><a href="(http://www\.easybytez\.com/\w+)" target="_blank">.+(?:</a>)?</td>' TITLE_PATTERN = r'<Title>Files of \d+: (.+) folder' diff --git a/module/plugins/crypter/TusfilesNetFolder.py b/module/plugins/crypter/TusfilesNetFolder.py index a6e76adb8..1d804c2a8 100644 --- a/module/plugins/crypter/TusfilesNetFolder.py +++ b/module/plugins/crypter/TusfilesNetFolder.py @@ -12,7 +12,7 @@ class TusfilesNetFolder(SimpleCrypter): __type__ = "crypter" __version__ = "0.03" - __pattern__ = r'https?://(?:www\.)?tusfiles\.net/go/(?P\w+)/?' + __pattern__ = r'https?://(?:www\.)?tusfiles\.net/go/(?P\w+)' __description__ = """Tusfiles.net folder decrypter plugin""" __license__ = "GPLv3" -- cgit v1.2.3 From 9fa442e62e9ebcdda2cd804202cc1e495c47e3ad Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Fri, 17 Oct 2014 21:01:31 +0200 Subject: [UploadedTo] Improved error handling (thx NETHeader) --- module/plugins/hoster/UploadedTo.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'module') diff --git a/module/plugins/hoster/UploadedTo.py b/module/plugins/hoster/UploadedTo.py index 0affffbb9..73a903902 100644 --- a/module/plugins/hoster/UploadedTo.py +++ b/module/plugins/hoster/UploadedTo.py @@ -94,7 +94,7 @@ def getInfo(urls): class UploadedTo(Hoster): __name__ = "UploadedTo" __type__ = "hoster" - __version__ = "0.73" + __version__ = "0.74" __pattern__ = r'https?://(?:www\.)?(uploaded\.(to|net)|ul\.to)(/file/|/?\?id=|.*?&id=|/)(?P\w+)' @@ -219,7 +219,7 @@ class UploadedTo(Hoster): self.retry() elif "limit-parallel" in result: self.fail("Cannot download in parallel") - elif self.DL_LIMIT_PATTERN in result: # limit-dl + elif "limit-dl" in result or self.DL_LIMIT_PATTERN in result: # limit-dl self.setWait(3 * 60 * 60, True) self.wait() self.retry() -- cgit v1.2.3 From d76e5b5f8f44cf21fd0b9c3672642bbbb90bad12 Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Fri, 17 Oct 2014 21:08:49 +0200 Subject: New accounts LinestorageCom and UploadcCom --- module/plugins/accounts/LinestorageCom.py | 16 ++++++++++++++++ module/plugins/accounts/UploadcCom.py | 16 ++++++++++++++++ 2 files changed, 32 insertions(+) create mode 100644 module/plugins/accounts/LinestorageCom.py create mode 100644 module/plugins/accounts/UploadcCom.py (limited to 'module') diff --git a/module/plugins/accounts/LinestorageCom.py b/module/plugins/accounts/LinestorageCom.py new file mode 100644 index 000000000..f2f93fe74 --- /dev/null +++ b/module/plugins/accounts/LinestorageCom.py @@ -0,0 +1,16 @@ +# -*- coding: utf-8 -*- + +from module.plugins.internal.XFSPAccount import XFSPAccount + + +class LinestorageCom(XFSPAccount): + __name__ = "LinestorageCom" + __type__ = "account" + __version__ = "0.01" + + __description__ = """Linestorage.com account plugin""" + __license__ = "GPLv3" + __authors__ = [("Walter Purcaro", "vuolter@gmail.com")] + + + HOSTER_URL = "http://www.linestorage.com/" diff --git a/module/plugins/accounts/UploadcCom.py b/module/plugins/accounts/UploadcCom.py new file mode 100644 index 000000000..c55597777 --- /dev/null +++ b/module/plugins/accounts/UploadcCom.py @@ -0,0 +1,16 @@ +# -*- coding: utf-8 -*- + +from module.plugins.internal.XFSPAccount import XFSPAccount + + +class UploadcCom(XFSPAccount): + __name__ = "UploadcCom" + __type__ = "account" + __version__ = "0.01" + + __description__ = """Uploadc.com account plugin""" + __license__ = "GPLv3" + __authors__ = [("Walter Purcaro", "vuolter@gmail.com")] + + + HOSTER_URL = "http://www.uploadc.com/" -- cgit v1.2.3 From 6a6373e9b63ce7943f1a6592a641e3d8b3f31e09 Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Fri, 17 Oct 2014 21:10:40 +0200 Subject: Fix TRAFFIC_LEFT_PATTERN in RapidfileshareNet and TusfilesNet accounts --- module/plugins/accounts/RapidfileshareNet.py | 5 ++--- module/plugins/accounts/TusfilesNet.py | 4 ++-- module/plugins/hooks/XFileSharingPro.py | 2 +- 3 files changed, 5 insertions(+), 6 deletions(-) (limited to 'module') diff --git a/module/plugins/accounts/RapidfileshareNet.py b/module/plugins/accounts/RapidfileshareNet.py index 99a4af98b..4a146f398 100644 --- a/module/plugins/accounts/RapidfileshareNet.py +++ b/module/plugins/accounts/RapidfileshareNet.py @@ -6,7 +6,7 @@ from module.plugins.internal.XFSPAccount import XFSPAccount class RapidfileshareNet(XFSPAccount): __name__ = "RapidfileshareNet" __type__ = "account" - __version__ = "0.02" + __version__ = "0.03" __description__ = """Rapidfileshare.net account plugin""" __license__ = "GPLv3" @@ -15,5 +15,4 @@ class RapidfileshareNet(XFSPAccount): HOSTER_URL = "http://www.rapidfileshare.net/" - TRAFFIC_LEFT_PATTERN = r'>Traffic available today:' - + TRAFFIC_LEFT_PATTERN = r'>Traffic available today:' diff --git a/module/plugins/accounts/TusfilesNet.py b/module/plugins/accounts/TusfilesNet.py index 775aab9c0..ab5b57834 100644 --- a/module/plugins/accounts/TusfilesNet.py +++ b/module/plugins/accounts/TusfilesNet.py @@ -11,7 +11,7 @@ from module.utils import parseFileSize class TusfilesNet(XFSPAccount): __name__ = "TusfilesNet" __type__ = "account" - __version__ = "0.03" + __version__ = "0.04" __description__ = """ Tusfile.net account plugin """ __license__ = "GPLv3" @@ -21,4 +21,4 @@ class TusfilesNet(XFSPAccount): HOSTER_URL = "http://www.tusfiles.net/" VALID_UNTIL_PATTERN = r'([^<]+)' - TRAFFIC_LEFT_PATTERN = r'\n (?P[^<]+)' + TRAFFIC_LEFT_PATTERN = r'\n (?P[\d.,]+)\s*(?P[\w^_]+)\s*' diff --git a/module/plugins/hooks/XFileSharingPro.py b/module/plugins/hooks/XFileSharingPro.py index 62a5791b7..44d376905 100644 --- a/module/plugins/hooks/XFileSharingPro.py +++ b/module/plugins/hooks/XFileSharingPro.py @@ -28,7 +28,7 @@ class XFileSharingPro(Hook): event_list = ["pluginConfigChanged"] HOSTER_LIST = [#WORKING HOSTERS: - "eyesfile.co", "eyesfile.com", "fileband.com", "filedwon.com", "hostingbulk.com", "linestorage.com", + "eyesfile.ca", "fileband.com", "filedwon.com", "hostingbulk.com", "linestorage.com", "ravishare.com", "sharesix.com", "thefile.me", "verzend.be", "xvidstage.com", #NOT TESTED: "101shared.com", "4upfiles.com", "filemaze.ws", "filenuke.com", "linkzhost.com", "mightyupload.com", -- cgit v1.2.3 From 6f47e10a9acf00eea4b47e5b364e75e78027809c Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Sat, 18 Oct 2014 13:46:19 +0200 Subject: [XFSPCrypter] Better LINK_PATTERN --- module/plugins/internal/XFSPCrypter.py | 15 ++------------- 1 file changed, 2 insertions(+), 13 deletions(-) (limited to 'module') diff --git a/module/plugins/internal/XFSPCrypter.py b/module/plugins/internal/XFSPCrypter.py index 4c5fff4f3..372657d2d 100644 --- a/module/plugins/internal/XFSPCrypter.py +++ b/module/plugins/internal/XFSPCrypter.py @@ -6,7 +6,7 @@ from module.plugins.internal.SimpleCrypter import SimpleCrypter class XFSPCrypter(SimpleCrypter): __name__ = "XFSPCrypter" __type__ = "crypter" - __version__ = "0.01" + __version__ = "0.02" __pattern__ = None @@ -21,19 +21,8 @@ class XFSPCrypter(SimpleCrypter): COOKIES = [(HOSTER_NAME, "lang", "english")] - LINK_PATTERN = None + LINK_PATTERN = r'<(?:td|TD) [^>]*>\s*
    ]*>.+?(?:)?\s*' TITLE_PATTERN = r'<[tT]itle>.*?\: (.+) folder' OFFLINE_PATTERN = r'>\s*\w+ (Not Found|file (was|has been) removed)' TEMP_OFFLINE_PATTERN = r'>\s*\w+ server (is in )?(maintenance|maintainance)' - - - def prepare(self): - if not self.HOSTER_NAME: - self.fail("Missing HOSTER_NAME") - - if not self.LINK_PATTERN: - pattern = r'.+?(?:)?\s*' - self.LINK_PATTERN = pattern % self.HOSTER_NAME - - super(XFSPCrypter, self).prepare() -- cgit v1.2.3 From 5224a71f0dc30d640754a9fa64c7c54fa3ec4fb9 Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Sat, 18 Oct 2014 13:48:21 +0200 Subject: [XFSPAccount] Set HOSTER_NAME (instead HOSTER_URL) as the mandatory attribute --- module/plugins/internal/XFSPAccount.py | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) (limited to 'module') diff --git a/module/plugins/internal/XFSPAccount.py b/module/plugins/internal/XFSPAccount.py index f75422ca1..713bf827d 100644 --- a/module/plugins/internal/XFSPAccount.py +++ b/module/plugins/internal/XFSPAccount.py @@ -13,7 +13,7 @@ from module.utils import parseFileSize class XFSPAccount(Account): __name__ = "XFSPAccount" __type__ = "account" - __version__ = "0.12" + __version__ = "0.13" __description__ = """XFileSharingPro account plugin""" __license__ = "GPLv3" @@ -21,9 +21,19 @@ class XFSPAccount(Account): ("Walter Purcaro", "vuolter@gmail.com")] - HOSTER_URL = None + """ + Following patterns should be defined by each hoster: - COOKIES = None #: or list of tuples [(domain, name, value)] + HOSTER_URL: (optional) + example: HOSTER_URL = r'linestorage.com' + + PREMIUM_PATTERN: (optional) Checks if the account is premium + example: PREMIUM_PATTERN = r'>Renew premium<' + """ + + HOSTER_NAME = None + + COOKIES = [(HOSTER_NAME, "lang", "english")] #: or list of tuples [(domain, name, value)] VALID_UNTIL_PATTERN = r'>Premium.[Aa]ccount expire:.*?(.+?)' @@ -32,7 +42,10 @@ class XFSPAccount(Account): LOGIN_FAIL_PATTERN = r'>(Incorrect Login or Password|Error<)' - # PREMIUM_PATTERN = r'>Renew premium<' + + def init(self): + if not hasattr(self, "HOSTER_URL"): + self.HOSTER_URL = "http://%s/" % self.HOSTER_NAME def loadAccountInfo(self, user, req): -- cgit v1.2.3 From c9ef02f1d748738ffaa197aa8a6f94b69a4237b3 Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Sat, 18 Oct 2014 13:49:08 +0200 Subject: New account XFileSharingPro --- module/plugins/accounts/XFileSharingPro.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 module/plugins/accounts/XFileSharingPro.py (limited to 'module') diff --git a/module/plugins/accounts/XFileSharingPro.py b/module/plugins/accounts/XFileSharingPro.py new file mode 100644 index 000000000..cd09c076d --- /dev/null +++ b/module/plugins/accounts/XFileSharingPro.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- + +import re + +from module.plugins.internal.XFSPAccount import XFSPAccount + + +class XFileSharingPro(XFSPAccount): + __name__ = "XFileSharingPro" + __type__ = "crypter" + __version__ = "0.01" + + __description__ = """XFileSharingPro dummy account plugin for hook""" + __license__ = "GPLv3" + __authors__ = [("Walter Purcaro", "vuolter@gmail.com")] + + + def init(self): + pattern = self.core.pluginManager.hosterPlugins[self.__name__]['pattern'] + self.HOSTER_NAME = re.match(pattern, self.pyfile.url).group(1).lower() -- cgit v1.2.3 From be5a34a74c7126dd9606e646cd879369dac7404d Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Sat, 18 Oct 2014 13:50:09 +0200 Subject: Convert some crypters to use XFSPCrypter instead SimpleCrypter --- module/plugins/crypter/EasybytezComFolder.py | 11 ++++------- module/plugins/crypter/JunocloudMeFolder.py | 10 ++++------ module/plugins/crypter/RapidfileshareNetFolder.py | 9 ++++----- module/plugins/crypter/TusfilesNetFolder.py | 11 ++++++----- 4 files changed, 18 insertions(+), 23 deletions(-) (limited to 'module') diff --git a/module/plugins/crypter/EasybytezComFolder.py b/module/plugins/crypter/EasybytezComFolder.py index c80b6cd61..4ced45355 100644 --- a/module/plugins/crypter/EasybytezComFolder.py +++ b/module/plugins/crypter/EasybytezComFolder.py @@ -1,12 +1,12 @@ # -*- coding: utf-8 -*- -from module.plugins.internal.SimpleCrypter import SimpleCrypter +from module.plugins.internal.XFSPCrypter import XFSPCrypter -class EasybytezComFolder(SimpleCrypter): +class EasybytezComFolder(XFSPCrypter): __name__ = "EasybytezComFolder" __type__ = "crypter" - __version__ = "0.08" + __version__ = "0.09" __pattern__ = r'http://(?:www\.)?easybytez\.com/users/(?P\d+/\d+)' @@ -15,9 +15,6 @@ class EasybytezComFolder(SimpleCrypter): __authors__ = [("stickell", "l.stickell@yahoo.it")] - URL_REPLACEMENTS = [(__pattern__, r'http://www.easybytez.com/users/\g?per_page=10000')] - - LINK_PATTERN = r'.+(?:)?' - TITLE_PATTERN = r'Files of \d+: (.+) folder' + HOSTER_NAME = "easybytez.com" LOGIN_ACCOUNT = True diff --git a/module/plugins/crypter/JunocloudMeFolder.py b/module/plugins/crypter/JunocloudMeFolder.py index 9e5fa1cbf..32c68e191 100644 --- a/module/plugins/crypter/JunocloudMeFolder.py +++ b/module/plugins/crypter/JunocloudMeFolder.py @@ -1,12 +1,12 @@ # -*- coding: utf-8 -*- -from module.plugins.internal.SimpleCrypter import SimpleCrypter +from module.plugins.internal.XFSPCrypter import XFSPCrypter -class JunocloudMeFolder(SimpleCrypter): +class JunocloudMeFolder(XFSPCrypter): __name__ = "JunocloudMeFolder" __type__ = "crypter" - __version__ = "0.01" + __version__ = "0.02" __pattern__ = r'http://(?:www\.)?junocloud\.me/folders/(?P\d+/\w+)' @@ -15,6 +15,4 @@ class JunocloudMeFolder(SimpleCrypter): __authors__ = [("guidobelix", "guidobelix@hotmail.it")] - URL_REPLACEMENTS = [(__pattern__, r'http://www.junocloud.me/folders/\g?per_page=10000')] - - LINK_PATTERN = r'.+?' + HOSTER_NAME = "junocloud.me" diff --git a/module/plugins/crypter/RapidfileshareNetFolder.py b/module/plugins/crypter/RapidfileshareNetFolder.py index 7f7f85cbd..cca52db20 100644 --- a/module/plugins/crypter/RapidfileshareNetFolder.py +++ b/module/plugins/crypter/RapidfileshareNetFolder.py @@ -1,12 +1,12 @@ # -*- coding: utf-8 -*- -from module.plugins.internal.SimpleCrypter import SimpleCrypter +from module.plugins.internal.XFSPCrypter import XFSPCrypter -class RapidfileshareNetFolder(SimpleCrypter): +class RapidfileshareNetFolder(XFSPCrypter): __name__ = "RapidfileshareNetFolder" __type__ = "crypter" - __version__ = "0.01" + __version__ = "0.02" __pattern__ = r'http://(?:www\.)?rapidfileshare\.net/users/\w+/\d+/\w+' @@ -15,5 +15,4 @@ class RapidfileshareNetFolder(SimpleCrypter): __authors__ = [("guidobelix", "guidobelix@hotmail.it")] - LINK_PATTERN = r'.+?' - TITLE_PATTERN = r'Files of \w+: ([^<]+) folder<' + HOSTER_NAME = "rapidfileshare.net" diff --git a/module/plugins/crypter/TusfilesNetFolder.py b/module/plugins/crypter/TusfilesNetFolder.py index 1d804c2a8..fb0842b63 100644 --- a/module/plugins/crypter/TusfilesNetFolder.py +++ b/module/plugins/crypter/TusfilesNetFolder.py @@ -4,13 +4,13 @@ import math import re from urlparse import urljoin -from module.plugins.internal.SimpleCrypter import SimpleCrypter +from module.plugins.internal.XFSPCrypter import XFSPCrypter -class TusfilesNetFolder(SimpleCrypter): +class TusfilesNetFolder(XFSPCrypter): __name__ = "TusfilesNetFolder" __type__ = "crypter" - __version__ = "0.03" + __version__ = "0.04" __pattern__ = r'https?://(?:www\.)?tusfiles\.net/go/(?P<ID>\w+)' @@ -20,8 +20,8 @@ class TusfilesNetFolder(SimpleCrypter): ("stickell", "l.stickell@yahoo.it")] - LINK_PATTERN = r'<TD align=left><a href="(.*?)">' - TITLE_PATTERN = r'<Title>.*?\: (.+) folder' + HOSTER_NAME = "tusfiles.net" + PAGES_PATTERN = r'>\((\d+) \w+\)<' URL_REPLACEMENTS = [(__pattern__, r'https://www.tusfiles.net/go/\g/')] @@ -30,6 +30,7 @@ class TusfilesNetFolder(SimpleCrypter): def loadPage(self, page_n): return self.load(urljoin(self.pyfile.url, str(page_n)), decode=True) + def handleMultiPages(self): pages = re.search(self.PAGES_PATTERN, self.html) if pages: -- cgit v1.2.3 From d0aa0ece5e506469f631b388f6c38eaaa63b63c9 Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Sat, 18 Oct 2014 13:52:01 +0200 Subject: Tiny code cosmetics --- module/plugins/internal/SimpleHoster.py | 10 +++++----- module/plugins/internal/XFSPHoster.py | 3 ++- 2 files changed, 7 insertions(+), 6 deletions(-) (limited to 'module') diff --git a/module/plugins/internal/SimpleHoster.py b/module/plugins/internal/SimpleHoster.py index 895584af6..c2bc4909e 100644 --- a/module/plugins/internal/SimpleHoster.py +++ b/module/plugins/internal/SimpleHoster.py @@ -166,18 +166,18 @@ class SimpleHoster(Hoster): """ Following patterns should be defined by each hoster: - FILE_INFO_PATTERN: Name and Size of the file + FILE_INFO_PATTERN: (optional) Name and Size of the file example: FILE_INFO_PATTERN = r'(?Pfile_name) (?Pfile_size) (?Psize_unit)' or - FILE_NAME_PATTERN: Name that will be set for the file + FILE_NAME_PATTERN: (optional) Name that will be set for the file example: FILE_NAME_PATTERN = r'(?Pfile_name)' - FILE_SIZE_PATTERN: Size that will be checked for the file + FILE_SIZE_PATTERN: (optional) Size that will be checked for the file example: FILE_SIZE_PATTERN = r'(?Pfile_size) (?Psize_unit)' - OFFLINE_PATTERN: Checks if the file is yet available online + OFFLINE_PATTERN: (optional) Checks if the file is yet available online example: OFFLINE_PATTERN = r'File (deleted|not found)' - TEMP_OFFLINE_PATTERN: Checks if the file is temporarily offline + TEMP_OFFLINE_PATTERN: (optional) Checks if the file is temporarily offline example: TEMP_OFFLINE_PATTERN = r'Server (maintenance|maintainance)' PREMIUM_ONLY_PATTERN: (optional) Checks if the file can be downloaded only with a premium account diff --git a/module/plugins/internal/XFSPHoster.py b/module/plugins/internal/XFSPHoster.py index f1a250f85..abf71b033 100644 --- a/module/plugins/internal/XFSPHoster.py +++ b/module/plugins/internal/XFSPHoster.py @@ -330,7 +330,7 @@ class XFSPHoster(SimpleHoster): captcha_key = recaptcha.detect_key() if captcha_key: - self.logDebug("RECAPTCHA KEY: %s" % captcha_key) + self.logDebug("ReCaptcha key: %s" % captcha_key) inputs['recaptcha_challenge_field'], inputs['recaptcha_response_field'] = recaptcha.challenge(captcha_key) return 3 @@ -341,6 +341,7 @@ class XFSPHoster(SimpleHoster): captcha_key = solvemedia.detect_key() if captcha_key: + self.logDebug("SolveMedia key: %s" % captcha_key) inputs['adcopy_challenge'], inputs['adcopy_response'] = solvemedia.challenge(captcha_key) return 4 -- cgit v1.2.3 From 7b3009db0d90cbcd5a754c69399b5e4c6abe180c Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Sat, 18 Oct 2014 13:52:42 +0200 Subject: Update accounts to use HOSTER_NAME instead HOSTER_URL --- module/plugins/accounts/BillionuploadsCom.py | 2 +- module/plugins/accounts/CramitIn.py | 2 +- module/plugins/accounts/EasybytezCom.py | 2 +- module/plugins/accounts/File4safeCom.py | 2 +- module/plugins/accounts/FileParadoxIn.py | 2 +- module/plugins/accounts/FileomCom.py | 2 +- module/plugins/accounts/FilerioCom.py | 2 +- module/plugins/accounts/HugefilesNet.py | 2 +- module/plugins/accounts/HundredEightyUploadCom.py | 2 +- module/plugins/accounts/JunocloudMe.py | 2 +- module/plugins/accounts/LinestorageCom.py | 2 +- module/plugins/accounts/LomafileCom.py | 2 +- module/plugins/accounts/MovReelCom.py | 2 +- module/plugins/accounts/NosuploadCom.py | 2 +- module/plugins/accounts/NovafileCom.py | 2 +- module/plugins/accounts/RapidfileshareNet.py | 2 +- module/plugins/accounts/RarefileNet.py | 2 +- module/plugins/accounts/RyushareCom.py | 2 +- module/plugins/accounts/SecureUploadEu.py | 2 +- module/plugins/accounts/SendmywayCom.py | 2 +- module/plugins/accounts/StreamcloudEu.py | 2 +- module/plugins/accounts/TusfilesNet.py | 2 +- module/plugins/accounts/UploadcCom.py | 2 +- module/plugins/accounts/UptoboxCom.py | 2 +- module/plugins/accounts/VidPlayNet.py | 2 +- 25 files changed, 25 insertions(+), 25 deletions(-) (limited to 'module') diff --git a/module/plugins/accounts/BillionuploadsCom.py b/module/plugins/accounts/BillionuploadsCom.py index 54f0db1c6..3e8fd35c2 100644 --- a/module/plugins/accounts/BillionuploadsCom.py +++ b/module/plugins/accounts/BillionuploadsCom.py @@ -13,4 +13,4 @@ class BillionuploadsCom(XFSPAccount): __authors__ = [("Walter Purcaro", "vuolter@gmail.com")] - HOSTER_URL = "http://www.billionuploads.com/" + HOSTER_NAME = "billionuploads.com" diff --git a/module/plugins/accounts/CramitIn.py b/module/plugins/accounts/CramitIn.py index 5edc2dac0..98e14bb3a 100644 --- a/module/plugins/accounts/CramitIn.py +++ b/module/plugins/accounts/CramitIn.py @@ -13,4 +13,4 @@ class CramitIn(XFSPAccount): __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] - HOSTER_URL = "http://www.cramit.in/" + HOSTER_NAME = "cramit.in" diff --git a/module/plugins/accounts/EasybytezCom.py b/module/plugins/accounts/EasybytezCom.py index bb15ea8a2..f88e9ed4c 100644 --- a/module/plugins/accounts/EasybytezCom.py +++ b/module/plugins/accounts/EasybytezCom.py @@ -19,7 +19,7 @@ class EasybytezCom(XFSPAccount): ("guidobelix", "guidobelix@hotmail.it")] - HOSTER_URL = "http://www.easybytez.com/" + HOSTER_NAME = "easybytez.com" def loadAccountInfo(self, user, req): diff --git a/module/plugins/accounts/File4safeCom.py b/module/plugins/accounts/File4safeCom.py index 0a930ed77..a301f70bc 100644 --- a/module/plugins/accounts/File4safeCom.py +++ b/module/plugins/accounts/File4safeCom.py @@ -13,7 +13,7 @@ class File4safeCom(XFSPAccount): __authors__ = [("stickell", "l.stickell@yahoo.it")] - HOSTER_URL = "http://www.file4safe.com/" + HOSTER_NAME = "file4safe.com" LOGIN_FAIL_PATTERN = r'input_login' PREMIUM_PATTERN = r'Extend Premium' diff --git a/module/plugins/accounts/FileParadoxIn.py b/module/plugins/accounts/FileParadoxIn.py index 6a10e213f..6d55f254e 100644 --- a/module/plugins/accounts/FileParadoxIn.py +++ b/module/plugins/accounts/FileParadoxIn.py @@ -13,4 +13,4 @@ class FileParadoxIn(XFSPAccount): __authors__ = [("Walter Purcaro", "vuolter@gmail.com")] - HOSTER_URL = "http://www.fileparadox.in/" + HOSTER_NAME = "fileparadox.in" diff --git a/module/plugins/accounts/FileomCom.py b/module/plugins/accounts/FileomCom.py index 45bff8f92..565acf6ab 100644 --- a/module/plugins/accounts/FileomCom.py +++ b/module/plugins/accounts/FileomCom.py @@ -13,4 +13,4 @@ class FileomCom(XFSPAccount): __authors__ = [("Walter Purcaro", "vuolter@gmail.com")] - HOSTER_URL = "http://www.fileom.com/" + HOSTER_NAME = "fileom.com" diff --git a/module/plugins/accounts/FilerioCom.py b/module/plugins/accounts/FilerioCom.py index 51bf106ed..d50b70a57 100644 --- a/module/plugins/accounts/FilerioCom.py +++ b/module/plugins/accounts/FilerioCom.py @@ -13,4 +13,4 @@ class FilerioCom(XFSPAccount): __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] - HOSTER_URL = "http://www.filerio.in/" + HOSTER_NAME = "filerio.in" diff --git a/module/plugins/accounts/HugefilesNet.py b/module/plugins/accounts/HugefilesNet.py index 0adc1e511..11e0beab9 100644 --- a/module/plugins/accounts/HugefilesNet.py +++ b/module/plugins/accounts/HugefilesNet.py @@ -13,4 +13,4 @@ class HugefilesNet(XFSPAccount): __authors__ = [("Walter Purcaro", "vuolter@gmail.com")] - HOSTER_URL = "http://www.hugefiles.net/" + HOSTER_NAME = "hugefiles.net" diff --git a/module/plugins/accounts/HundredEightyUploadCom.py b/module/plugins/accounts/HundredEightyUploadCom.py index 1c78edfa4..3bee13ef9 100644 --- a/module/plugins/accounts/HundredEightyUploadCom.py +++ b/module/plugins/accounts/HundredEightyUploadCom.py @@ -13,4 +13,4 @@ class HundredEightyUploadCom(XFSPAccount): __authors__ = [("Walter Purcaro", "vuolter@gmail.com")] - HOSTER_URL = "http://www.180upload.com/" + HOSTER_NAME = "180upload.com" diff --git a/module/plugins/accounts/JunocloudMe.py b/module/plugins/accounts/JunocloudMe.py index 8cd7e8dde..4fae6c510 100644 --- a/module/plugins/accounts/JunocloudMe.py +++ b/module/plugins/accounts/JunocloudMe.py @@ -13,4 +13,4 @@ class JunocloudMe(XFSPAccount): __authors__ = [("guidobelix", "guidobelix@hotmail.it")] - HOSTER_URL = "http://www.junocloud.me/" + HOSTER_NAME = "junocloud.me" diff --git a/module/plugins/accounts/LinestorageCom.py b/module/plugins/accounts/LinestorageCom.py index f2f93fe74..656248e88 100644 --- a/module/plugins/accounts/LinestorageCom.py +++ b/module/plugins/accounts/LinestorageCom.py @@ -13,4 +13,4 @@ class LinestorageCom(XFSPAccount): __authors__ = [("Walter Purcaro", "vuolter@gmail.com")] - HOSTER_URL = "http://www.linestorage.com/" + HOSTER_NAME = "linestorage.com" diff --git a/module/plugins/accounts/LomafileCom.py b/module/plugins/accounts/LomafileCom.py index c3e75b1d9..f9b99eb3a 100644 --- a/module/plugins/accounts/LomafileCom.py +++ b/module/plugins/accounts/LomafileCom.py @@ -13,4 +13,4 @@ class LomafileCom(XFSPAccount): __authors__ = [("guidobelix", "guidobelix@hotmail.it")] - HOSTER_URL = "http://www.lomafile.com/" + HOSTER_NAME = "lomafile.com" diff --git a/module/plugins/accounts/MovReelCom.py b/module/plugins/accounts/MovReelCom.py index 3f641cf72..764dc2c66 100644 --- a/module/plugins/accounts/MovReelCom.py +++ b/module/plugins/accounts/MovReelCom.py @@ -16,4 +16,4 @@ class MovReelCom(XFSPAccount): login_timeout = 60 info_threshold = 30 - HOSTER_URL = "http://www.movreel.com/" + HOSTER_NAME = "movreel.com" diff --git a/module/plugins/accounts/NosuploadCom.py b/module/plugins/accounts/NosuploadCom.py index 3be5f110d..f8561d25f 100644 --- a/module/plugins/accounts/NosuploadCom.py +++ b/module/plugins/accounts/NosuploadCom.py @@ -13,4 +13,4 @@ class NosuploadCom(XFSPAccount): __authors__ = [("Walter Purcaro", "vuolter@gmail.com")] - HOSTER_URL = "http://www.nosupload.com/" + HOSTER_NAME = "nosupload.com" diff --git a/module/plugins/accounts/NovafileCom.py b/module/plugins/accounts/NovafileCom.py index 823f486c7..5b85445e7 100644 --- a/module/plugins/accounts/NovafileCom.py +++ b/module/plugins/accounts/NovafileCom.py @@ -13,4 +13,4 @@ class NovafileCom(XFSPAccount): __authors__ = [("Walter Purcaro", "vuolter@gmail.com")] - HOSTER_URL = "http://www.novafile.com/" + HOSTER_NAME = "novafile.com" diff --git a/module/plugins/accounts/RapidfileshareNet.py b/module/plugins/accounts/RapidfileshareNet.py index 4a146f398..63207acbb 100644 --- a/module/plugins/accounts/RapidfileshareNet.py +++ b/module/plugins/accounts/RapidfileshareNet.py @@ -13,6 +13,6 @@ class RapidfileshareNet(XFSPAccount): __authors__ = [("guidobelix", "guidobelix@hotmail.it")] - HOSTER_URL = "http://www.rapidfileshare.net/" + HOSTER_NAME = "rapidfileshare.net" TRAFFIC_LEFT_PATTERN = r'>Traffic available today:' diff --git a/module/plugins/accounts/RarefileNet.py b/module/plugins/accounts/RarefileNet.py index 303c38396..0bb1920de 100644 --- a/module/plugins/accounts/RarefileNet.py +++ b/module/plugins/accounts/RarefileNet.py @@ -13,4 +13,4 @@ class RarefileNet(XFSPAccount): __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] - HOSTER_URL = "http://www.rarefile.net/" + HOSTER_NAME = "rarefile.net" diff --git a/module/plugins/accounts/RyushareCom.py b/module/plugins/accounts/RyushareCom.py index e2635277a..8eec508a3 100644 --- a/module/plugins/accounts/RyushareCom.py +++ b/module/plugins/accounts/RyushareCom.py @@ -14,7 +14,7 @@ class RyushareCom(XFSPAccount): ("trance4us", None)] - HOSTER_URL = "http://www.ryushare.com/" + HOSTER_NAME = "ryushare.com" def login(self, user, data, req): diff --git a/module/plugins/accounts/SecureUploadEu.py b/module/plugins/accounts/SecureUploadEu.py index 11a13f383..a7d86523c 100644 --- a/module/plugins/accounts/SecureUploadEu.py +++ b/module/plugins/accounts/SecureUploadEu.py @@ -13,4 +13,4 @@ class SecureUploadEu(XFSPAccount): __authors__ = [("Walter Purcaro", "vuolter@gmail.com")] - HOSTER_URL = "http://www.secureupload.eu/" + HOSTER_NAME = "secureupload.eu" diff --git a/module/plugins/accounts/SendmywayCom.py b/module/plugins/accounts/SendmywayCom.py index fdc8b85d9..674f5b183 100644 --- a/module/plugins/accounts/SendmywayCom.py +++ b/module/plugins/accounts/SendmywayCom.py @@ -13,4 +13,4 @@ class SendmywayCom(XFSPAccount): __authors__ = [("Walter Purcaro", "vuolter@gmail.com")] - HOSTER_URL = "http://www.sendmyway.com/" + HOSTER_NAME = "sendmyway.com" diff --git a/module/plugins/accounts/StreamcloudEu.py b/module/plugins/accounts/StreamcloudEu.py index 9e69a7ae4..6cdb5efe0 100644 --- a/module/plugins/accounts/StreamcloudEu.py +++ b/module/plugins/accounts/StreamcloudEu.py @@ -13,4 +13,4 @@ class StreamcloudEu(XFSPAccount): __authors__ = [("Walter Purcaro", "vuolter@gmail.com")] - HOSTER_URL = "http://www.streamcloud.eu/" + HOSTER_NAME = "streamcloud.eu" diff --git a/module/plugins/accounts/TusfilesNet.py b/module/plugins/accounts/TusfilesNet.py index ab5b57834..dcb9fa104 100644 --- a/module/plugins/accounts/TusfilesNet.py +++ b/module/plugins/accounts/TusfilesNet.py @@ -18,7 +18,7 @@ class TusfilesNet(XFSPAccount): __authors__ = [("guidobelix", "guidobelix@hotmail.it")] - HOSTER_URL = "http://www.tusfiles.net/" + HOSTER_NAME = "tusfiles.net" VALID_UNTIL_PATTERN = r'([^<]+)' TRAFFIC_LEFT_PATTERN = r'\n (?P[\d.,]+)\s*(?P[\w^_]+)\s*' diff --git a/module/plugins/accounts/UploadcCom.py b/module/plugins/accounts/UploadcCom.py index c55597777..58ca6c985 100644 --- a/module/plugins/accounts/UploadcCom.py +++ b/module/plugins/accounts/UploadcCom.py @@ -13,4 +13,4 @@ class UploadcCom(XFSPAccount): __authors__ = [("Walter Purcaro", "vuolter@gmail.com")] - HOSTER_URL = "http://www.uploadc.com/" + HOSTER_NAME = "uploadc.com" diff --git a/module/plugins/accounts/UptoboxCom.py b/module/plugins/accounts/UptoboxCom.py index 090cc85df..aed769f7d 100644 --- a/module/plugins/accounts/UptoboxCom.py +++ b/module/plugins/accounts/UptoboxCom.py @@ -13,6 +13,6 @@ class UptoboxCom(XFSPAccount): __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] - HOSTER_URL = "http://www.uptobox.com/" + HOSTER_NAME = "uptobox.com" VALID_UNTIL_PATTERN = r'>Premium.[Aa]ccount expire: ([^<]+)
    ' diff --git a/module/plugins/accounts/VidPlayNet.py b/module/plugins/accounts/VidPlayNet.py index 904041939..286adfc13 100644 --- a/module/plugins/accounts/VidPlayNet.py +++ b/module/plugins/accounts/VidPlayNet.py @@ -13,4 +13,4 @@ class VidPlayNet(XFSPAccount): __authors__ = [("Walter Purcaro", "vuolter@gmail.com")] - HOSTER_URL = "http://www.vidplay.net/" + HOSTER_NAME = "vidplay.net" -- cgit v1.2.3 From 0c35c0f7fe126b87eccdf4f69933b84927956658 Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Sat, 18 Oct 2014 15:19:59 +0200 Subject: [XFileSharingPro] Fix account __type__ --- module/plugins/accounts/XFileSharingPro.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'module') diff --git a/module/plugins/accounts/XFileSharingPro.py b/module/plugins/accounts/XFileSharingPro.py index cd09c076d..d5a62c3a4 100644 --- a/module/plugins/accounts/XFileSharingPro.py +++ b/module/plugins/accounts/XFileSharingPro.py @@ -7,10 +7,10 @@ from module.plugins.internal.XFSPAccount import XFSPAccount class XFileSharingPro(XFSPAccount): __name__ = "XFileSharingPro" - __type__ = "crypter" - __version__ = "0.01" + __type__ = "account" + __version__ = "0.02" - __description__ = """XFileSharingPro dummy account plugin for hook""" + __description__ = """XFileSharingPro multi-purpose account plugin""" __license__ = "GPLv3" __authors__ = [("Walter Purcaro", "vuolter@gmail.com")] -- cgit v1.2.3 From b0da8977d2587e9c662878423404d72d7f812601 Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Sat, 18 Oct 2014 15:20:41 +0200 Subject: [HotfileFolderCom] Rename to HotfileComFolder --- module/plugins/crypter/HotfileComFolder.py | 15 +++++++++++++++ module/plugins/crypter/HotfileFolderCom.py | 15 --------------- 2 files changed, 15 insertions(+), 15 deletions(-) create mode 100644 module/plugins/crypter/HotfileComFolder.py delete mode 100644 module/plugins/crypter/HotfileFolderCom.py (limited to 'module') diff --git a/module/plugins/crypter/HotfileComFolder.py b/module/plugins/crypter/HotfileComFolder.py new file mode 100644 index 000000000..c2c999275 --- /dev/null +++ b/module/plugins/crypter/HotfileComFolder.py @@ -0,0 +1,15 @@ +# -*- coding: utf-8 -*- + +from module.plugins.internal.DeadCrypter import DeadCrypter + + +class HotfileComFolder(DeadCrypter): + __name__ = "HotfileComFolder" + __type__ = "crypter" + __version__ = "0.3" + + __pattern__ = r'https?://(?:www\.)?hotfile\.com/list/\w+/\w+' + + __description__ = """Hotfile.com folder decrypter plugin""" + __license__ = "GPLv3" + __authors__ = [("RaNaN", "RaNaN@pyload.org")] diff --git a/module/plugins/crypter/HotfileFolderCom.py b/module/plugins/crypter/HotfileFolderCom.py deleted file mode 100644 index d9e4e4c39..000000000 --- a/module/plugins/crypter/HotfileFolderCom.py +++ /dev/null @@ -1,15 +0,0 @@ -# -*- coding: utf-8 -*- - -from module.plugins.internal.DeadCrypter import DeadCrypter - - -class HotfileFolderCom(DeadCrypter): - __name__ = "HotfileFolderCom" - __type__ = "crypter" - __version__ = "0.3" - - __pattern__ = r'https?://(?:www\.)?hotfile\.com/list/\w+/\w+' - - __description__ = """Hotfile.com folder decrypter plugin""" - __license__ = "GPLv3" - __authors__ = [("RaNaN", "RaNaN@pyload.org")] -- cgit v1.2.3 From e2f481deb624709764768454f7cf8222b8b45af7 Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Sat, 18 Oct 2014 15:23:30 +0200 Subject: [SimpleCrypter] Fix account association --- module/plugins/internal/SimpleCrypter.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'module') diff --git a/module/plugins/internal/SimpleCrypter.py b/module/plugins/internal/SimpleCrypter.py index 73329ed65..fe644cbda 100644 --- a/module/plugins/internal/SimpleCrypter.py +++ b/module/plugins/internal/SimpleCrypter.py @@ -10,7 +10,7 @@ from module.utils import fixup, html_unescape class SimpleCrypter(Crypter): __name__ = "SimpleCrypter" __type__ = "crypter" - __version__ = "0.13" + __version__ = "0.14" __pattern__ = None @@ -63,6 +63,15 @@ class SimpleCrypter(Crypter): LOGIN_PREMIUM = False + def init(self): + self.account = self.core.accountManager.getAccountPlugin((self.__name__ + ".py").replace("Folder.py", "")) + + if self.account and self.account.canUse(): + self.user, data = self.account.selectAccount() + self.req = self.account.getAccountRequest(self.user) + self.premium = self.account.isPremium(self.user) + + def prepare(self): if self.LOGIN_ACCOUNT and not self.account: self.fail('Required account not found!') -- cgit v1.2.3 From a0c5df1aca6bfb58120044079a3fdde560612a1e Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Sat, 18 Oct 2014 15:25:43 +0200 Subject: [XFileSharingPro][XFileSharingProFolder] Account pairing routine --- module/plugins/crypter/XFileSharingProFolder.py | 12 ++++++++++-- module/plugins/hoster/XFileSharingPro.py | 19 +++++++++++++++---- 2 files changed, 25 insertions(+), 6 deletions(-) (limited to 'module') diff --git a/module/plugins/crypter/XFileSharingProFolder.py b/module/plugins/crypter/XFileSharingProFolder.py index f3003e2aa..ba8c7b8b7 100644 --- a/module/plugins/crypter/XFileSharingProFolder.py +++ b/module/plugins/crypter/XFileSharingProFolder.py @@ -8,7 +8,7 @@ from module.plugins.internal.XFSPCrypter import XFSPCrypter class XFileSharingProFolder(XFSPCrypter): __name__ = "XFileSharingProFolder" __type__ = "crypter" - __version__ = "0.01" + __version__ = "0.02" __pattern__ = r'^unmatchable$' @@ -17,6 +17,14 @@ class XFileSharingProFolder(XFSPCrypter): __authors__ = [("Walter Purcaro", "vuolter@gmail.com")] - def setup(self): + def init(self): self.__pattern__ = self.core.pluginManager.crypterPlugins[self.__name__]['pattern'] self.HOSTER_NAME = re.match(self.__pattern__, self.pyfile.url).group(1).lower() + + account_name = "".join([str.capitalize() for str in self.HOSTER_NAME.split('.')]) + self.account = self.core.accountManager.getAccountPlugin(account_name) + + if self.account and self.account.canUse(): + self.user, data = self.account.selectAccount() + self.req = self.account.getAccountRequest(self.user) + self.premium = self.account.isPremium(self.user) diff --git a/module/plugins/hoster/XFileSharingPro.py b/module/plugins/hoster/XFileSharingPro.py index e670dc5af..4eb6e95d3 100644 --- a/module/plugins/hoster/XFileSharingPro.py +++ b/module/plugins/hoster/XFileSharingPro.py @@ -8,7 +8,7 @@ from module.plugins.internal.XFSPHoster import XFSPHoster, create_getInfo class XFileSharingPro(XFSPHoster): __name__ = "XFileSharingPro" __type__ = "hoster" - __version__ = "0.38" + __version__ = "0.39" __pattern__ = r'^unmatchable$' @@ -20,12 +20,23 @@ class XFileSharingPro(XFSPHoster): FILE_URL_REPLACEMENTS = [(r'/embed-(\w{12}).*', r'/\1')] #: support embedded files + def init(self): + self.__pattern__ = self.core.pluginManager.hosterPlugins[self.__name__]['pattern'] + self.HOSTER_NAME = re.match(self.__pattern__, self.pyfile.url).group(1).lower() + + account_name = "".join([str.capitalize() for str in self.HOSTER_NAME.split('.')]) + self.account = self.core.accountManager.getAccountPlugin(account_name) + + if self.account and self.account.canUse(): + self.user, data = self.account.selectAccount() + self.req = self.account.getAccountRequest(self.user) + self.premium = self.account.isPremium(self.user) + + def setup(self): self.chunkLimit = 1 + self.resumeDownload = self.premium self.multiDL = True - self.__pattern__ = self.core.pluginManager.hosterPlugins[self.__name__]['pattern'] - self.HOSTER_NAME = re.match(self.__pattern__, self.pyfile.url).group(1).lower() - getInfo = create_getInfo(XFileSharingPro) -- cgit v1.2.3 From 8edb5481e04da44a227e18c76fc4073297721f4f Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Sat, 18 Oct 2014 16:29:41 +0200 Subject: [XFileSharingPro] Fixes --- module/plugins/accounts/XFileSharingPro.py | 18 ++++++++++++++---- module/plugins/crypter/XFileSharingProFolder.py | 14 +++++++++----- module/plugins/hoster/XFileSharingPro.py | 14 +++++++++----- 3 files changed, 32 insertions(+), 14 deletions(-) (limited to 'module') diff --git a/module/plugins/accounts/XFileSharingPro.py b/module/plugins/accounts/XFileSharingPro.py index d5a62c3a4..5be377c40 100644 --- a/module/plugins/accounts/XFileSharingPro.py +++ b/module/plugins/accounts/XFileSharingPro.py @@ -10,11 +10,21 @@ class XFileSharingPro(XFSPAccount): __type__ = "account" __version__ = "0.02" - __description__ = """XFileSharingPro multi-purpose account plugin""" + __description__ = """XFileSharingPro dummy account plugin""" __license__ = "GPLv3" __authors__ = [("Walter Purcaro", "vuolter@gmail.com")] - def init(self): - pattern = self.core.pluginManager.hosterPlugins[self.__name__]['pattern'] - self.HOSTER_NAME = re.match(pattern, self.pyfile.url).group(1).lower() + HOSTER_NAME = None + + + def loadAccountInfo(self, user, req): + if self.HOSTER_NAME: + return super(XFileSharingPro, self).loadAccountInfo(user, req) + else: + return {'validuntil': None, 'trafficleft': None, 'premium': None} + + + def login(self, user, data, req): + if self.HOSTER_NAME: + return super(XFileSharingPro, self).login(user, data, req) diff --git a/module/plugins/crypter/XFileSharingProFolder.py b/module/plugins/crypter/XFileSharingProFolder.py index ba8c7b8b7..e6fb2a7a5 100644 --- a/module/plugins/crypter/XFileSharingProFolder.py +++ b/module/plugins/crypter/XFileSharingProFolder.py @@ -22,9 +22,13 @@ class XFileSharingProFolder(XFSPCrypter): self.HOSTER_NAME = re.match(self.__pattern__, self.pyfile.url).group(1).lower() account_name = "".join([str.capitalize() for str in self.HOSTER_NAME.split('.')]) - self.account = self.core.accountManager.getAccountPlugin(account_name) + account = self.core.accountManager.getAccountPlugin(account_name) - if self.account and self.account.canUse(): - self.user, data = self.account.selectAccount() - self.req = self.account.getAccountRequest(self.user) - self.premium = self.account.isPremium(self.user) + if account and account.canUse(): + self.user, data = account.selectAccount() + self.req = account.getAccountRequest(self.user) + self.premium = account.isPremium(self.user) + + self.account = account + else: + self.account.HOSTER_NAME = self.HOSTER_NAME diff --git a/module/plugins/hoster/XFileSharingPro.py b/module/plugins/hoster/XFileSharingPro.py index 4eb6e95d3..fc348c90f 100644 --- a/module/plugins/hoster/XFileSharingPro.py +++ b/module/plugins/hoster/XFileSharingPro.py @@ -25,12 +25,16 @@ class XFileSharingPro(XFSPHoster): self.HOSTER_NAME = re.match(self.__pattern__, self.pyfile.url).group(1).lower() account_name = "".join([str.capitalize() for str in self.HOSTER_NAME.split('.')]) - self.account = self.core.accountManager.getAccountPlugin(account_name) + account = self.core.accountManager.getAccountPlugin(account_name) - if self.account and self.account.canUse(): - self.user, data = self.account.selectAccount() - self.req = self.account.getAccountRequest(self.user) - self.premium = self.account.isPremium(self.user) + if account and account.canUse(): + self.user, data = account.selectAccount() + self.req = account.getAccountRequest(self.user) + self.premium = account.isPremium(self.user) + + self.account = account + else: + self.account.HOSTER_NAME = self.HOSTER_NAME def setup(self): -- cgit v1.2.3 From b9cd4eb41e9b8753bca4b5a8334d7242eab98371 Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Sat, 18 Oct 2014 17:44:49 +0200 Subject: [SimpleCrypter] Fix account routine --- module/plugins/internal/SimpleCrypter.py | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) (limited to 'module') diff --git a/module/plugins/internal/SimpleCrypter.py b/module/plugins/internal/SimpleCrypter.py index fe644cbda..3c1dc3244 100644 --- a/module/plugins/internal/SimpleCrypter.py +++ b/module/plugins/internal/SimpleCrypter.py @@ -10,7 +10,7 @@ from module.utils import fixup, html_unescape class SimpleCrypter(Crypter): __name__ = "SimpleCrypter" __type__ = "crypter" - __version__ = "0.14" + __version__ = "0.15" __pattern__ = None @@ -64,12 +64,15 @@ class SimpleCrypter(Crypter): def init(self): - self.account = self.core.accountManager.getAccountPlugin((self.__name__ + ".py").replace("Folder.py", "")) + account_name = (self.__name__ + ".py").replace("Folder.py", "").replace(".py", "") + account = self.core.accountManager.getAccountPlugin(account_name) - if self.account and self.account.canUse(): - self.user, data = self.account.selectAccount() - self.req = self.account.getAccountRequest(self.user) - self.premium = self.account.isPremium(self.user) + if account and account.canUse(): + self.user, data = account.selectAccount() + self.req = account.getAccountRequest(self.user) + self.premium = account.isPremium(self.user) + + self.account = account def prepare(self): -- cgit v1.2.3 From ca835310c633fd19e3954ea9b6a0388d8529b368 Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Sat, 18 Oct 2014 17:47:29 +0200 Subject: [XFileSharingPro] Improve hook regex --- module/plugins/hooks/XFileSharingPro.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'module') diff --git a/module/plugins/hooks/XFileSharingPro.py b/module/plugins/hooks/XFileSharingPro.py index 44d376905..1782456e1 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.16" + __version__ = "0.17" __config__ = [("activated", "bool", "Activated", True), ("match_hoster", "Always;Always except excluded;Listed only", "Hoster match", "Always except excluded"), @@ -50,7 +50,7 @@ class XFileSharingPro(Hook): def loadPattern(self): regex = {'hoster' = (r'https?://(?!(?:www\.)?(?:%s))(?:www\.)?([\w^_]+(?:\.[a-zA-Z]{2,})+(?:\:\d+)?)/(?:embed-)?\w{12}', - r'https?://(?:[^/]+\.)?(%s)/(?:embed-)?\w{12}'), + r'https?://(?:[^/]+\.)?(%s)/(?:embed-)?\w{12}\W?'), 'crypter' = (r'https?://(?!(?:www\.)?(?:%s))(?:www\.)?([\w^_]+(?:\.[a-zA-Z]{2,})+(?:\:\d+)?)/(?:user|folder)s?/\w+', r'https?://(?:[^/]+\.)?(%s)/(?:user|folder)s?/\w+')} -- cgit v1.2.3 From 0b9f23cd350d5dd9f4ba16c748838fa9a2d553c8 Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Sat, 18 Oct 2014 18:02:05 +0200 Subject: [FilerNet] Revert captcha_key --- module/plugins/hoster/FilerNet.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) (limited to 'module') diff --git a/module/plugins/hoster/FilerNet.py b/module/plugins/hoster/FilerNet.py index c8211b435..7534c669d 100644 --- a/module/plugins/hoster/FilerNet.py +++ b/module/plugins/hoster/FilerNet.py @@ -16,7 +16,7 @@ from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo class FilerNet(SimpleHoster): __name__ = "FilerNet" __type__ = "hoster" - __version__ = "0.04" + __version__ = "0.05" __pattern__ = r'https?://(?:www\.)?filer\.net/get/(\w+)' @@ -27,8 +27,11 @@ class FilerNet(SimpleHoster): FILE_INFO_PATTERN = r'

    Free Download (?P\S+) (?P[\w.]+) (?P[\w^_]+)

    ' OFFLINE_PATTERN = r'Nicht gefunden' + LINK_PATTERN = r'href="([^"]+)">Get download' + RECAPTCHA_KEY = "6LcFctISAAAAAAgaeHgyqhNecGJJRnxV1m_vAz3V" + def process(self, pyfile): if self.premium and (not self.FORCE_CHECK_TRAFFIC or self.checkTrafficLeft()): @@ -36,6 +39,7 @@ class FilerNet(SimpleHoster): else: self.handleFree() + def handleFree(self): self.req.setOption("timeout", 120) self.html = self.load(self.pyfile.url, decode=not self.TEXT_ENCODING, cookies=self.COOKIES) @@ -68,12 +72,8 @@ class FilerNet(SimpleHoster): recaptcha = ReCaptcha(self) - captcha_key = recaptcha.detect_key() - if captcha_key is None: - self.parseError("ReCaptcha key not found") - for _ in xrange(5): - challenge, response = recaptcha.challenge(captcha_key) + challenge, response = recaptcha.challenge(self.RECAPTCHA_KEY) post_data = {'recaptcha_challenge_field': challenge, 'recaptcha_response_field': response, 'hash': hash_data} @@ -97,6 +97,7 @@ class FilerNet(SimpleHoster): self.download(downloadURL, disposition=True) + def handlePremium(self): header = self.load(self.pyfile.url, just_header=True) if 'location' in header: # Direct Download ON -- cgit v1.2.3 From 102a06bad18dc5838abdf3507c6ce060894050f3 Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Sat, 18 Oct 2014 18:47:14 +0200 Subject: [RapidgatorNet] Fix process routine --- module/plugins/hoster/RapidgatorNet.py | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) (limited to 'module') diff --git a/module/plugins/hoster/RapidgatorNet.py b/module/plugins/hoster/RapidgatorNet.py index 3da9846cf..4840701e6 100644 --- a/module/plugins/hoster/RapidgatorNet.py +++ b/module/plugins/hoster/RapidgatorNet.py @@ -14,7 +14,7 @@ from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo class RapidgatorNet(SimpleHoster): __name__ = "RapidgatorNet" __type__ = "hoster" - __version__ = "0.22" + __version__ = "0.23" __pattern__ = r'http://(?:www\.)?(rapidgator\.net|rg\.to)/file/\w+' @@ -47,16 +47,15 @@ class RapidgatorNet(SimpleHoster): self.resumeDownload = self.multiDL = self.premium self.sid = None self.chunkLimit = 1 - self.req.setOption("timeout", 120) - def process(self, pyfile): + + def prepare(self): if self.account: self.sid = self.account.getAccountData(self.user).get('SID', None) if self.sid: - self.handlePremium() - else: - self.handleFree() + self.premium = True + def api_response(self, cmd): try: @@ -81,6 +80,7 @@ class RapidgatorNet(SimpleHoster): self.account.relogin(self.user) self.retry(wait_time=60) + def handlePremium(self): #self.logDebug("ACCOUNT_DATA", self.account.getAccountData(self.user)) self.api_data = self.api_response('info') @@ -90,9 +90,8 @@ class RapidgatorNet(SimpleHoster): url = self.api_response('download')['url'] self.download(url) - def handleFree(self): - self.html = self.load(self.pyfile.url, decode=True) + def handleFree(self): self.checkFree() jsvars = dict(re.findall(self.JSVARS_PATTERN, self.html)) @@ -141,6 +140,7 @@ class RapidgatorNet(SimpleHoster): else: self.parseError("Download link") + def getCaptcha(self): m = re.search(self.ADSCAPTCHA_PATTERN, self.html) if m: @@ -161,6 +161,7 @@ class RapidgatorNet(SimpleHoster): return captcha, captcha_key + def checkFree(self): m = re.search(self.PREMIUM_ONLY_ERROR_PATTERN, self.html) if m: @@ -184,6 +185,7 @@ class RapidgatorNet(SimpleHoster): self.wait(wait_time, True) self.retry() + def getJsonResponse(self, url): response = self.load(url, decode=True) if not response.startswith('{'): -- cgit v1.2.3 From 089c1341de6ec7fa3a6cfc30fbf24cbef02cbfce Mon Sep 17 00:00:00 2001 From: AndroKev Date: Sat, 18 Oct 2014 18:58:28 +0200 Subject: [RelinkUs] Fix regex errors and str conversion --- module/plugins/crypter/RelinkUs.py | 45 ++++++++++++++++++++++++++++---------- 1 file changed, 33 insertions(+), 12 deletions(-) (limited to 'module') diff --git a/module/plugins/crypter/RelinkUs.py b/module/plugins/crypter/RelinkUs.py index d99b7fb1a..dc97fca74 100644 --- a/module/plugins/crypter/RelinkUs.py +++ b/module/plugins/crypter/RelinkUs.py @@ -12,37 +12,42 @@ from module.plugins.Crypter import Crypter class RelinkUs(Crypter): __name__ = "RelinkUs" __type__ = "crypter" - __version__ = "3.0" + __version__ = "3.1" __pattern__ = r'http://(?:www\.)?relink\.us/(f/|((view|go)\.php\?id=))(?P.+)' __description__ = """Relink.us decrypter plugin""" __license__ = "GPLv3" - __authors__ = [("fragonib", "fragonib[AT]yahoo[DOT]es")] + __authors__ = [("fragonib", "fragonib[AT]yahoo[DOT]es"), + ("AndroKev", "neureither.kevin@gmail.com")] - # Constants PREFERRED_LINK_SOURCES = ["cnl2", "dlc", "web"] OFFLINE_TOKEN = r'Tattooside' - PASSWORD_TOKEN = r'container_password\.php' + + PASSWORD_TOKEN = r'container_password.php' PASSWORD_ERROR_ROKEN = r'You have entered an incorrect password' - PASSWORD_SUBMIT_URL = r'http://www\.relink\.us/container_password\.php' - CAPTCHA_TOKEN = r'container_captcha\.php' + PASSWORD_SUBMIT_URL = r'http://www.relink.us/container_password.php' + + CAPTCHA_TOKEN = r'container_captcha.php' CAPTCHA_ERROR_ROKEN = r'You have solved the captcha wrong' - CAPTCHA_IMG_URL = r'http://www\.relink\.us/core/captcha/circlecaptcha\.php' - CAPTCHA_SUBMIT_URL = r'http://www\.relink\.us/container_captcha\.php' - FILE_TITLE_REGEX = r'<th>Title</th><td><i>(.*)</i></td></tr>' + CAPTCHA_IMG_URL = r'http://www.relink.us/core/captcha/circlecaptcha.php' + CAPTCHA_SUBMIT_URL = r'http://www.relink.us/container_captcha.php' + + FILE_TITLE_REGEX = r'<th>Title</th><td>(.*)</td></tr>' FILE_NOTITLE = r'No title' CNL2_FORM_REGEX = r'<form id="cnl_form-(.*?)</form>' CNL2_FORMINPUT_REGEX = r'<input.*?name="%s".*?value="(.*?)"' CNL2_JK_KEY = "jk" CNL2_CRYPTED_KEY = "crypted" + DLC_LINK_REGEX = r'<a href=".*?" class="dlc_button" target="_blank">' - DLC_DOWNLOAD_URL = r'http://www\.relink\.us/download\.php' + DLC_DOWNLOAD_URL = r'http://www.relink.us/download.php' + WEB_FORWARD_REGEX = r'getFile\(\'(?P<link>.+)\'\)' - WEB_FORWARD_URL = r'http://www\.relink\.us/frame\.php' + WEB_FORWARD_URL = r'http://www.relink.us/frame.php' WEB_LINK_REGEX = r'<iframe name="Container" height="100%" frameborder="no" width="100%" src="(?P<link>.+)"></iframe>' @@ -53,6 +58,7 @@ class RelinkUs(Crypter): self.html = None self.captcha = False + def decrypt(self, pyfile): # Init self.initPackage(pyfile) @@ -91,46 +97,54 @@ class RelinkUs(Crypter): else: self.fail('Could not extract any links') + def initPackage(self, pyfile): self.fileid = re.match(self.__pattern__, pyfile.url).group('id') self.package = pyfile.package() self.password = self.getPassword() + def requestPackage(self): self.html = self.load(self.pyfile.url, decode=True) + def isOnline(self): if self.OFFLINE_TOKEN in self.html: self.logDebug("File not found") return False return True + def isPasswordProtected(self): if self.PASSWORD_TOKEN in self.html: self.logDebug("Links are password protected") return True + def isCaptchaProtected(self): if self.CAPTCHA_TOKEN in self.html: self.logDebug("Links are captcha protected") return True return False + def unlockPasswordProtection(self): self.logDebug("Submitting password [%s] for protected links" % self.password) passwd_url = self.PASSWORD_SUBMIT_URL + "?id=%s" % self.fileid passwd_data = {'id': self.fileid, 'password': self.password, 'pw': 'submit'} self.html = self.load(passwd_url, post=passwd_data, decode=True) + def unlockCaptchaProtection(self): self.logDebug("Request user positional captcha resolving") captcha_img_url = self.CAPTCHA_IMG_URL + "?id=%s" % self.fileid coords = self.decryptCaptcha(captcha_img_url, forceUser=True, imgtype="png", result_type='positional') - self.logDebug("Captcha resolved, coords [%s]" % coords) + self.logDebug("Captcha resolved, coords [%s]" % str(coords)) captcha_post_url = self.CAPTCHA_SUBMIT_URL + "?id=%s" % self.fileid captcha_post_data = {'button.x': coords[0], 'button.y': coords[1], 'captcha': 'submit'} self.html = self.load(captcha_post_url, post=captcha_post_data, decode=True) + def getPackageInfo(self): name = folder = None @@ -151,6 +165,7 @@ class RelinkUs(Crypter): # Return package info return name, folder + def handleErrors(self): if self.PASSWORD_ERROR_ROKEN in self.html: msg = "Incorrect password, please set right password on 'Edit package' form and retry" @@ -165,6 +180,7 @@ class RelinkUs(Crypter): else: self.correctCaptcha() + def handleLinkSource(self, source): if source == 'cnl2': return self.handleCNL2Links() @@ -175,6 +191,7 @@ class RelinkUs(Crypter): else: self.fail('Unknown source [%s] (this is probably a bug)' % source) + def handleCNL2Links(self): self.logDebug("Search for CNL2 links") package_links = [] @@ -189,6 +206,7 @@ class RelinkUs(Crypter): self.logDebug("Unable to decrypt CNL2 links") return package_links + def handleDLCLinks(self): self.logDebug("Search for DLC links") package_links = [] @@ -208,6 +226,7 @@ class RelinkUs(Crypter): self.logDebug("Unable to download DLC container") return package_links + def handleWEBLinks(self): self.logDebug("Search for WEB links") package_links = [] @@ -226,6 +245,7 @@ class RelinkUs(Crypter): self.wait() return package_links + def _getCipherParams(self, cnl2_form): # Get jk jk_re = self.CNL2_FORMINPUT_REGEX % self.CNL2_JK_KEY @@ -239,6 +259,7 @@ class RelinkUs(Crypter): self.logDebug("Detected %d crypted blocks" % len(vcrypted)) return vcrypted, vjk + def _getLinks(self, crypted, jk): # Get key jreturn = self.js.eval("%s f()" % jk) -- cgit v1.2.3 From 477120dfa8090f808ce17267896456c082714203 Mon Sep 17 00:00:00 2001 From: Walter Purcaro <vuolter@gmail.com> Date: Sat, 18 Oct 2014 19:09:49 +0200 Subject: Fixed logging issue with coords values --- module/plugins/accounts/XFileSharingPro.py | 2 +- module/plugins/crypter/NCryptIn.py | 21 +++++++++++++++++++-- module/plugins/crypter/ShareLinksBiz.py | 21 +++++++++++++++++++-- 3 files changed, 39 insertions(+), 5 deletions(-) (limited to 'module') diff --git a/module/plugins/accounts/XFileSharingPro.py b/module/plugins/accounts/XFileSharingPro.py index 5be377c40..fba774b21 100644 --- a/module/plugins/accounts/XFileSharingPro.py +++ b/module/plugins/accounts/XFileSharingPro.py @@ -10,7 +10,7 @@ class XFileSharingPro(XFSPAccount): __type__ = "account" __version__ = "0.02" - __description__ = """XFileSharingPro dummy account plugin""" + __description__ = """XFileSharingPro multi-purpose account plugin""" __license__ = "GPLv3" __authors__ = [("Walter Purcaro", "vuolter@gmail.com")] diff --git a/module/plugins/crypter/NCryptIn.py b/module/plugins/crypter/NCryptIn.py index 64ce973e8..22fd53384 100644 --- a/module/plugins/crypter/NCryptIn.py +++ b/module/plugins/crypter/NCryptIn.py @@ -13,7 +13,7 @@ from module.plugins.internal.CaptchaService import ReCaptcha class NCryptIn(Crypter): __name__ = "NCryptIn" __type__ = "crypter" - __version__ = "1.32" + __version__ = "1.33" __pattern__ = r'http://(?:www\.)?ncrypt\.in/(?P<type>folder|link|frame)-([^/\?]+)' @@ -36,6 +36,7 @@ class NCryptIn(Crypter): self.links_source_order = ["cnl2", "rsdf", "ccf", "dlc", "web"] self.protection_type = None + def decrypt(self, pyfile): # Init self.package = pyfile.package() @@ -77,13 +78,16 @@ class NCryptIn(Crypter): self.fail('Could not extract any links') self.packages = [(package_name, package_links, folder_name)] + def isSingleLink(self): link_type = re.match(self.__pattern__, self.pyfile.url).group('type') return link_type in ("link", "frame") + def requestFolderHome(self): return self.load(self.pyfile.url, decode=True) + def removeHtmlCrap(self, content): patterns = (r'(type="hidden".*?(name=".*?")?.*?value=".*?")', r'display:none;">(.*?)</(div|span)>', @@ -95,12 +99,14 @@ class NCryptIn(Crypter): content = re.sub(rexpr, "", content) return content + def isOnline(self): if "Your folder does not exist" in self.cleanedHtml: self.logDebug("File not m") return False return True + def isProtected(self): form = re.search(r'<form.*?name.*?protected.*?>(.*?)</form>', self.cleanedHtml, re.DOTALL) if form is not None: @@ -112,6 +118,7 @@ class NCryptIn(Crypter): return True return False + def getPackageInfo(self): m = re.search(self.NAME_PATTERN, self.html) if m: @@ -123,6 +130,7 @@ class NCryptIn(Crypter): self.logDebug("Package info not m, defaulting to pyfile name [%s] and folder [%s]" % (name, folder)) return name, folder + def unlockProtection(self): postData = {} @@ -158,7 +166,7 @@ class NCryptIn(Crypter): self.logDebug("CircleCaptcha protected") captcha_img_url = "http://ncrypt.in/classes/captcha/circlecaptcha.php" coords = self.decryptCaptcha(captcha_img_url, forceUser=True, imgtype="png", result_type='positional') - self.logDebug("Captcha resolved, coords [%s]" % coords) + self.logDebug("Captcha resolved, coords [%s]" % str(coords)) postData['circle.x'] = coords[0] postData['circle.y'] = coords[1] @@ -166,6 +174,7 @@ class NCryptIn(Crypter): postData['submit_protected'] = 'Continue to folder' return self.load(self.pyfile.url, post=postData, decode=True) + def handleErrors(self): if self.protection_type == "password": if "This password is invalid!" in self.cleanedHtml: @@ -180,6 +189,7 @@ class NCryptIn(Crypter): else: self.correctCaptcha() + def handleLinkSource(self, link_source_type): # Check for JS engine require_js_engine = link_source_type in ("cnl2", "rsdf", "ccf", "dlc") @@ -199,6 +209,7 @@ class NCryptIn(Crypter): else: self.fail('unknown source type "%s" (this is probably a bug)' % link_source_type) + def handleSingleLink(self): self.logDebug("Handling Single link") @@ -211,6 +222,7 @@ class NCryptIn(Crypter): return package_links + def handleCNL2(self): self.logDebug("Handling CNL2 links") @@ -226,6 +238,7 @@ class NCryptIn(Crypter): return package_links + def handleContainers(self): self.logDebug("Handling Container links") @@ -240,6 +253,7 @@ class NCryptIn(Crypter): return package_links + def handleWebLinks(self): self.logDebug("Handling Web links") @@ -256,6 +270,7 @@ class NCryptIn(Crypter): return package_links + def decryptLink(self, link): try: url = link.replace("link-", "frame-") @@ -264,6 +279,7 @@ class NCryptIn(Crypter): except Exception, detail: self.logDebug("Error decrypting link %s, %s" % (link, detail)) + def _getCipherParams(self): pattern = r'<input.*?name="%s".*?value="(.*?)"' @@ -280,6 +296,7 @@ class NCryptIn(Crypter): self.logDebug("Detected %d crypted blocks" % len(vcrypted)) return vcrypted, vjk + def _getLinks(self, crypted, jk): # Get key jreturn = self.js.eval("%s f()" % jk) diff --git a/module/plugins/crypter/ShareLinksBiz.py b/module/plugins/crypter/ShareLinksBiz.py index 9d4cfbb43..6e187ed6f 100644 --- a/module/plugins/crypter/ShareLinksBiz.py +++ b/module/plugins/crypter/ShareLinksBiz.py @@ -11,7 +11,7 @@ from module.plugins.Crypter import Crypter class ShareLinksBiz(Crypter): __name__ = "ShareLinksBiz" __type__ = "crypter" - __version__ = "1.13" + __version__ = "1.14" __pattern__ = r'http://(?:www\.)?(share-links|s2l)\.biz/(?P<ID>_?\w+)' @@ -27,6 +27,7 @@ class ShareLinksBiz(Crypter): self.html = None self.captcha = False + def decrypt(self, pyfile): # Init self.initFile(pyfile) @@ -61,6 +62,7 @@ class ShareLinksBiz(Crypter): # Pack self.packages = [(package_name, package_links, package_folder)] + def initFile(self, pyfile): url = pyfile.url if 's2l.biz' in url: @@ -69,29 +71,34 @@ class ShareLinksBiz(Crypter): self.fileId = re.match(self.__pattern__, url).group('ID') self.package = pyfile.package() + def isOnline(self): if "No usable content was found" in self.html: self.logDebug("File not found") return False return True + def isPasswordProtected(self): if re.search(r'''<form.*?id="passwordForm".*?>''', self.html): self.logDebug("Links are protected") return True return False + def isCaptchaProtected(self): if '<map id="captchamap"' in self.html: self.logDebug("Links are captcha protected") return True return False + def unblockServer(self): imgs = re.findall(r"(/template/images/.*?\.gif)", self.html) for img in imgs: self.load(self.baseUrl + img) + def unlockPasswordProtection(self): password = self.getPassword() self.logDebug("Submitting password [%s] for protected links" % password) @@ -99,6 +106,7 @@ class ShareLinksBiz(Crypter): url = self.baseUrl + '/' + self.fileId self.html = self.load(url, post=post, decode=True) + def unlockCaptchaProtection(self): # Get captcha map captchaMap = self._getCaptchaMap() @@ -109,7 +117,7 @@ class ShareLinksBiz(Crypter): captchaUrl = self.baseUrl + '/captcha.gif?d=%s&PHPSESSID=%s' % (m.group(1), m.group(2)) self.logDebug("Waiting user for correct position") coords = self.decryptCaptcha(captchaUrl, forceUser=True, imgtype="gif", result_type='positional') - self.logDebug("Captcha resolved, coords [%s]" % coords) + self.logDebug("Captcha resolved, coords [%s]" % str(coords)) # Resolve captcha href = self._resolveCoords(coords, captchaMap) @@ -122,6 +130,7 @@ class ShareLinksBiz(Crypter): url = self.baseUrl + href self.html = self.load(url, decode=True) + def _getCaptchaMap(self): mapp = {} for m in re.finditer(r'<area shape="rect" coords="(.*?)" href="(.*?)"', self.html): @@ -130,6 +139,7 @@ class ShareLinksBiz(Crypter): mapp[rect] = href return mapp + def _resolveCoords(self, coords, captchaMap): x, y = coords for rect, href in captchaMap.items(): @@ -137,6 +147,7 @@ class ShareLinksBiz(Crypter): if (x >= x1 and x <= x2) and (y >= y1 and y <= y2): return href + def handleErrors(self): if "The inserted password was wrong" in self.html: self.logDebug("Incorrect password, please set right password on 'Edit package' form and retry") @@ -152,6 +163,7 @@ class ShareLinksBiz(Crypter): else: self.correctCaptcha() + def getPackageInfo(self): name = folder = None @@ -173,6 +185,7 @@ class ShareLinksBiz(Crypter): # Return package info return name, folder + def handleWebLinks(self): package_links = [] self.logDebug("Handling Web links") @@ -200,6 +213,7 @@ class ShareLinksBiz(Crypter): self.logDebug("Error decrypting Web link [%s], %s" % (ID, detail)) return package_links + def handleContainers(self): package_links = [] self.logDebug("Handling Container links") @@ -212,6 +226,7 @@ class ShareLinksBiz(Crypter): package_links.append(link) return package_links + def handleCNL2(self): package_links = [] self.logDebug("Handling CNL2 links") @@ -224,6 +239,7 @@ class ShareLinksBiz(Crypter): self.fail("Unable to decrypt CNL2 links") return package_links + def _getCipherParams(self): # Request CNL2 code = re.search(r'ClicknLoad.swf\?code=(.*?)"', self.html).group(1) @@ -244,6 +260,7 @@ class ShareLinksBiz(Crypter): # Log and return return crypted, jk + def _getLinks(self, crypted, jk): # Get key jreturn = self.js.eval("%s f()" % jk) -- cgit v1.2.3 From 30655170bf21396b59d33a8cc443321b20569f95 Mon Sep 17 00:00:00 2001 From: zapp-brannigan <zapp-brannigan@users.noreply.github.com> Date: Sun, 19 Oct 2014 09:10:00 +0200 Subject: [ZippyshareCom.py] fixed FILE_NAME_PATTERN again Zippyshare sucks ;) --- module/plugins/hoster/ZippyshareCom.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'module') diff --git a/module/plugins/hoster/ZippyshareCom.py b/module/plugins/hoster/ZippyshareCom.py index 6144132f9..4ced2a035 100644 --- a/module/plugins/hoster/ZippyshareCom.py +++ b/module/plugins/hoster/ZippyshareCom.py @@ -11,7 +11,7 @@ from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo class ZippyshareCom(SimpleHoster): __name__ = "ZippyshareCom" __type__ = "hoster" - __version__ = "0.52" + __version__ = "0.53" __pattern__ = r'(?P<HOST>http://www\d{0,2}\.zippyshare\.com)/v(?:/|iew\.jsp.*key=)(?P<KEY>\d+)' @@ -20,7 +20,7 @@ class ZippyshareCom(SimpleHoster): __authors__ = [("Walter Purcaro", "vuolter@gmail.com")] - FILE_NAME_PATTERN = r'var exam1x = .+ \+ "/(?P<N>.+)";' + FILE_NAME_PATTERN = r'var \w+ = .+ \+ "/(?P<N>.+)";' FILE_SIZE_PATTERN = r'>Size:.+?">(?P<S>[\d.,]+) (?P<U>[\w^_]+)' OFFLINE_PATTERN = r'>File does not exist on this server<' -- cgit v1.2.3 From 6a1bbbecd27c6edaefe224aff0367ef90736f707 Mon Sep 17 00:00:00 2001 From: Walter Purcaro <vuolter@gmail.com> Date: Sun, 19 Oct 2014 13:55:47 +0200 Subject: [UptoboxCom] Fix multiDL --- module/plugins/hoster/UptoboxCom.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'module') diff --git a/module/plugins/hoster/UptoboxCom.py b/module/plugins/hoster/UptoboxCom.py index 90bae2c01..335b4a9d5 100644 --- a/module/plugins/hoster/UptoboxCom.py +++ b/module/plugins/hoster/UptoboxCom.py @@ -8,7 +8,7 @@ from module.plugins.internal.XFSPHoster import XFSPHoster, create_getInfo class UptoboxCom(XFSPHoster): __name__ = "UptoboxCom" __type__ = "hoster" - __version__ = "0.12" + __version__ = "0.13" __pattern__ = r'https?://(?:www\.)?uptobox\.com/\w{12}' @@ -27,7 +27,7 @@ class UptoboxCom(XFSPHoster): def setup(self): - self.multiDL = True + self.multiDL = self.premium #: multiDL doesn't work for free downloads due missing race condition control (ex.: when dl is waiting) self.chunkLimit = 1 self.resumeDownload = True -- cgit v1.2.3 From 33ebad3aa439475ac827a22148857486e934fd5a Mon Sep 17 00:00:00 2001 From: Walter Purcaro <vuolter@gmail.com> Date: Sun, 19 Oct 2014 14:29:13 +0200 Subject: Improve packagetools regex --- module/common/packagetools.py | 101 +++++++++++++++++++++--------------------- 1 file changed, 50 insertions(+), 51 deletions(-) (limited to 'module') diff --git a/module/common/packagetools.py b/module/common/packagetools.py index 5bfbcba95..578148b50 100644 --- a/module/common/packagetools.py +++ b/module/common/packagetools.py @@ -1,12 +1,51 @@ -#!/usr/bin/env python - -# JDownloader/src/jd/controlling/LinkGrabberPackager.java +# -*- coding: utf-8 -*- import re + from urlparse import urlparse + +endings = ("3gp", "7zip", "7z", "abr", "ac3", "aiff", "aifc", "aif", "ai", "au", + "avi", "bin", "bz2", "cbr", "cbz", "ccf", "cue", "cvd", "chm", "dta", + "deb", "divx", "djvu", "dlc", "dmg", "doc", "docx", "dot", "eps", "exe", + "ff", "flv", "f4v", "gsd", "gif", "gz", "iwd", "iso", "ipsw", "java", + "jar", "jpg", "jpeg", "jdeatme", "load", "mws", "mw", "m4v", "m4a", + "mkv", "mp2", "mp3", "mp4", "mov", "movie", "mpeg", "mpe", "mpg", "msi", + "msu", "msp", "nfo", "npk", "oga", "ogg", "ogv", "otrkey", "pkg", "png", + "pdf", "pptx", "ppt", "pps", "ppz", "pot", "psd", "qt", "rmvb", "rm", + "rar", "ram", "ra", "rev", "rnd", "r\d+", "rpm", "run", "rsdf", "rtf", + "sh(!?tml)", "srt", "snd", "sfv", "swf", "tar", "tif", "tiff", "ts", + "txt", "viv", "vivo", "vob", "wav", "wmv", "xla", "xls", "xpi", "zeno", + "zip", "z\d+", "_[_a-z]{2}", "\d+$") + +rarPats = [re.compile(r'(.*)(\.|_|-)pa?r?t?\.?\d+.(rar|exe)$', re.I), + re.compile(r'(.*)(\.|_|-)part\.?[0]*[1].(rar|exe)$', re.I), + re.compile(r'(.*)\.rar$', re.I), + re.compile(r'(.*)\.r\d+$', re.I), + re.compile(r'(.*)(\.|_|-)\d+$', re.I)] + +zipPats = [re.compile(r'(.*)\.zip$', re.I), + re.compile(r'(.*)\.z\d+$', re.I), + re.compile(r'(?is).*\.7z\.[\d]+$', re.I), + re.compile(r'(.*)\.a.$', re.I)] + +ffsjPats = [re.compile(r'(.*)\._((_[a-z])|([a-z]{2}))(\.|$)'), + re.compile(r'(.*)(\.|_|-)[\d]+(\.(' + '|'.join(endings) + ')$)', re.I)] + +iszPats = [re.compile(r'(.*)\.isz$', re.I), + re.compile(r'(.*)\.i\d{2}$', re.I)] + +pat0 = re.compile(r'www\d*\.', re.I) + +pat1 = re.compile(r'(\.?CD\d+)', re.I) +pat2 = re.compile(r'(\.?part\d+)', re.I) + +pat3 = re.compile(r'(.+)[\.\-_]+$') +pat4 = re.compile(r'(.+)\.\d+\.xtm$') + + def matchFirst(string, *args): - """ matches against list of regexp and returns first match""" + """ matches against list of regexp and returns first match """ for patternlist in args: for pattern in patternlist: r = pattern.search(string) @@ -21,35 +60,10 @@ def parseNames(files): """ Generates packages names from name, data lists :param files: list of (name, data) - :return: packagenames mapt to data lists (eg. urls) + :return: packagenames mapped to data lists (eg. urls) """ packs = {} - endings = "\\.(3gp|7zip|7z|abr|ac3|aiff|aifc|aif|ai|au|avi|bin|bz2|cbr|cbz|ccf|cue|cvd|chm|dta|deb|divx|djvu|dlc|dmg|doc|docx|dot|eps|exe|ff|flv|f4v|gsd|gif|gz|iwd|iso|ipsw|java|jar|jpg|jpeg|jdeatme|load|mws|mw|m4v|m4a|mkv|mp2|mp3|mp4|mov|movie|mpeg|mpe|mpg|msi|msu|msp|nfo|npk|oga|ogg|ogv|otrkey|pkg|png|pdf|pptx|ppt|pps|ppz|pot|psd|qt|rmvb|rm|rar|ram|ra|rev|rnd|r\\d+|rpm|run|rsdf|rtf|sh(!?tml)|srt|snd|sfv|swf|tar|tif|tiff|ts|txt|viv|vivo|vob|wav|wmv|xla|xls|xpi|zeno|zip|z\\d+|_[_a-z]{2}|\\d+$)" - - rarPats = [re.compile("(.*)(\\.|_|-)pa?r?t?\\.?[0-9]+.(rar|exe)$", re.I), - re.compile("(.*)(\\.|_|-)part\\.?[0]*[1].(rar|exe)$", re.I), - re.compile("(.*)\\.rar$", re.I), - re.compile("(.*)\\.r\\d+$", re.I), - re.compile("(.*)(\\.|_|-)\\d+$", re.I)] - - zipPats = [re.compile("(.*)\\.zip$", re.I), - re.compile("(.*)\\.z\\d+$", re.I), - re.compile("(?is).*\\.7z\\.[\\d]+$", re.I), - re.compile("(.*)\\.a.$", re.I)] - - ffsjPats = [re.compile("(.*)\\._((_[a-z])|([a-z]{2}))(\\.|$)"), - re.compile("(.*)(\\.|_|-)[\\d]+(" + endings + "$)", re.I)] - - iszPats = [re.compile("(.*)\\.isz$", re.I), - re.compile("(.*)\\.i\\d{2}$", re.I)] - - pat1 = re.compile("(\\.?CD\\d+)", re.I) - pat2 = re.compile("(\\.?part\\d+)", re.I) - - pat3 = re.compile("(.+)[\\.\\-_]+$") - pat4 = re.compile("(.+)\\.\\d+\\.xtm$") - for file, url in files: patternMatch = False @@ -64,7 +78,7 @@ def parseNames(files): if len(split) > 1: name = split.pop(1) - #check if a already existing package may be ok for this file + #check if an already existing package may be ok for this file # found = False # for pack in packs: # if pack in file: @@ -72,7 +86,8 @@ def parseNames(files): # found = True # break # - # if found: continue + # if found: + # continue # unrar pattern, 7zip/zip and hjmerge pattern, isz pattern, FFSJ pattern before = name @@ -123,11 +138,12 @@ def parseNames(files): # fallback: package by hoster if not name: name = urlparse(file).hostname - if name: name = name.replace("www.", "") + if name: + name = pat0.sub("", name) # fallback : default name if not name: - name = "unknown" + name = _("Unnamed package") # build mapping if name in packs: @@ -136,20 +152,3 @@ def parseNames(files): packs[name] = [url] return packs - - -if __name__ == "__main__": - from os.path import join - from pprint import pprint - - f = open(join("..", "..", "testlinks2.txt"), "rb") - urls = [(x.strip(), x.strip()) for x in f.readlines() if x.strip()] - f.close() - - print "Having %d urls." % len(urls) - - packs = parseNames(urls) - - pprint(packs) - - print "Got %d urls." % sum([len(x) for x in packs.itervalues()]) -- cgit v1.2.3 From d1342491fe8b1caea66f0a3fa255e57b3503f082 Mon Sep 17 00:00:00 2001 From: Walter Purcaro <vuolter@gmail.com> Date: Sun, 19 Oct 2014 14:30:21 +0200 Subject: Fix XDCCRequest _keepAlive --- module/network/XDCCRequest.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'module') diff --git a/module/network/XDCCRequest.py b/module/network/XDCCRequest.py index f03798c17..e395e01f0 100644 --- a/module/network/XDCCRequest.py +++ b/module/network/XDCCRequest.py @@ -127,7 +127,7 @@ class XDCCRequest(): return filename - def _keepAlive(self, sock, readbuffer): + def _keepAlive(self, sock, *readbuffer): fdset = select([sock], [], [], 0) if sock not in fdset[0]: return -- cgit v1.2.3 From bb1f6b3cbfc34914a1a336f8f5a2e15b57e2b5f5 Mon Sep 17 00:00:00 2001 From: Walter Purcaro <vuolter@gmail.com> Date: Sun, 19 Oct 2014 14:35:53 +0200 Subject: parseError -> error now calls Fail instead Exception --- module/plugins/internal/SimpleCrypter.py | 9 +++++---- module/plugins/internal/SimpleHoster.py | 29 ++++++++++------------------- module/plugins/internal/XFSPHoster.py | 17 +++++++++-------- 3 files changed, 24 insertions(+), 31 deletions(-) (limited to 'module') diff --git a/module/plugins/internal/SimpleCrypter.py b/module/plugins/internal/SimpleCrypter.py index 3c1dc3244..b45e503d5 100644 --- a/module/plugins/internal/SimpleCrypter.py +++ b/module/plugins/internal/SimpleCrypter.py @@ -3,14 +3,15 @@ import re from module.plugins.Crypter import Crypter -from module.plugins.internal.SimpleHoster import PluginParseError, replace_patterns, set_cookies +from module.plugins.Plugin import Fail +from module.plugins.internal.SimpleHoster import replace_patterns, set_cookies from module.utils import fixup, html_unescape class SimpleCrypter(Crypter): __name__ = "SimpleCrypter" __type__ = "crypter" - __version__ = "0.15" + __version__ = "0.16" __pattern__ = None @@ -156,5 +157,5 @@ class SimpleCrypter(Crypter): self.package_links += self.getLinks() - def parseError(self, msg): - raise PluginParseError(msg) + def error(self, reason): + raise Fail("Parse error (%s) - crypter plugin may be out of date" % reason) diff --git a/module/plugins/internal/SimpleHoster.py b/module/plugins/internal/SimpleHoster.py index c2bc4909e..bbd37e978 100644 --- a/module/plugins/internal/SimpleHoster.py +++ b/module/plugins/internal/SimpleHoster.py @@ -8,7 +8,8 @@ from urlparse import urlparse from module.network.CookieJar import CookieJar from module.network.RequestFactory import getURL from module.plugins.Hoster import Hoster -from module.utils import fixup, html_unescape, parseFileSize +from module.plugins.Plugin import Fail +reasonfrom module.utils import fixup, html_unescape, parseFileSize def replace_patterns(string, ruleslist): @@ -139,20 +140,10 @@ def timestamp(): return int(time() * 1000) -class PluginParseError(Exception): - - def __init__(self, msg): - Exception.__init__(self) - self.value = 'Parse error (%s) - plugin may be out of date' % msg - - def __str__(self): - return repr(self.value) - - class SimpleHoster(Hoster): __name__ = "SimpleHoster" __type__ = "hoster" - __version__ = "0.38" + __version__ = "0.39" __pattern__ = None @@ -249,7 +240,7 @@ class SimpleHoster(Hoster): self.tempOffline() elif status != 2: self.logDebug(self.file_info) - self.parseError('File info') + self.error('File info') if name: self.pyfile.name = name @@ -272,7 +263,7 @@ class SimpleHoster(Hoster): try: m = re.search(self.LINK_FREE_PATTERN, self.html) if m is None: - self.parseError("Free download link not found") + self.error("Free download link not found") link = m.group(1) except Exception, e: @@ -288,7 +279,7 @@ class SimpleHoster(Hoster): try: m = re.search(self.LINK_PREMIUM_PATTERN, self.html) if m is None: - self.parseError("Premium download link not found") + self.error("Premium download link not found") link = m.group(1) except Exception, e: @@ -297,10 +288,6 @@ class SimpleHoster(Hoster): self.download(link, ref=True, cookies=True, disposition=True) - def parseError(self, msg): - raise PluginParseError(msg) - - def longWait(self, wait_time=None, max_tries=3): if wait_time and isinstance(wait_time, (int, long, float)): time_str = "%dh %dm" % divmod(wait_time / 60, 60) @@ -334,3 +321,7 @@ class SimpleHoster(Hoster): if seconds: self.setWait(seconds, reconnect) super(SimpleHoster, self).wait() + + + def error(self, reason): + raise Fail("Parse error (%s) - hoster plugin may be out of date" % reason) diff --git a/module/plugins/internal/XFSPHoster.py b/module/plugins/internal/XFSPHoster.py index abf71b033..0b656c67c 100644 --- a/module/plugins/internal/XFSPHoster.py +++ b/module/plugins/internal/XFSPHoster.py @@ -9,14 +9,15 @@ from urlparse import urlparse from module.network.RequestFactory import getURL from module.plugins.internal.CaptchaService import ReCaptcha, SolveMedia -from module.plugins.internal.SimpleHoster import create_getInfo, PluginParseError, replace_patterns, set_cookies, SimpleHoster +from module.plugins.internal.SimpleHoster import create_getInfo, replace_patterns, set_cookies, SimpleHoster +from module.plugins.Plugin import Fail from module.utils import html_unescape class XFSPHoster(SimpleHoster): __name__ = "XFSPHoster" __type__ = "hoster" - __version__ = "0.03" + __version__ = "0.04" __pattern__ = None @@ -92,7 +93,7 @@ class XFSPHoster(SimpleHoster): # Can be reverted in 0.4.10 as the cookies bug has been fixed. self.html = getURL(pyfile.url, decode=not self.TEXT_ENCODING, cookies=self.COOKIES) self.file_info = self.getFileInfo() - except PluginParseError: + except Fail: self.file_info = None self.location = self.getDirectDownloadLink() @@ -163,7 +164,7 @@ class XFSPHoster(SimpleHoster): self.html = self.load(self.pyfile.url, post=self.getPostParameters()) m = re.search(self.LINK_PATTERN, self.html) if m is None: - self.parseError('LINK_PATTERN not found') + self.error('LINK_PATTERN not found') self.startDownload(m.group(1)) @@ -184,7 +185,7 @@ class XFSPHoster(SimpleHoster): action, inputs = self.parseHtmlForm('F1') if not inputs: - self.parseError('TEXTAREA not found') + self.error('TEXTAREA not found') self.logDebug(self.HOSTER_NAME, inputs) if inputs['st'] == 'OK': self.html = self.load(action, post=inputs) @@ -196,7 +197,7 @@ class XFSPHoster(SimpleHoster): #get easybytez.com link for uploaded file m = re.search(self.OVR_LINK_PATTERN, self.html) if m is None: - self.parseError('OVR_LINK_PATTERN not found') + self.error('OVR_LINK_PATTERN not found') self.pyfile.url = m.group(1) header = self.load(self.pyfile.url, just_header=True) if 'location' in header: # Direct link @@ -261,7 +262,7 @@ class XFSPHoster(SimpleHoster): if self.errmsg: self.retry() else: - self.parseError("Form not found") + self.error("Form not found") self.logDebug(self.HOSTER_NAME, inputs) @@ -304,7 +305,7 @@ class XFSPHoster(SimpleHoster): self.errmsg = None else: - self.parseError('FORM: %s' % (inputs['op'] if 'op' in inputs else 'UNKNOWN')) + self.error('FORM: %s' % (inputs['op'] if 'op' in inputs else 'UNKNOWN')) def handleCaptcha(self, inputs): -- cgit v1.2.3 From 2ae91b81a2f12a1c9b1f78524df78a2b3f1ef494 Mon Sep 17 00:00:00 2001 From: Walter Purcaro <vuolter@gmail.com> Date: Sun, 19 Oct 2014 14:52:42 +0200 Subject: Update hosters to self.error --- module/plugins/hoster/BayfilesCom.py | 8 ++++---- module/plugins/hoster/BezvadataCz.py | 10 +++++----- module/plugins/hoster/BitshareCom.py | 4 ++-- module/plugins/hoster/CatShareNet.py | 4 ++-- module/plugins/hoster/CrockoCom.py | 6 +++--- module/plugins/hoster/CzshareCom.py | 8 ++++---- module/plugins/hoster/DataHu.py | 4 ++-- module/plugins/hoster/DataportCz.py | 8 ++++---- module/plugins/hoster/DateiTo.py | 6 +++--- module/plugins/hoster/DepositfilesCom.py | 8 ++++---- module/plugins/hoster/DevhostSt.py | 6 +++--- module/plugins/hoster/DropboxCom.py | 4 ++-- module/plugins/hoster/EdiskCz.py | 4 ++-- module/plugins/hoster/EuroshareEu.py | 4 ++-- module/plugins/hoster/ExtabitCom.py | 8 ++++---- module/plugins/hoster/FastshareCz.py | 6 +++--- module/plugins/hoster/File4safeCom.py | 4 ++-- module/plugins/hoster/FilecloudIo.py | 8 ++++---- module/plugins/hoster/FilefactoryCom.py | 10 +++++----- module/plugins/hoster/FilepostCom.py | 10 +++++----- module/plugins/hoster/FilepupNet.py | 6 +++--- module/plugins/hoster/FilerNet.py | 8 ++++---- module/plugins/hoster/FourSharedCom.py | 4 ++-- module/plugins/hoster/FshareVn.py | 6 +++--- module/plugins/hoster/HellshareCz.py | 4 ++-- module/plugins/hoster/IfileIt.py | 4 ++-- module/plugins/hoster/Keep2shareCC.py | 6 +++--- module/plugins/hoster/KingfilesNet.py | 10 +++++----- module/plugins/hoster/LetitbitNet.py | 14 +++++++------- module/plugins/hoster/LoadTo.py | 4 ++-- module/plugins/hoster/LuckyShareNet.py | 8 ++++---- module/plugins/hoster/MediafireCom.py | 6 +++--- module/plugins/hoster/MegasharesCom.py | 4 ++-- module/plugins/hoster/NarodRu.py | 6 +++--- module/plugins/hoster/NowVideoAt.py | 4 ++-- module/plugins/hoster/OneFichierCom.py | 6 +++--- module/plugins/hoster/PromptfileCom.py | 6 +++--- module/plugins/hoster/RapidgatorNet.py | 6 +++--- module/plugins/hoster/RemixshareCom.py | 6 +++--- module/plugins/hoster/RgHostNet.py | 4 ++-- module/plugins/hoster/RyushareCom.py | 4 ++-- module/plugins/hoster/ShareonlineBiz.py | 4 ++-- module/plugins/hoster/SpeedyshareCom.py | 6 +++--- module/plugins/hoster/StreamcloudEu.py | 6 +++--- module/plugins/hoster/TurbobitNet.py | 10 +++++----- module/plugins/hoster/TwoSharedCom.py | 4 ++-- module/plugins/hoster/UlozTo.py | 10 +++++----- module/plugins/hoster/UloziskoSk.py | 8 ++++---- module/plugins/hoster/UploadheroCom.py | 4 ++-- module/plugins/hoster/UploadingCom.py | 8 ++++---- module/plugins/hoster/UpstoreNet.py | 10 +++++----- module/plugins/hoster/WebshareCz.py | 4 ++-- module/plugins/hoster/WrzucTo.py | 6 +++--- module/plugins/hoster/YibaishiwuCom.py | 4 ++-- module/plugins/hoster/ZippyshareCom.py | 4 ++-- 55 files changed, 172 insertions(+), 172 deletions(-) (limited to 'module') diff --git a/module/plugins/hoster/BayfilesCom.py b/module/plugins/hoster/BayfilesCom.py index d38987227..b78af6286 100644 --- a/module/plugins/hoster/BayfilesCom.py +++ b/module/plugins/hoster/BayfilesCom.py @@ -11,7 +11,7 @@ from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo class BayfilesCom(SimpleHoster): __name__ = "BayfilesCom" __type__ = "hoster" - __version__ = "0.07" + __version__ = "0.08" __pattern__ = r'https?://(?:www\.)?bayfiles\.(com|net)/file/(?P<ID>\w+/\w+/[^/]+)' @@ -39,7 +39,7 @@ class BayfilesCom(SimpleHoster): # Get download token m = re.search(self.VARS_PATTERN, self.html) if m is None: - self.parseError('VARS') + self.error('VARS') vfid, delay = m.groups() response = json_loads(self.load('http://bayfiles.com/ajax_download', get={ @@ -60,13 +60,13 @@ class BayfilesCom(SimpleHoster): # Get final link and download m = re.search(self.FREE_LINK_PATTERN, self.html) if m is None: - self.parseError("Free link") + self.error("Free link") self.startDownload(m.group(1)) def handlePremium(self): m = re.search(self.PREMIUM_LINK_PATTERN, self.html) if m is None: - self.parseError("Premium link") + self.error("Premium link") self.startDownload(m.group(1)) def startDownload(self, url): diff --git a/module/plugins/hoster/BezvadataCz.py b/module/plugins/hoster/BezvadataCz.py index 9c1ef3693..dcf9bf293 100644 --- a/module/plugins/hoster/BezvadataCz.py +++ b/module/plugins/hoster/BezvadataCz.py @@ -8,7 +8,7 @@ from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo class BezvadataCz(SimpleHoster): __name__ = "BezvadataCz" __type__ = "hoster" - __version__ = "0.24" + __version__ = "0.25" __pattern__ = r'http://(?:www\.)?bezvadata\.cz/stahnout/.*' @@ -29,7 +29,7 @@ class BezvadataCz(SimpleHoster): #download button m = re.search(r'<a class="stahnoutSoubor".*?href="(.*?)"', self.html) if m is None: - self.parseError("page1 URL") + self.error("page1 URL") url = "http://bezvadata.cz%s" % m.group(1) #captcha form @@ -38,11 +38,11 @@ class BezvadataCz(SimpleHoster): for _ in xrange(5): action, inputs = self.parseHtmlForm('frm-stahnoutFreeForm') if not inputs: - self.parseError("FreeForm") + self.error("FreeForm") m = re.search(r'<img src="data:image/png;base64,(.*?)"', self.html) if m is None: - self.parseError("captcha img") + self.error("captcha img") #captcha image is contained in html page as base64encoded data but decryptCaptcha() expects image url self.load, proper_load = self.loadcaptcha, self.load @@ -64,7 +64,7 @@ class BezvadataCz(SimpleHoster): self.checkErrors() m = re.search(r'<a class="stahnoutSoubor2" href="(.*?)">', self.html) if m is None: - self.parseError("page2 URL") + self.error("page2 URL") url = "http://bezvadata.cz%s" % m.group(1) self.logDebug("DL URL %s" % url) diff --git a/module/plugins/hoster/BitshareCom.py b/module/plugins/hoster/BitshareCom.py index 8fd8892be..9d2a23625 100644 --- a/module/plugins/hoster/BitshareCom.py +++ b/module/plugins/hoster/BitshareCom.py @@ -11,7 +11,7 @@ from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo class BitshareCom(SimpleHoster): __name__ = "BitshareCom" __type__ = "hoster" - __version__ = "0.50" + __version__ = "0.51" __pattern__ = r'http://(?:www\.)?bitshare\.com/(files/(?P<id1>\w+)(/(?P<name>.*?)\.html)?|\?f=(?P<id2>\w+))' @@ -115,7 +115,7 @@ class BitshareCom(SimpleHoster): recaptcha = ReCaptcha(self) captcha_key = recaptcha.detect_key() if captcha_key is None: - self.parseError("ReCaptcha captcha key not found") + self.error("ReCaptcha captcha key not found") # Try up to 3 times for i in xrange(3): diff --git a/module/plugins/hoster/CatShareNet.py b/module/plugins/hoster/CatShareNet.py index 592792952..9a7824659 100644 --- a/module/plugins/hoster/CatShareNet.py +++ b/module/plugins/hoster/CatShareNet.py @@ -9,7 +9,7 @@ from module.plugins.internal.CaptchaService import ReCaptcha class CatShareNet(SimpleHoster): __name__ = "CatShareNet" __type__ = "hoster" - __version__ = "0.07" + __version__ = "0.08" __pattern__ = r'http://(?:www\.)?catshare\.net/\w{16}' @@ -52,7 +52,7 @@ class CatShareNet(SimpleHoster): captcha_key = recaptcha.detect_key() if captcha_key is None: - self.parseError("ReCaptcha key not found") + self.error("ReCaptcha key not found") challenge, code = recaptcha.challenge(captcha_key) self.html = self.load(self.pyfile.url, diff --git a/module/plugins/hoster/CrockoCom.py b/module/plugins/hoster/CrockoCom.py index b62e88278..f685d7452 100644 --- a/module/plugins/hoster/CrockoCom.py +++ b/module/plugins/hoster/CrockoCom.py @@ -9,7 +9,7 @@ from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo class CrockoCom(SimpleHoster): __name__ = "CrockoCom" __type__ = "hoster" - __version__ = "0.16" + __version__ = "0.17" __pattern__ = r'http://(?:www\.)?(crocko|easy-share)\.com/\w+' @@ -46,11 +46,11 @@ class CrockoCom(SimpleHoster): recaptcha = ReCaptcha(self) captcha_key = recaptcha.detect_key() if captcha_key is None: - self.parseError("ReCaptcha captcha key not found") + self.error("ReCaptcha captcha key not found") m = re.search(self.FORM_PATTERN, self.html, re.DOTALL) if m is None: - self.parseError('ACTION') + self.error('ACTION') action, form = m.groups() inputs = dict(re.findall(self.FORM_INPUT_PATTERN, form)) diff --git a/module/plugins/hoster/CzshareCom.py b/module/plugins/hoster/CzshareCom.py index 0ddca1473..9f2f23d9e 100644 --- a/module/plugins/hoster/CzshareCom.py +++ b/module/plugins/hoster/CzshareCom.py @@ -12,7 +12,7 @@ from module.utils import parseFileSize class CzshareCom(SimpleHoster): __name__ = "CzshareCom" __type__ = "hoster" - __version__ = "0.94" + __version__ = "0.95" __pattern__ = r'http://(?:www\.)?(czshare|sdilej)\.(com|cz)/(\d+/|download\.php\?).*' @@ -79,7 +79,7 @@ class CzshareCom(SimpleHoster): # get free url m = re.search(self.FREE_URL_PATTERN, self.html) if m is None: - self.parseError('Free URL') + self.error('Free URL') parsed_url = "http://sdilej.cz" + m.group(1) self.logDebug("PARSED_URL:" + parsed_url) @@ -94,7 +94,7 @@ class CzshareCom(SimpleHoster): self.pyfile.size = int(inputs['size']) except Exception, e: self.logError(e) - self.parseError('Form') + self.error('Form') # get and decrypt captcha captcha_url = 'http://sdilej.cz/captcha.php' @@ -118,7 +118,7 @@ class CzshareCom(SimpleHoster): self.logDebug("WAIT URL", self.req.lastEffectiveURL) m = re.search("free_wait.php\?server=(.*?)&(.*)", self.req.lastEffectiveURL) if m is None: - self.parseError('Download URL') + self.error('Download URL') url = "http://%s/download.php?%s" % (m.group(1), m.group(2)) diff --git a/module/plugins/hoster/DataHu.py b/module/plugins/hoster/DataHu.py index 6d286d872..d3a13c54b 100644 --- a/module/plugins/hoster/DataHu.py +++ b/module/plugins/hoster/DataHu.py @@ -11,7 +11,7 @@ from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo class DataHu(SimpleHoster): __name__ = "DataHu" __type__ = "hoster" - __version__ = "0.01" + __version__ = "0.02" __pattern__ = r'http://(?:www\.)?data\.hu/get/\w+' @@ -35,7 +35,7 @@ class DataHu(SimpleHoster): url = m.group(1) self.logDebug("Direct link: " + url) else: - self.parseError('Unable to get direct link') + self.error('Unable to get direct link') self.download(url, disposition=True) diff --git a/module/plugins/hoster/DataportCz.py b/module/plugins/hoster/DataportCz.py index fe58d7fb7..c79a21b8e 100644 --- a/module/plugins/hoster/DataportCz.py +++ b/module/plugins/hoster/DataportCz.py @@ -6,7 +6,7 @@ from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo class DataportCz(SimpleHoster): __name__ = "DataportCz" __type__ = "hoster" - __version__ = "0.37" + __version__ = "0.38" __pattern__ = r'http://(?:www\.)?dataport\.cz/file/(.*)' @@ -32,19 +32,19 @@ class DataportCz(SimpleHoster): action, inputs = self.parseHtmlForm('free_download_form') self.logDebug(action, inputs) if not action or not inputs: - self.parseError('free_download_form') + self.error('free_download_form') if "captchaId" in inputs and inputs['captchaId'] in captchas: inputs['captchaCode'] = captchas[inputs['captchaId']] else: - self.parseError('captcha') + self.error('captcha') self.html = self.download("http://www.dataport.cz%s" % action, post=inputs) check = self.checkDownload({"captcha": 'alert("\u0160patn\u011b opsan\u00fd k\u00f3d z obr\u00e1zu");', "slot": 'alert("Je n\u00e1m l\u00edto, ale moment\u00e1ln\u011b nejsou'}) if check == "captcha": - self.parseError('invalid captcha') + self.error('invalid captcha') elif check == "slot": self.logDebug("No free slots - wait 60s and retry") self.wait(60, False) diff --git a/module/plugins/hoster/DateiTo.py b/module/plugins/hoster/DateiTo.py index 400fa416f..06a485eae 100644 --- a/module/plugins/hoster/DateiTo.py +++ b/module/plugins/hoster/DateiTo.py @@ -9,7 +9,7 @@ from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo class DateiTo(SimpleHoster): __name__ = "DateiTo" __type__ = "hoster" - __version__ = "0.02" + __version__ = "0.03" __pattern__ = r'http://(?:www\.)?datei\.to/datei/(?P<ID>\w+)\.html' @@ -47,14 +47,14 @@ class DateiTo(SimpleHoster): m = re.search(self.DATA_PATTERN, self.html) if m is None: - self.parseError('data') + self.error('data') url = 'http://datei.to/' + m.group(1) data = dict(x.split('=') for x in m.group(2).split('&')) if url.endswith('recaptcha.php'): captcha_key = recaptcha.detect_key() if captcha_key is None: - self.parseError("ReCaptcha key not found") + self.error("ReCaptcha key not found") data['recaptcha_challenge_field'], data['recaptcha_response_field'] = recaptcha.challenge(captcha_key) diff --git a/module/plugins/hoster/DepositfilesCom.py b/module/plugins/hoster/DepositfilesCom.py index 5ec690a97..d49b3fc94 100644 --- a/module/plugins/hoster/DepositfilesCom.py +++ b/module/plugins/hoster/DepositfilesCom.py @@ -11,7 +11,7 @@ from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo class DepositfilesCom(SimpleHoster): __name__ = "DepositfilesCom" __type__ = "hoster" - __version__ = "0.49" + __version__ = "0.50" __pattern__ = r'https?://(?:www\.)?(depositfiles\.com|dfiles\.(eu|ru))(/\w{1,3})?/files/(?P<ID>\w+)' @@ -72,7 +72,7 @@ class DepositfilesCom(SimpleHoster): recaptcha = ReCaptcha(self) captcha_key = recaptcha.detect_key() if captcha_key is None: - self.parseError("ReCaptcha key not found") + self.error("ReCaptcha key not found") for _ in xrange(5): self.html = self.load("https://dfiles.eu/get_file.php", get=params) @@ -92,7 +92,7 @@ class DepositfilesCom(SimpleHoster): self.logDebug("LINK: %s" % link) break else: - self.parseError('Download link') + self.error('Download link') else: self.fail('No valid captcha response received') @@ -118,7 +118,7 @@ class DepositfilesCom(SimpleHoster): elif mirror: dlink = mirror.group(1) else: - self.parseError("No direct download link or mirror found") + self.error("No direct download link or mirror found") self.download(dlink, disposition=True) diff --git a/module/plugins/hoster/DevhostSt.py b/module/plugins/hoster/DevhostSt.py index 5c9055ca0..6ad6a551f 100644 --- a/module/plugins/hoster/DevhostSt.py +++ b/module/plugins/hoster/DevhostSt.py @@ -11,7 +11,7 @@ from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo class DevhostSt(SimpleHoster): __name__ = "DevhostSt" __type__ = "hoster" - __version__ = "0.02" + __version__ = "0.03" __pattern__ = r'http://(?:www\.)?d-h\.st/(?!users/)\w{3}' @@ -35,7 +35,7 @@ class DevhostSt(SimpleHoster): def handleFree(self): m = re.search(self.LINK_PATTERN, self.html) if m is None: - self.parseError("Download link not found") + self.error("Download link not found") dl_url = m.group(1) self.logDebug("Download URL = " + dl_url) @@ -43,7 +43,7 @@ class DevhostSt(SimpleHoster): check = self.checkDownload({'html': re.compile("html")}) if check == "html": - self.parseError("Downloaded file is an html file") + self.error("Downloaded file is an html file") getInfo = create_getInfo(DevhostSt) diff --git a/module/plugins/hoster/DropboxCom.py b/module/plugins/hoster/DropboxCom.py index 01d06e842..c0f8e8306 100644 --- a/module/plugins/hoster/DropboxCom.py +++ b/module/plugins/hoster/DropboxCom.py @@ -8,7 +8,7 @@ from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo class DropboxCom(SimpleHoster): __name__ = "DropboxCom" __type__ = "hoster" - __version__ = "0.02" + __version__ = "0.03" __pattern__ = r'https?://(?:www\.)?dropbox\.com/.+' @@ -36,7 +36,7 @@ class DropboxCom(SimpleHoster): check = self.checkDownload({'html': re.compile("html")}) if check == "html": - self.parseError("Downloaded file is an html file") + self.error("Downloaded file is an html file") getInfo = create_getInfo(DropboxCom) diff --git a/module/plugins/hoster/EdiskCz.py b/module/plugins/hoster/EdiskCz.py index afcd18e56..5112c55ab 100644 --- a/module/plugins/hoster/EdiskCz.py +++ b/module/plugins/hoster/EdiskCz.py @@ -8,7 +8,7 @@ from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo class EdiskCz(SimpleHoster): __name__ = "EdiskCz" __type__ = "hoster" - __version__ = "0.21" + __version__ = "0.22" __pattern__ = r'http://(?:www\.)?edisk\.(cz|sk|eu)/(stahni|sk/stahni|en/download)/.*' @@ -34,7 +34,7 @@ class EdiskCz(SimpleHoster): m = re.search(self.ACTION_PATTERN, url) if m is None: - self.parseError("ACTION") + self.error("ACTION") action = m.group(1) self.html = self.load(url, decode=True) diff --git a/module/plugins/hoster/EuroshareEu.py b/module/plugins/hoster/EuroshareEu.py index b538a3ed9..a4a4e6881 100644 --- a/module/plugins/hoster/EuroshareEu.py +++ b/module/plugins/hoster/EuroshareEu.py @@ -8,7 +8,7 @@ from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo class EuroshareEu(SimpleHoster): __name__ = "EuroshareEu" __type__ = "hoster" - __version__ = "0.25" + __version__ = "0.26" __pattern__ = r'http://(?:www\.)?euroshare\.(eu|sk|cz|hu|pl)/file/.*' @@ -52,7 +52,7 @@ class EuroshareEu(SimpleHoster): m = re.search(self.FREE_URL_PATTERN, self.html) if m is None: - self.parseError("Parse error (URL)") + self.error("Parse error (URL)") parsed_url = "http://euroshare.eu%s" % m.group(1) self.logDebug("URL", parsed_url) self.download(parsed_url, disposition=True) diff --git a/module/plugins/hoster/ExtabitCom.py b/module/plugins/hoster/ExtabitCom.py index 4b0d3d95b..489b2453e 100644 --- a/module/plugins/hoster/ExtabitCom.py +++ b/module/plugins/hoster/ExtabitCom.py @@ -12,7 +12,7 @@ from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo class ExtabitCom(SimpleHoster): __name__ = "ExtabitCom" __type__ = "hoster" - __version__ = "0.6" + __version__ = "0.61" __pattern__ = r'http://(?:www\.)?extabit\.com/(file|go|fid)/(?P<ID>\w+)' @@ -61,15 +61,15 @@ class ExtabitCom(SimpleHoster): else: self.fail("Invalid captcha") else: - self.parseError('Captcha') + self.error('Captcha') if not "href" in response: - self.parseError('JSON') + self.error('JSON') self.html = self.load("http://extabit.com/file/%s%s" % (fileID, response['href'])) m = re.search(self.LINK_PATTERN, self.html) if m is None: - self.parseError('Download URL') + self.error('Download URL') url = m.group(1) self.logDebug("Download URL: " + url) self.download(url) diff --git a/module/plugins/hoster/FastshareCz.py b/module/plugins/hoster/FastshareCz.py index 8c00aeef4..337977095 100644 --- a/module/plugins/hoster/FastshareCz.py +++ b/module/plugins/hoster/FastshareCz.py @@ -13,7 +13,7 @@ from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo class FastshareCz(SimpleHoster): __name__ = "FastshareCz" __type__ = "hoster" - __version__ = "0.22" + __version__ = "0.23" __pattern__ = r'http://(?:www\.)?fastshare\.cz/\d+/.+' @@ -44,7 +44,7 @@ class FastshareCz(SimpleHoster): if m: action, captcha_src = m.groups() else: - self.parseError("Free URL") + self.error("Free URL") baseurl = "http://www.fastshare.cz" captcha = self.decryptCaptcha(urljoin(baseurl, captcha_src)) @@ -77,7 +77,7 @@ class FastshareCz(SimpleHoster): if m: url = m.group(1) else: - self.parseError("Premium URL") + self.error("Premium URL") self.logDebug("PREMIUM URL: " + url) self.download(url, disposition=True) diff --git a/module/plugins/hoster/File4safeCom.py b/module/plugins/hoster/File4safeCom.py index e5927dd69..211e668a1 100644 --- a/module/plugins/hoster/File4safeCom.py +++ b/module/plugins/hoster/File4safeCom.py @@ -10,7 +10,7 @@ from module.plugins.internal.XFSPHoster import XFSPHoster, create_getInfo class File4safeCom(XFSPHoster): __name__ = "File4safeCom" __type__ = "hoster" - __version__ = "0.04" + __version__ = "0.05" __pattern__ = r'https?://(?:www\.)?file4safe\.com/\w{12}' @@ -35,7 +35,7 @@ class File4safeCom(XFSPHoster): location = m.group(1).strip() self.startDownload(location) else: - self.parseError("Unable to detect premium download link") + self.error("Unable to detect premium download link") getInfo = create_getInfo(File4safeCom) diff --git a/module/plugins/hoster/FilecloudIo.py b/module/plugins/hoster/FilecloudIo.py index da7683160..5672e780d 100644 --- a/module/plugins/hoster/FilecloudIo.py +++ b/module/plugins/hoster/FilecloudIo.py @@ -10,7 +10,7 @@ from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo class FilecloudIo(SimpleHoster): __name__ = "FilecloudIo" __type__ = "hoster" - __version__ = "0.02" + __version__ = "0.03" __pattern__ = r'http://(?:www\.)?(?:filecloud\.io|ifile\.it|mihd\.net)/(?P<ID>\w+).*' @@ -42,7 +42,7 @@ class FilecloudIo(SimpleHoster): m = re.search(self.AB1_PATTERN, self.html) if m is None: - self.parseError("__AB1") + self.error("__AB1") data['__ab1'] = m.group(1) recaptcha = ReCaptcha(self) @@ -51,7 +51,7 @@ class FilecloudIo(SimpleHoster): captcha_key = m.group(1) if m else recaptcha.detect_key() if captcha_key is None: - self.parseError("ReCaptcha key not found") + self.error("ReCaptcha key not found") if not self.account: self.fail("User not logged in") @@ -94,7 +94,7 @@ class FilecloudIo(SimpleHoster): self.html = self.load('http://filecloud.io/download.html') m = re.search(self.LINK_PATTERN % self.file_info['ID'], self.html) if m is None: - self.parseError("Download URL") + self.error("Download URL") download_url = m.group(1) self.logDebug("Download URL: %s" % download_url) diff --git a/module/plugins/hoster/FilefactoryCom.py b/module/plugins/hoster/FilefactoryCom.py index 8d231e350..0e422f108 100644 --- a/module/plugins/hoster/FilefactoryCom.py +++ b/module/plugins/hoster/FilefactoryCom.py @@ -20,7 +20,7 @@ def getInfo(urls): class FilefactoryCom(SimpleHoster): __name__ = "FilefactoryCom" __type__ = "hoster" - __version__ = "0.50" + __version__ = "0.51" __pattern__ = r'https?://(?:www\.)?filefactory\.com/file/(?P<id>\w+)' @@ -58,20 +58,20 @@ class FilefactoryCom(SimpleHoster): # Load the page that contains the direct link url = re.search(r"document\.location\.host \+\s*'(.+)';", self.html) if url is None: - self.parseError('Unable to detect free link') + self.error('Unable to detect free link') url = 'http://www.filefactory.com' + url.group(1) self.html = self.load(url, decode=True) # Free downloads wait time waittime = re.search(r'id="startWait" value="(\d+)"', self.html) if not waittime: - self.parseError('Unable to detect wait time') + self.error('Unable to detect wait time') self.wait(int(waittime.group(1))) # Parse the direct link and download it direct = re.search(r'data-href(?:-direct)?="(.*)" class="button', self.html) if not direct: - self.parseError('Unable to detect free direct link') + self.error('Unable to detect free direct link') direct = direct.group(1) self.logDebug("DIRECT LINK: " + direct) @@ -101,7 +101,7 @@ class FilefactoryCom(SimpleHoster): if m: url = m.group(1) else: - self.parseError('Unable to detect premium direct link') + self.error('Unable to detect premium direct link') self.logDebug("DIRECT PREMIUM LINK: " + url) self.download(url, disposition=True) diff --git a/module/plugins/hoster/FilepostCom.py b/module/plugins/hoster/FilepostCom.py index f833ab737..0748b64f2 100644 --- a/module/plugins/hoster/FilepostCom.py +++ b/module/plugins/hoster/FilepostCom.py @@ -12,7 +12,7 @@ from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo class FilepostCom(SimpleHoster): __name__ = "FilepostCom" __type__ = "hoster" - __version__ = "0.28" + __version__ = "0.29" __pattern__ = r'https?://(?:www\.)?(?:filepost\.com/files|fp\.io)/([^/]+).*' @@ -35,12 +35,12 @@ class FilepostCom(SimpleHoster): m = re.search(self.FLP_TOKEN_PATTERN, self.html) if m is None: - self.parseError("Token") + self.error("Token") flp_token = m.group(1) m = re.search(self.RECAPTCHA_PATTERN, self.html) if m is None: - self.parseError("Captcha key") + self.error("Captcha key") captcha_key = m.group(1) # Get wait time @@ -98,7 +98,7 @@ class FilepostCom(SimpleHoster): self.logDebug(json_response) if not 'js' in json_response: - self.parseError('JSON %s 1' % field) + self.error('JSON %s 1' % field) # i changed js_answer to json_response['js'] since js_answer is nowhere set. # i don't know the JSON-HTTP specs in detail, but the previous author @@ -122,7 +122,7 @@ class FilepostCom(SimpleHoster): # ~? self.fail(js_answer['error']) if not 'answer' in json_response['js'] or not field in json_response['js']['answer']: - self.parseError('JSON %s 2' % field) + self.error('JSON %s 2' % field) return json_response['js']['answer'][field] diff --git a/module/plugins/hoster/FilepupNet.py b/module/plugins/hoster/FilepupNet.py index 39979b2a2..366cefc88 100644 --- a/module/plugins/hoster/FilepupNet.py +++ b/module/plugins/hoster/FilepupNet.py @@ -12,7 +12,7 @@ from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo class FilepupNet(SimpleHoster): __name__ = "FilepupNet" __type__ = "hoster" - __version__ = "0.01" + __version__ = "0.02" __pattern__ = r'http://(?:www\.)?filepup\.net/files/\w+' @@ -38,14 +38,14 @@ class FilepupNet(SimpleHoster): def handleFree(self): m = re.search(self.LINK_PATTERN, self.html) if m is None: - self.parseError("Download link not found") + self.error("Download link not found") dl_link = m.group(1) self.download(dl_link, post={'task': "download"}) check = self.checkDownload({'html': re.compile("html")}) if check == "html": - self.parseError("Downloaded file is an html file") + self.error("Downloaded file is an html file") getInfo = create_getInfo(FilepupNet) diff --git a/module/plugins/hoster/FilerNet.py b/module/plugins/hoster/FilerNet.py index 7534c669d..46c914e9b 100644 --- a/module/plugins/hoster/FilerNet.py +++ b/module/plugins/hoster/FilerNet.py @@ -16,7 +16,7 @@ from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo class FilerNet(SimpleHoster): __name__ = "FilerNet" __type__ = "hoster" - __version__ = "0.05" + __version__ = "0.06" __pattern__ = r'https?://(?:www\.)?filer\.net/get/(\w+)' @@ -56,7 +56,7 @@ class FilerNet(SimpleHoster): inputs = self.parseHtmlForm(input_names='token')[1] if 'token' not in inputs: - self.parseError('Unable to detect token') + self.error('Unable to detect token') token = inputs['token'] self.logDebug("Token: " + token) @@ -64,7 +64,7 @@ class FilerNet(SimpleHoster): inputs = self.parseHtmlForm(input_names='hash')[1] if 'hash' not in inputs: - self.parseError('Unable to detect hash') + self.error('Unable to detect hash') hash_data = inputs['hash'] self.logDebug("Hash: " + hash_data) @@ -106,7 +106,7 @@ class FilerNet(SimpleHoster): html = self.load(self.pyfile.url) m = re.search(self.LINK_PATTERN, html) if m is None: - self.parseError("Unable to detect direct link, try to enable 'Direct download' in your user settings") + self.error("Unable to detect direct link, try to enable 'Direct download' in your user settings") dl = 'http://filer.net' + m.group(1) self.logDebug("Direct link: " + dl) diff --git a/module/plugins/hoster/FourSharedCom.py b/module/plugins/hoster/FourSharedCom.py index 348a027fe..00dcf4973 100644 --- a/module/plugins/hoster/FourSharedCom.py +++ b/module/plugins/hoster/FourSharedCom.py @@ -8,7 +8,7 @@ from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo class FourSharedCom(SimpleHoster): __name__ = "FourSharedCom" __type__ = "hoster" - __version__ = "0.29" + __version__ = "0.30" __pattern__ = r'https?://(?:www\.)?4shared(\-china)?\.com/(account/)?(download|get|file|document|photo|video|audio|mp3|office|rar|zip|archive|music)/.+?/.*' @@ -44,7 +44,7 @@ class FourSharedCom(SimpleHoster): m = re.search(self.DOWNLOAD_URL_PATTERN, self.html) if m is None: - self.parseError('Download link') + self.error('Download link') link = m.group(1) try: diff --git a/module/plugins/hoster/FshareVn.py b/module/plugins/hoster/FshareVn.py index 2f95d49e6..1a995ce28 100644 --- a/module/plugins/hoster/FshareVn.py +++ b/module/plugins/hoster/FshareVn.py @@ -27,7 +27,7 @@ def doubleDecode(m): class FshareVn(SimpleHoster): __name__ = "FshareVn" __type__ = "hoster" - __version__ = "0.16" + __version__ = "0.17" __pattern__ = r'http://(?:www\.)?fshare\.vn/file/.*' @@ -67,7 +67,7 @@ class FshareVn(SimpleHoster): self.url = self.pyfile.url + action if not inputs: - self.parseError('FORM') + self.error('FORM') elif 'link_file_pwd_dl' in inputs: for password in self.getPassword().splitlines(): self.logInfo("Password protected link, trying", password) @@ -87,7 +87,7 @@ class FshareVn(SimpleHoster): m = re.search(self.LINK_PATTERN, self.html) if m is None: - self.parseError('FREE DL URL') + self.error('FREE DL URL') self.url = m.group(1) self.logDebug("FREE DL URL: %s" % self.url) diff --git a/module/plugins/hoster/HellshareCz.py b/module/plugins/hoster/HellshareCz.py index ddb7682b1..10975829c 100644 --- a/module/plugins/hoster/HellshareCz.py +++ b/module/plugins/hoster/HellshareCz.py @@ -8,7 +8,7 @@ from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo class HellshareCz(SimpleHoster): __name__ = "HellshareCz" __type__ = "hoster" - __version__ = "0.82" + __version__ = "0.83" __pattern__ = r'(http://(?:www\.)?hellshare\.(?:cz|com|sk|hu|pl)/[^?]*/\d+).*' @@ -38,7 +38,7 @@ class HellshareCz(SimpleHoster): m = re.search(self.SHOW_WINDOW_PATTERN, self.html) if m is None: - self.parseError('SHOW WINDOW') + self.error('SHOW WINDOW') self.url = "http://www.hellshare.com" + m.group(1) self.logDebug("DOWNLOAD URL: " + self.url) diff --git a/module/plugins/hoster/IfileIt.py b/module/plugins/hoster/IfileIt.py index e6bd4fd04..ca5896e2d 100644 --- a/module/plugins/hoster/IfileIt.py +++ b/module/plugins/hoster/IfileIt.py @@ -10,7 +10,7 @@ from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo class IfileIt(SimpleHoster): __name__ = "IfileIt" __type__ = "hoster" - __version__ = "0.27" + __version__ = "0.28" __pattern__ = r'^unmatchable$' @@ -56,7 +56,7 @@ class IfileIt(SimpleHoster): self.fail("Incorrect captcha") if not "ticket_url" in json_response: - self.parseError("Download URL") + self.error("Download URL") self.download(json_response['ticket_url']) diff --git a/module/plugins/hoster/Keep2shareCC.py b/module/plugins/hoster/Keep2shareCC.py index a9d4145d1..1da65f3c8 100644 --- a/module/plugins/hoster/Keep2shareCC.py +++ b/module/plugins/hoster/Keep2shareCC.py @@ -11,7 +11,7 @@ from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo class Keep2shareCC(SimpleHoster): __name__ = "Keep2shareCC" __type__ = "hoster" - __version__ = "0.10" + __version__ = "0.11" __pattern__ = r'https?://(?:www\.)?(keep2share|k2s|keep2s)\.cc/file/(?P<ID>\w+)' @@ -64,7 +64,7 @@ class Keep2shareCC(SimpleHoster): m = re.search(self.LINK_PATTERN, self.html) if m is None: - self.parseError("Unable to detect direct link") + self.error("Unable to detect direct link") self.startDownload(m.group(1)) @@ -73,7 +73,7 @@ class Keep2shareCC(SimpleHoster): captcha_key = recaptcha.detect_key() if captcha_key is None: - self.parseError("ReCaptcha key not found") + self.error("ReCaptcha key not found") for _ in xrange(5): challenge, response = recaptcha.challenge(captcha_key) diff --git a/module/plugins/hoster/KingfilesNet.py b/module/plugins/hoster/KingfilesNet.py index e4e664c14..c6dbd1e5c 100644 --- a/module/plugins/hoster/KingfilesNet.py +++ b/module/plugins/hoster/KingfilesNet.py @@ -9,7 +9,7 @@ from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo class KingfilesNet(SimpleHoster): __name__ = "KingfilesNet" __type__ = "hoster" - __version__ = "0.01" + __version__ = "0.02" __pattern__ = r'http://(?:www\.)?kingfiles\.net/(?P<ID>\w{12})' @@ -48,7 +48,7 @@ class KingfilesNet(SimpleHoster): captcha_key = solvemedia.detect_key() if captcha_key is None: - self.parseError("SolveMedia key not found") + self.error("SolveMedia key not found") self.logDebug("captcha_key", captcha_key) captcha_challenge, captcha_response = solvemedia.challenge(captcha_key) @@ -56,7 +56,7 @@ class KingfilesNet(SimpleHoster): # Make the downloadlink appear and load the file m = re.search(self.RAND_ID_PATTERN, b) if m is None: - self.parseError("Random key not found") + self.error("Random key not found") rand = m.group(1) self.logDebug("rand", rand) @@ -74,14 +74,14 @@ class KingfilesNet(SimpleHoster): m = re.search(self.LINK_PATTERN, c) if m is None: - self.parseError("Download url not found") + self.error("Download url not found") dl_url = m.group(1) self.download(dl_url, cookies=True, disposition=True) check = self.checkDownload({'html': re.compile("<html>")}) if check == "html": - self.parseError("Downloaded file is an html file") + self.error("Downloaded file is an html file") getInfo = create_getInfo(KingfilesNet) diff --git a/module/plugins/hoster/LetitbitNet.py b/module/plugins/hoster/LetitbitNet.py index 17e638a18..8443c2206 100644 --- a/module/plugins/hoster/LetitbitNet.py +++ b/module/plugins/hoster/LetitbitNet.py @@ -36,7 +36,7 @@ def getInfo(urls): class LetitbitNet(SimpleHoster): __name__ = "LetitbitNet" __type__ = "hoster" - __version__ = "0.24" + __version__ = "0.25" __pattern__ = r'http://(?:www\.)?(letitbit|shareflare)\.net/download/.*' @@ -70,7 +70,7 @@ class LetitbitNet(SimpleHoster): def handleFree(self): action, inputs = self.parseHtmlForm('id="ifree_form"') if not action: - self.parseError("page 1 / ifree_form") + self.error("page 1 / ifree_form") domain = "http://www." + self.HOSTER_NAME self.pyfile.size = float(inputs['sssize']) @@ -81,7 +81,7 @@ class LetitbitNet(SimpleHoster): # action, inputs = self.parseHtmlForm('id="d3_form"') # if not action: - # self.parseError("page 2 / d3_form") + # self.error("page 2 / d3_form") # self.logDebug(action, inputs) # # self.html = self.load(action, post = inputs, cookies = True) @@ -93,7 +93,7 @@ class LetitbitNet(SimpleHoster): # self.wait(seconds+1) # except Exception, e: # self.logError(e) - # self.parseError("page 3 / js") + # self.error("page 3 / js") m = re.search(self.SECONDS_PATTERN, self.html) seconds = int(m.group(1)) if m else 60 @@ -105,14 +105,14 @@ class LetitbitNet(SimpleHoster): response = self.load("%s/ajax/download3.php" % domain, post=" ", cookies=True) if response != '1': - self.parseError('Unknown response - ajax_check_url') + self.error('Unknown response - ajax_check_url') self.logDebug(response) recaptcha = ReCaptcha(self) captcha_key = recaptcha.detect_key() if captcha_key is None: - self.parseError("ReCaptcha key not found") + self.error("ReCaptcha key not found") challenge, response = recaptcha.challenge(captcha_key) @@ -135,7 +135,7 @@ class LetitbitNet(SimpleHoster): elif response.startswith('http://'): urls = [response] else: - self.parseError("Unknown response - captcha check") + self.error("Unknown response - captcha check") self.correctCaptcha() diff --git a/module/plugins/hoster/LoadTo.py b/module/plugins/hoster/LoadTo.py index b0f974133..6f1fdb575 100644 --- a/module/plugins/hoster/LoadTo.py +++ b/module/plugins/hoster/LoadTo.py @@ -13,7 +13,7 @@ from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo class LoadTo(SimpleHoster): __name__ = "LoadTo" __type__ = "hoster" - __version__ = "0.16" + __version__ = "0.17" __pattern__ = r'http://(?:www\.)?load\.to/\w+' @@ -42,7 +42,7 @@ class LoadTo(SimpleHoster): # Search for Download URL m = re.search(self.LINK_PATTERN, self.html) if m is None: - self.parseError("Unable to detect download URL") + self.error("Unable to detect download URL") download_url = m.group(1) diff --git a/module/plugins/hoster/LuckyShareNet.py b/module/plugins/hoster/LuckyShareNet.py index 82c615bbd..fe5a80679 100644 --- a/module/plugins/hoster/LuckyShareNet.py +++ b/module/plugins/hoster/LuckyShareNet.py @@ -11,7 +11,7 @@ from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo class LuckyShareNet(SimpleHoster): __name__ = "LuckyShareNet" __type__ = "hoster" - __version__ = "0.02" + __version__ = "0.03" __pattern__ = r'https?://(?:www\.)?luckyshare\.net/(?P<ID>\d{10,})' @@ -33,7 +33,7 @@ class LuckyShareNet(SimpleHoster): self.logDebug("You have to wait %d seconds between free downloads" % waittime) self.retry(wait_time=waittime) else: - self.parseError('Unable to detect wait time between free downloads') + self.error('Unable to detect wait time between free downloads') elif 'Hash expired' in rep: self.retry(reason="Hash expired") return json_loads(rep) @@ -53,7 +53,7 @@ class LuckyShareNet(SimpleHoster): captcha_key = recaptcha.detect_key() if captcha_key is None: - self.parseError("ReCaptcha key not found") + self.error("ReCaptcha key not found") for _ in xrange(5): challenge, response = recaptcha.challenge(captcha_key) @@ -68,7 +68,7 @@ class LuckyShareNet(SimpleHoster): self.logInfo("Wrong captcha") self.invalidCaptcha() else: - self.parseError('Unable to get downlaod link') + self.error('Unable to get downlaod link') if not json['link']: self.fail("No Download url retrieved/all captcha attempts failed") diff --git a/module/plugins/hoster/MediafireCom.py b/module/plugins/hoster/MediafireCom.py index 6d29d4db3..c2581aa9f 100644 --- a/module/plugins/hoster/MediafireCom.py +++ b/module/plugins/hoster/MediafireCom.py @@ -47,7 +47,7 @@ def getInfo(urls): class MediafireCom(SimpleHoster): __name__ = "MediafireCom" __type__ = "hoster" - __version__ = "0.79" + __version__ = "0.80" __pattern__ = r'http://(?:www\.)?mediafire\.com/(file/|(view/?|download\.php)?\?)(\w{11}|\w{15})($|/)' @@ -105,7 +105,7 @@ class MediafireCom(SimpleHoster): m = re.search(r'kNO = r"(http://.*?)";', self.html) if m is None: - self.parseError("Download URL") + self.error("Download URL") download_url = m.group(1) self.logDebug("DOWNLOAD LINK:", download_url) @@ -116,7 +116,7 @@ class MediafireCom(SimpleHoster): captcha_key = solvemedia.detect_key() if captcha_key is None: - self.parseError("SolveMedia key not found") + self.error("SolveMedia key not found") captcha_challenge, captcha_response = solvemedia.challenge(captcha_key) self.html = self.load(self.url, post={"adcopy_challenge": captcha_challenge, diff --git a/module/plugins/hoster/MegasharesCom.py b/module/plugins/hoster/MegasharesCom.py index 2a7d4659d..19942f136 100644 --- a/module/plugins/hoster/MegasharesCom.py +++ b/module/plugins/hoster/MegasharesCom.py @@ -10,7 +10,7 @@ from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo class MegasharesCom(SimpleHoster): __name__ = "MegasharesCom" __type__ = "hoster" - __version__ = "0.25" + __version__ = "0.26" __pattern__ = r'http://(?:www\.)?(d\d{2}\.)?megashares\.com/((index\.php)?\?d\d{2}=|dl/)\w+' @@ -98,7 +98,7 @@ class MegasharesCom(SimpleHoster): m = re.search(self.LINK_PATTERN % (1 if premium else 2), self.html) msg = '%s download URL' % ('Premium' if premium else 'Free') if m is None: - self.parseError(msg) + self.error(msg) download_url = m.group(1) self.logDebug("%s: %s" % (msg, download_url)) diff --git a/module/plugins/hoster/NarodRu.py b/module/plugins/hoster/NarodRu.py index c1e1e308a..f70ff9622 100644 --- a/module/plugins/hoster/NarodRu.py +++ b/module/plugins/hoster/NarodRu.py @@ -10,7 +10,7 @@ from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo class NarodRu(SimpleHoster): __name__ = "NarodRu" __type__ = "hoster" - __version__ = "0.1" + __version__ = "0.11" __pattern__ = r'http://(?:www\.)?narod(\.yandex)?\.ru/(disk|start/\d+\.\w+-narod\.yandex\.ru)/(?P<ID>\d+)/.+' @@ -36,7 +36,7 @@ class NarodRu(SimpleHoster): self.html = self.load('http://narod.ru/disk/getcapchaxml/?rnd=%d' % int(random() * 777)) m = re.search(self.CAPTCHA_PATTERN, self.html) if m is None: - self.parseError('Captcha') + self.error('Captcha') post_data = {"action": "sendcapcha"} captcha_url, post_data['key'] = m.groups() post_data['rep'] = self.decryptCaptcha(captcha_url) @@ -50,7 +50,7 @@ class NarodRu(SimpleHoster): elif u'<b class="error-msg"><strong>Ошиблись?</strong>' in self.html: self.invalidCaptcha() else: - self.parseError('Download link') + self.error('Download link') else: self.fail("No valid captcha code entered") diff --git a/module/plugins/hoster/NowVideoAt.py b/module/plugins/hoster/NowVideoAt.py index c224b6172..93ecec9cf 100644 --- a/module/plugins/hoster/NowVideoAt.py +++ b/module/plugins/hoster/NowVideoAt.py @@ -8,7 +8,7 @@ from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo class NowVideoAt(SimpleHoster): __name__ = "NowVideoAt" __type__ = "hoster" - __version__ = "0.01" + __version__ = "0.02" __pattern__ = r'http://(?:www\.)?nowvideo\.(at|ch|co|eu|sx)/(video|mobile/#/videos)/(?P<ID>\w+)' @@ -30,7 +30,7 @@ class NowVideoAt(SimpleHoster): m = re.search(self.LINK_PATTERN, self.html) if m is None: - self.parseError("Download link not found") + self.error("Download link not found") self.download(m.group(1), disposition=True) diff --git a/module/plugins/hoster/OneFichierCom.py b/module/plugins/hoster/OneFichierCom.py index 41a618d13..e6e193b89 100644 --- a/module/plugins/hoster/OneFichierCom.py +++ b/module/plugins/hoster/OneFichierCom.py @@ -8,7 +8,7 @@ from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo class OneFichierCom(SimpleHoster): __name__ = "OneFichierCom" __type__ = "hoster" - __version__ = "0.64" + __version__ = "0.65" __pattern__ = r'https?://(?P<ID>\w+)\.(?P<HOST>(1fichier|d(es)?fichiers|pjointe)\.(com|fr|net|org)|(cjoint|mesfichiers|piecejointe|oi)\.(org|net)|tenvoi\.(com|org|net)|dl4free\.com|alterupload\.com|megadl\.fr)' @@ -47,7 +47,7 @@ class OneFichierCom(SimpleHoster): url, inputs = self.parseHtmlForm('action="http://%s' % self.file_info['ID']) if not url: - self.parseError("Download link not found") + self.error("Download link not found") # Check for protection if "pass" in inputs: @@ -63,7 +63,7 @@ class OneFichierCom(SimpleHoster): def handlePremium(self): url, inputs = self.parseHtmlForm('action="http://%s' % self.file_info['ID']) if not url: - self.parseError("Download link not found") + self.error("Download link not found") # Check for protection if "pass" in inputs: diff --git a/module/plugins/hoster/PromptfileCom.py b/module/plugins/hoster/PromptfileCom.py index 4af762e29..641c1f642 100644 --- a/module/plugins/hoster/PromptfileCom.py +++ b/module/plugins/hoster/PromptfileCom.py @@ -8,7 +8,7 @@ from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo class PromptfileCom(SimpleHoster): __name__ = "PromptfileCom" __type__ = "hoster" - __version__ = "0.11" + __version__ = "0.12" __pattern__ = r'https?://(?:www\.)?promptfile\.com/' @@ -28,7 +28,7 @@ class PromptfileCom(SimpleHoster): # STAGE 1: get link to continue m = re.search(self.CHASH_PATTERN, self.html) if m is None: - self.parseError("Unable to detect chash") + self.error("Unable to detect chash") chash = m.group(1) self.logDebug("Read chash %s" % chash) # continue to stage2 @@ -37,7 +37,7 @@ class PromptfileCom(SimpleHoster): # STAGE 2: get the direct link m = re.search(self.LINK_PATTERN, self.html) if m is None: - self.parseError("Unable to detect direct link") + self.error("Unable to detect direct link") direct = m.group(1) self.logDebug("Found direct link: " + direct) self.download(direct, disposition=True) diff --git a/module/plugins/hoster/RapidgatorNet.py b/module/plugins/hoster/RapidgatorNet.py index 4840701e6..390d25f74 100644 --- a/module/plugins/hoster/RapidgatorNet.py +++ b/module/plugins/hoster/RapidgatorNet.py @@ -14,7 +14,7 @@ from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo class RapidgatorNet(SimpleHoster): __name__ = "RapidgatorNet" __type__ = "hoster" - __version__ = "0.23" + __version__ = "0.24" __pattern__ = r'http://(?:www\.)?(rapidgator\.net|rg\.to)/file/\w+' @@ -138,7 +138,7 @@ class RapidgatorNet(SimpleHoster): else: self.correctCaptcha() else: - self.parseError("Download link") + self.error("Download link") def getCaptcha(self): @@ -157,7 +157,7 @@ class RapidgatorNet(SimpleHoster): captcha_key = m.group(1) captcha = SolveMedia(self) else: - self.parseError("Captcha") + self.error("Captcha") return captcha, captcha_key diff --git a/module/plugins/hoster/RemixshareCom.py b/module/plugins/hoster/RemixshareCom.py index 5e691c2bc..4e812b20d 100644 --- a/module/plugins/hoster/RemixshareCom.py +++ b/module/plugins/hoster/RemixshareCom.py @@ -16,7 +16,7 @@ from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo class RemixshareCom(SimpleHoster): __name__ = "RemixshareCom" __type__ = "hoster" - __version__ = "0.01" + __version__ = "0.02" __pattern__ = r'https?://remixshare\.com/(download|dl)/\w+' @@ -41,10 +41,10 @@ class RemixshareCom(SimpleHoster): def handleFree(self): b = re.search(self.LINK_PATTERN, self.html) if not b: - self.parseError("Cannot parse download url") + self.error("Cannot parse download url") c = re.search(self.TOKEN_PATTERN, self.html) if not c: - self.parseError("Cannot parse file token") + self.error("Cannot parse file token") dl_url = b.group(1) + c.group(1) #Check if we have to wait diff --git a/module/plugins/hoster/RgHostNet.py b/module/plugins/hoster/RgHostNet.py index 2018106cb..48ea8ff8c 100644 --- a/module/plugins/hoster/RgHostNet.py +++ b/module/plugins/hoster/RgHostNet.py @@ -8,7 +8,7 @@ from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo class RgHostNet(SimpleHoster): __name__ = "RgHostNet" __type__ = "hoster" - __version__ = "0.01" + __version__ = "0.02" __pattern__ = r'http://(?:www\.)?rghost\.net/\d+(?:r=\d+)?' @@ -25,7 +25,7 @@ class RgHostNet(SimpleHoster): def handleFree(self): m = re.search(self.LINK_PATTERN, self.html) if m is None: - self.parseError("Unable to detect the direct link") + self.error("Unable to detect the direct link") download_link = m.group(1) self.download(download_link, disposition=True) diff --git a/module/plugins/hoster/RyushareCom.py b/module/plugins/hoster/RyushareCom.py index 841af351c..cd77ac4a6 100644 --- a/module/plugins/hoster/RyushareCom.py +++ b/module/plugins/hoster/RyushareCom.py @@ -12,7 +12,7 @@ from module.plugins.internal.CaptchaService import SolveMedia class RyushareCom(XFSPHoster): __name__ = "RyushareCom" __type__ = "hoster" - __version__ = "0.18" + __version__ = "0.19" __pattern__ = r'http://(?:www\.)?ryushare\.com/\w+' @@ -63,7 +63,7 @@ class RyushareCom(XFSPHoster): captcha_key = captcha.detect_key() if captcha_key is None: - self.parseError("SolveMedia key not found") + self.error("SolveMedia key not found") challenge, response = captcha.challenge(captcha_key) diff --git a/module/plugins/hoster/ShareonlineBiz.py b/module/plugins/hoster/ShareonlineBiz.py index cfb1d6325..7a73ab316 100644 --- a/module/plugins/hoster/ShareonlineBiz.py +++ b/module/plugins/hoster/ShareonlineBiz.py @@ -39,7 +39,7 @@ def getInfo(urls): class ShareonlineBiz(Hoster): __name__ = "ShareonlineBiz" __type__ = "hoster" - __version__ = "0.40" + __version__ = "0.41" __pattern__ = r'https?://(?:www\.)?(share-online\.biz|egoshare\.com)/(download\.php\?id=|dl/)(?P<ID>\w+)' @@ -134,7 +134,7 @@ class ShareonlineBiz(Hoster): download_url = response.decode("base64") self.logDebug(download_url) if not download_url.startswith("http://"): - self.parseError("download url") + self.error("download url") self.wait() self.download(download_url) diff --git a/module/plugins/hoster/SpeedyshareCom.py b/module/plugins/hoster/SpeedyshareCom.py index c3acfc1e8..0696ae810 100644 --- a/module/plugins/hoster/SpeedyshareCom.py +++ b/module/plugins/hoster/SpeedyshareCom.py @@ -13,7 +13,7 @@ from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo class SpeedyshareCom(SimpleHoster): __name__ = "SpeedyshareCom" __type__ = "hoster" - __version__ = "0.02" + __version__ = "0.03" __pattern__ = r'https?://(?:www\.)?(speedyshare\.com|speedy\.sh)/\w+' @@ -38,14 +38,14 @@ class SpeedyshareCom(SimpleHoster): def handleFree(self): m = re.search(self.LINK_PATTERN, self.html) if m is None: - self.parseError("Download link not found") + self.error("Download link not found") dl_link = urljoin("http://www.speedyshare.com", m.group(1)) self.download(dl_link, disposition=True) check = self.checkDownload({'html': re.compile("html")}) if check == "html": - self.parseError("Downloaded file is an html file") + self.error("Downloaded file is an html file") getInfo = create_getInfo(SpeedyshareCom) diff --git a/module/plugins/hoster/StreamcloudEu.py b/module/plugins/hoster/StreamcloudEu.py index e6a2b0226..49820bae6 100644 --- a/module/plugins/hoster/StreamcloudEu.py +++ b/module/plugins/hoster/StreamcloudEu.py @@ -11,7 +11,7 @@ from module.plugins.internal.XFSPHoster import XFSPHoster, create_getInfo class StreamcloudEu(XFSPHoster): __name__ = "StreamcloudEu" __type__ = "hoster" - __version__ = "0.06" + __version__ = "0.07" __pattern__ = r'http://(?:www\.)?streamcloud\.eu/\w{12}' @@ -78,7 +78,7 @@ class StreamcloudEu(XFSPHoster): if self.errmsg: self.retry() else: - self.parseError("Form not found") + self.error("Form not found") self.logDebug(self.HOSTER_NAME, inputs) @@ -122,7 +122,7 @@ class StreamcloudEu(XFSPHoster): self.errmsg = None else: - self.parseError('FORM: %s' % (inputs['op'] if 'op' in inputs else 'UNKNOWN')) + self.error('FORM: %s' % (inputs['op'] if 'op' in inputs else 'UNKNOWN')) getInfo = create_getInfo(StreamcloudEu) diff --git a/module/plugins/hoster/TurbobitNet.py b/module/plugins/hoster/TurbobitNet.py index 2d3c4e14a..8557e0ce7 100644 --- a/module/plugins/hoster/TurbobitNet.py +++ b/module/plugins/hoster/TurbobitNet.py @@ -17,7 +17,7 @@ from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo, t class TurbobitNet(SimpleHoster): __name__ = "TurbobitNet" __type__ = "hoster" - __version__ = "0.12" + __version__ = "0.13" __pattern__ = r'http://(?:www\.)?turbobit\.net/(?:download/free/)?(?P<ID>\w+)' @@ -67,20 +67,20 @@ class TurbobitNet(SimpleHoster): action, inputs = self.parseHtmlForm("action='#'") if not inputs: - self.parseError("captcha form") + self.error("captcha form") self.logDebug(inputs) if inputs['captcha_type'] == 'recaptcha': recaptcha = ReCaptcha(self) captcha_key = recaptcha.detect_key() if captcha_key is None: - self.parseError("ReCaptcha captcha key not found") + self.error("ReCaptcha captcha key not found") inputs['recaptcha_challenge_field'], inputs['recaptcha_response_field'] = recaptcha.challenge(captcha_key) else: m = re.search(self.CAPTCHA_URL_PATTERN, self.html) if m is None: - self.parseError('captcha') + self.error('captcha') captcha_url = m.group(1) inputs['captcha_response'] = self.decryptCaptcha(captcha_url) @@ -172,7 +172,7 @@ class TurbobitNet(SimpleHoster): def downloadFile(self): m = re.search(self.LINK_PATTERN, self.html) if m is None: - self.parseError("Download link not found") + self.error("Download link not found") self.url = "http://turbobit.net" + m.group('url') self.download(self.url) diff --git a/module/plugins/hoster/TwoSharedCom.py b/module/plugins/hoster/TwoSharedCom.py index adfd44d6f..6b755219a 100644 --- a/module/plugins/hoster/TwoSharedCom.py +++ b/module/plugins/hoster/TwoSharedCom.py @@ -8,7 +8,7 @@ from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo class TwoSharedCom(SimpleHoster): __name__ = "TwoSharedCom" __type__ = "hoster" - __version__ = "0.11" + __version__ = "0.12" __pattern__ = r'http://(?:www\.)?2shared\.com/(account/)?(download|get|file|document|photo|video|audio)/.*' @@ -30,7 +30,7 @@ class TwoSharedCom(SimpleHoster): def handleFree(self): m = re.search(self.LINK_PATTERN, self.html) if m is None: - self.parseError('Download link') + self.error('Download link') link = m.group(1) self.logDebug("Download URL %s" % link) diff --git a/module/plugins/hoster/UlozTo.py b/module/plugins/hoster/UlozTo.py index 3759c0c7b..2d4762ba6 100644 --- a/module/plugins/hoster/UlozTo.py +++ b/module/plugins/hoster/UlozTo.py @@ -15,7 +15,7 @@ def convertDecimalPrefix(m): class UlozTo(SimpleHoster): __name__ = "UlozTo" __type__ = "hoster" - __version__ = "0.98" + __version__ = "0.99" __pattern__ = r'http://(?:www\.)?(uloz\.to|ulozto\.(cz|sk|net)|bagruj\.cz|zachowajto\.pl)/(?:live/)?(?P<id>\w+/[^/?]*)' @@ -53,7 +53,7 @@ class UlozTo(SimpleHoster): m = re.search(self.TOKEN_PATTERN, self.html) if m is None: - self.parseError('TOKEN') + self.error('TOKEN') token = m.group(1) self.html = self.load(pyfile.url, get={"do": "askAgeForm-submit"}, @@ -84,7 +84,7 @@ class UlozTo(SimpleHoster): def handleFree(self): action, inputs = self.parseHtmlForm('id="frm-downloadDialog-freeDownloadForm"') if not action or not inputs: - self.parseError("free download form") + self.error("free download form") self.logDebug("inputs.keys = " + str(inputs.keys())) # get and decrypt captcha @@ -110,7 +110,7 @@ class UlozTo(SimpleHoster): inputs.update({'timestamp': data['timestamp'], 'salt': data['salt'], 'hash': data['hash'], 'captcha_value': captcha_value}) else: - self.parseError("CAPTCHA form changed") + self.error("CAPTCHA form changed") self.multiDL = True self.download("http://www.ulozto.net" + action, post=inputs, cookies=True, disposition=True) @@ -124,7 +124,7 @@ class UlozTo(SimpleHoster): msg = "%s link" % ("Premium" if premium else "Free") m = re.search(self.PREMIUM_URL_PATTERN if premium else self.FREE_URL_PATTERN, self.html) if m is None: - self.parseError(msg) + self.error(msg) parsed_url = "http://www.ulozto.net" + m.group(1) self.logDebug("%s: %s" % (msg, parsed_url)) return parsed_url diff --git a/module/plugins/hoster/UloziskoSk.py b/module/plugins/hoster/UloziskoSk.py index bd4bedf92..4323a71e5 100644 --- a/module/plugins/hoster/UloziskoSk.py +++ b/module/plugins/hoster/UloziskoSk.py @@ -8,7 +8,7 @@ from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo class UloziskoSk(SimpleHoster): __name__ = "UloziskoSk" __type__ = "hoster" - __version__ = "0.23" + __version__ = "0.24" __pattern__ = r'http://(?:www\.)?ulozisko\.sk/.*' @@ -41,19 +41,19 @@ class UloziskoSk(SimpleHoster): def handleFree(self): m = re.search(self.LINK_PATTERN, self.html) if m is None: - self.parseError('URL') + self.error('URL') parsed_url = 'http://www.ulozisko.sk' + m.group(1) m = re.search(self.ID_PATTERN, self.html) if m is None: - self.parseError('ID') + self.error('ID') id = m.group(1) self.logDebug("URL:" + parsed_url + ' ID:' + id) m = re.search(self.CAPTCHA_PATTERN, self.html) if m is None: - self.parseError('CAPTCHA') + self.error('CAPTCHA') captcha_url = 'http://www.ulozisko.sk' + m.group(1) captcha = self.decryptCaptcha(captcha_url, cookies=True) diff --git a/module/plugins/hoster/UploadheroCom.py b/module/plugins/hoster/UploadheroCom.py index 914886fca..3c26a0b8b 100644 --- a/module/plugins/hoster/UploadheroCom.py +++ b/module/plugins/hoster/UploadheroCom.py @@ -11,7 +11,7 @@ from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo class UploadheroCom(SimpleHoster): __name__ = "UploadheroCom" __type__ = "hoster" - __version__ = "0.15" + __version__ = "0.16" __pattern__ = r'http://(?:www\.)?uploadhero\.com?/dl/\w+' @@ -40,7 +40,7 @@ class UploadheroCom(SimpleHoster): m = re.search(self.CAPTCHA_PATTERN, self.html) if m is None: - self.parseError("Captcha URL") + self.error("Captcha URL") captcha_url = "http://uploadhero.co" + m.group(1) for _ in xrange(5): diff --git a/module/plugins/hoster/UploadingCom.py b/module/plugins/hoster/UploadingCom.py index e3f75a3f9..71a1eb4a0 100644 --- a/module/plugins/hoster/UploadingCom.py +++ b/module/plugins/hoster/UploadingCom.py @@ -11,7 +11,7 @@ from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo, t class UploadingCom(SimpleHoster): __name__ = "UploadingCom" __type__ = "hoster" - __version__ = "0.36" + __version__ = "0.37" __pattern__ = r'http://(?:www\.)?uploading\.com/files/(?:get/)?(?P<ID>\w+)' @@ -76,21 +76,21 @@ class UploadingCom(SimpleHoster): self.logInfo("%s: Waiting %d seconds." % (self.__name__, wait_time)) self.wait(wait_time) else: - self.parseError("AJAX/WAIT") + self.error("AJAX/WAIT") response = json_loads( self.load(ajax_url, post={'action': 'get_link', 'code': self.file_info['ID'], 'pass': 'false'})) if 'answer' in response and 'link' in response['answer']: url = response['answer']['link'] else: - self.parseError("AJAX/URL") + self.error("AJAX/URL") self.html = self.load(url) m = re.search(r'<form id="file_form" action="(.*?)"', self.html) if m: url = m.group(1) else: - self.parseError("URL") + self.error("URL") self.download(url) diff --git a/module/plugins/hoster/UpstoreNet.py b/module/plugins/hoster/UpstoreNet.py index fd13f6d41..257a186eb 100644 --- a/module/plugins/hoster/UpstoreNet.py +++ b/module/plugins/hoster/UpstoreNet.py @@ -9,7 +9,7 @@ from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo class UpstoreNet(SimpleHoster): __name__ = "UpstoreNet" __type__ = "hoster" - __version__ = "0.02" + __version__ = "0.03" __pattern__ = r'https?://(?:www\.)?upstore\.net/' @@ -30,7 +30,7 @@ class UpstoreNet(SimpleHoster): # STAGE 1: get link to continue m = re.search(self.CHASH_PATTERN, self.html) if m is None: - self.parseError("could not detect hash") + self.error("could not detect hash") chash = m.group(1) self.logDebug("Read hash " + chash) # continue to stage2 @@ -41,13 +41,13 @@ class UpstoreNet(SimpleHoster): # first get the infos we need: recaptcha key and wait time recaptcha = ReCaptcha(self) if recaptcha.detect_key() is None: - self.parseError("ReCaptcha key not found") + self.error("ReCaptcha key not found") self.logDebug("Using captcha key " + recaptcha.key) # try the captcha 5 times for i in xrange(5): m = re.search(self.WAIT_PATTERN, self.html) if m is None: - self.parseError("could not find wait pattern") + self.error("could not find wait pattern") wait_time = m.group(1) # then, do the waiting @@ -66,7 +66,7 @@ class UpstoreNet(SimpleHoster): break if m is None: - self.parseError("could not detect direct link") + self.error("could not detect direct link") direct = m.group(1) self.logDebug("Found direct link: " + direct) diff --git a/module/plugins/hoster/WebshareCz.py b/module/plugins/hoster/WebshareCz.py index 8412de7b8..6e0354d12 100644 --- a/module/plugins/hoster/WebshareCz.py +++ b/module/plugins/hoster/WebshareCz.py @@ -24,7 +24,7 @@ def getInfo(urls): class WebshareCz(SimpleHoster): __name__ = "WebshareCz" __type__ = "hoster" - __version__ = "0.13" + __version__ = "0.14" __pattern__ = r'https?://(?:www\.)?webshare\.cz/(?:#/)?file/(?P<ID>\w+)' @@ -38,7 +38,7 @@ class WebshareCz(SimpleHoster): self.logDebug("API data: " + api_data) m = re.search('<link>(.+)</link>', api_data) if m is None: - self.parseError('Unable to detect direct link') + self.error('Unable to detect direct link') direct = m.group(1) self.logDebug("Direct link: " + direct) self.download(direct, disposition=True) diff --git a/module/plugins/hoster/WrzucTo.py b/module/plugins/hoster/WrzucTo.py index 0076635e2..47731642d 100644 --- a/module/plugins/hoster/WrzucTo.py +++ b/module/plugins/hoster/WrzucTo.py @@ -10,7 +10,7 @@ from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo class WrzucTo(SimpleHoster): __name__ = "WrzucTo" __type__ = "hoster" - __version__ = "0.01" + __version__ = "0.02" __pattern__ = r'http://(?:www\.)?wrzuc\.to/(\w+(\.wt|\.html)|(\w+/?linki/\w+))' @@ -31,7 +31,7 @@ class WrzucTo(SimpleHoster): def handleFree(self): data = dict(re.findall(r'(md5|file): "(.*?)"', self.html)) if len(data) != 2: - self.parseError('File ID') + self.error('File ID') self.req.http.c.setopt(HTTPHEADER, ["X-Requested-With: XMLHttpRequest"]) self.req.http.lastURL = self.pyfile.url @@ -42,7 +42,7 @@ class WrzucTo(SimpleHoster): data.update(re.findall(r'"(download_link|server_id)":"(.*?)"', self.html)) if len(data) != 4: - self.parseError('Download URL') + self.error('Download URL') download_url = "http://%s.wrzuc.to/pobierz/%s" % (data['server_id'], data['download_link']) self.logDebug("Download URL: %s" % download_url) diff --git a/module/plugins/hoster/YibaishiwuCom.py b/module/plugins/hoster/YibaishiwuCom.py index 803c7d1c3..1ea44ddb4 100644 --- a/module/plugins/hoster/YibaishiwuCom.py +++ b/module/plugins/hoster/YibaishiwuCom.py @@ -9,7 +9,7 @@ from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo class YibaishiwuCom(SimpleHoster): __name__ = "YibaishiwuCom" __type__ = "hoster" - __version__ = "0.12" + __version__ = "0.13" __pattern__ = r'http://(?:www\.)?(?:u\.)?115\.com/file/(?P<ID>\w+)' @@ -28,7 +28,7 @@ class YibaishiwuCom(SimpleHoster): def handleFree(self): m = re.search(self.LINK_PATTERN, self.html) if m is None: - self.parseError("AJAX URL") + self.error("AJAX URL") url = m.group(1) self.logDebug(('FREEUSER' if m.group(2) == 'download' else 'GUEST') + ' URL', url) diff --git a/module/plugins/hoster/ZippyshareCom.py b/module/plugins/hoster/ZippyshareCom.py index 6144132f9..9c1c3fa9b 100644 --- a/module/plugins/hoster/ZippyshareCom.py +++ b/module/plugins/hoster/ZippyshareCom.py @@ -11,7 +11,7 @@ from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo class ZippyshareCom(SimpleHoster): __name__ = "ZippyshareCom" __type__ = "hoster" - __version__ = "0.52" + __version__ = "0.53" __pattern__ = r'(?P<HOST>http://www\d{0,2}\.zippyshare\.com)/v(?:/|iew\.jsp.*key=)(?P<KEY>\d+)' @@ -50,7 +50,7 @@ class ZippyshareCom(SimpleHoster): c = lambda a,b: a + b if not m: - self.parseError("Unable to calculate checksum") + self.error("Unable to calculate checksum") a = map(lambda x: int(x), m[0]) b = map(lambda x: int(x), m[1]) -- cgit v1.2.3 From 4bfdf03e804fcafabab0ff08b2b6ef1daec2cf91 Mon Sep 17 00:00:00 2001 From: Walter Purcaro <vuolter@gmail.com> Date: Sun, 19 Oct 2014 15:11:18 +0200 Subject: Improve error method --- module/plugins/internal/SimpleCrypter.py | 7 +++++-- module/plugins/internal/SimpleHoster.py | 7 +++++-- 2 files changed, 10 insertions(+), 4 deletions(-) (limited to 'module') diff --git a/module/plugins/internal/SimpleCrypter.py b/module/plugins/internal/SimpleCrypter.py index b45e503d5..f1def8118 100644 --- a/module/plugins/internal/SimpleCrypter.py +++ b/module/plugins/internal/SimpleCrypter.py @@ -157,5 +157,8 @@ class SimpleCrypter(Crypter): self.package_links += self.getLinks() - def error(self, reason): - raise Fail("Parse error (%s) - crypter plugin may be out of date" % reason) + def error(self, reason=None, type="parse"): + if reason: + raise Fail("%s error: %s | Plugin may be out of date" % (type.capitalize(), reason)) + else: + raise Fail("%s error | Plugin out of date" % type.capitalize()) diff --git a/module/plugins/internal/SimpleHoster.py b/module/plugins/internal/SimpleHoster.py index bbd37e978..fe9b2d523 100644 --- a/module/plugins/internal/SimpleHoster.py +++ b/module/plugins/internal/SimpleHoster.py @@ -323,5 +323,8 @@ class SimpleHoster(Hoster): super(SimpleHoster, self).wait() - def error(self, reason): - raise Fail("Parse error (%s) - hoster plugin may be out of date" % reason) + def error(self, reason=None, type="parse"): + if reason: + raise Fail("%s error: %s | Plugin may be out of date" % (type.capitalize(), reason)) + else: + raise Fail("%s error | Plugin out of date" % type.capitalize()) -- cgit v1.2.3 From 1f48f481740863c7697064bde286a78e977e4a1b Mon Sep 17 00:00:00 2001 From: Walter Purcaro <vuolter@gmail.com> Date: Sun, 19 Oct 2014 15:12:06 +0200 Subject: Update other plugins to support self.error --- module/plugins/accounts/DebridItaliaCom.py | 2 +- module/plugins/accounts/FilerNet.py | 2 +- module/plugins/crypter/DuckCryptInfo.py | 4 ++-- module/plugins/crypter/SexuriaCom.py | 2 +- module/plugins/hoster/NowDownloadEu.py | 4 ++-- module/plugins/internal/CaptchaService.py | 14 +++++++------- 6 files changed, 14 insertions(+), 14 deletions(-) (limited to 'module') diff --git a/module/plugins/accounts/DebridItaliaCom.py b/module/plugins/accounts/DebridItaliaCom.py index 48b46cc0b..631a2a316 100644 --- a/module/plugins/accounts/DebridItaliaCom.py +++ b/module/plugins/accounts/DebridItaliaCom.py @@ -30,7 +30,7 @@ class DebridItaliaCom(Account): validuntil = int(time.mktime(time.strptime(m.group('D'), "%d/%m/%Y %H:%M"))) return {"premium": True, "validuntil": validuntil, "trafficleft": -1} else: - self.logError("Unable to retrieve account information - Plugin may be out of date") + self.logError("Unable to retrieve account information") def login(self, user, data, req): diff --git a/module/plugins/accounts/FilerNet.py b/module/plugins/accounts/FilerNet.py index 82f78ed0c..f89d7be2f 100644 --- a/module/plugins/accounts/FilerNet.py +++ b/module/plugins/accounts/FilerNet.py @@ -37,7 +37,7 @@ class FilerNet(Account): trafficleft = parseFileSize(traffic.group(1)) return {"premium": True, "validuntil": validuntil, "trafficleft": trafficleft} else: - self.logError("Unable to retrieve account information - Plugin may be out of date") + self.logError("Unable to retrieve account information") return {"premium": False, "validuntil": None, "trafficleft": None} diff --git a/module/plugins/crypter/DuckCryptInfo.py b/module/plugins/crypter/DuckCryptInfo.py index ff7b0a07a..29eeb4453 100644 --- a/module/plugins/crypter/DuckCryptInfo.py +++ b/module/plugins/crypter/DuckCryptInfo.py @@ -42,7 +42,7 @@ class DuckCryptInfo(Crypter): cryptlinks = soup.findAll("div", attrs={"class": "folderbox"}) self.logDebug("Redirectet to " + str(cryptlinks)) if not cryptlinks: - self.fail('no links m - (Plugin out of date?)') + self.error("no links m") for clink in cryptlinks: if clink.find("a"): self.handleLink(clink.find("a")['href']) @@ -52,4 +52,4 @@ class DuckCryptInfo(Crypter): soup = BeautifulSoup(src) self.urls = [soup.find("iframe")['src']] if not self.urls: - self.logDebug("No link found - (Plugin out of date?)") + self.logInfo("No link found") diff --git a/module/plugins/crypter/SexuriaCom.py b/module/plugins/crypter/SexuriaCom.py index c7939e332..55b6adef4 100644 --- a/module/plugins/crypter/SexuriaCom.py +++ b/module/plugins/crypter/SexuriaCom.py @@ -92,7 +92,7 @@ class SexuriaCom(Crypter): # Inform the user if no link could been extracted if linklist == []: - self.fail("Could not extract any links (out of date?)") + self.error("Could not extract any links") # Debug log self.logDebug("%d supported links" % len(linklist)) diff --git a/module/plugins/hoster/NowDownloadEu.py b/module/plugins/hoster/NowDownloadEu.py index dcf13e678..57d31acd5 100644 --- a/module/plugins/hoster/NowDownloadEu.py +++ b/module/plugins/hoster/NowDownloadEu.py @@ -38,7 +38,7 @@ class NowDownloadEu(SimpleHoster): tokenlink = re.search(self.TOKEN_PATTERN, self.html) continuelink = re.search(self.CONTINUE_PATTERN, self.html) if tokenlink is None or continuelink is None: - self.fail('Plugin out of Date') + self.error() m = re.search(self.WAIT_PATTERN, self.html) if m: @@ -54,7 +54,7 @@ class NowDownloadEu(SimpleHoster): url = re.search(self.LINK_PATTERN, self.html) if url is None: - self.fail('Download Link not Found (Plugin out of Date?)') + self.error("Download link not found") self.logDebug("Download link", url.group(1)) self.download(str(url.group(1))) diff --git a/module/plugins/internal/CaptchaService.py b/module/plugins/internal/CaptchaService.py index b2b549617..203dda82e 100644 --- a/module/plugins/internal/CaptchaService.py +++ b/module/plugins/internal/CaptchaService.py @@ -7,7 +7,7 @@ from random import random class CaptchaService: __name__ = "CaptchaService" - __version__ = "0.11" + __version__ = "0.12" __description__ = """Base captcha service plugin""" __license__ = "GPLv3" @@ -52,7 +52,7 @@ class CaptchaService: class ReCaptcha(CaptchaService): __name__ = "ReCaptcha" - __version__ = "0.04" + __version__ = "0.05" __description__ = """ReCaptcha captcha service plugin""" __license__ = "GPLv3" @@ -99,7 +99,7 @@ class ReCaptcha(CaptchaService): challenge = re.search("challenge : '(.+?)',", js).group(1) server = re.search("server : '(.+?)',", js).group(1) except: - self.plugin.parseError("ReCaptcha challenge pattern not found") + self.plugin.error("ReCaptcha challenge pattern not found") result = self.result(server, challenge) @@ -113,7 +113,7 @@ class ReCaptcha(CaptchaService): class AdsCaptcha(CaptchaService): __name__ = "AdsCaptcha" - __version__ = "0.02" + __version__ = "0.03" __description__ = """AdsCaptcha captcha service plugin""" __license__ = "GPLv3" @@ -161,7 +161,7 @@ class AdsCaptcha(CaptchaService): challenge = re.search("challenge: '(.+?)',", js).group(1) server = re.search("server: '(.+?)',", js).group(1) except: - self.plugin.parseError("AdsCaptcha challenge pattern not found") + self.plugin.error("AdsCaptcha challenge pattern not found") result = self.result(server, challenge) @@ -175,7 +175,7 @@ class AdsCaptcha(CaptchaService): class SolveMedia(CaptchaService): __name__ = "SolveMedia" - __version__ = "0.03" + __version__ = "0.04" __description__ = """SolveMedia captcha service plugin""" __license__ = "GPLv3" @@ -200,7 +200,7 @@ class SolveMedia(CaptchaService): html).group(1) server = "http://api.solvemedia.com/papi/media" except: - self.plugin.parseError("SolveMedia challenge pattern not found") + self.plugin.error("SolveMedia challenge pattern not found") result = self.result(server, challenge) -- cgit v1.2.3 From bb68489d85d3aae3d050a8d198f6615aed379690 Mon Sep 17 00:00:00 2001 From: Walter Purcaro <vuolter@gmail.com> Date: Sun, 19 Oct 2014 15:19:37 +0200 Subject: Change some self.req.load to self.load --- module/plugins/hoster/MyfastfileCom.py | 6 +++--- module/plugins/hoster/PornhubCom.py | 2 +- module/plugins/hoster/UnrestrictLi.py | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) (limited to 'module') diff --git a/module/plugins/hoster/MyfastfileCom.py b/module/plugins/hoster/MyfastfileCom.py index 466bb95e8..8fbae3e0a 100644 --- a/module/plugins/hoster/MyfastfileCom.py +++ b/module/plugins/hoster/MyfastfileCom.py @@ -30,9 +30,9 @@ class MyfastfileCom(Hoster): self.fail("No Myfastfile.com account provided") else: self.logDebug("Original URL: %s" % pyfile.url) - page = self.req.load('http://myfastfile.com/api.php', - get={'user': self.user, 'pass': self.account.getAccountData(self.user)['password'], - 'link': pyfile.url}) + page = self.load('http://myfastfile.com/api.php', + get={'user': self.user, 'pass': self.account.getAccountData(self.user)['password'], + 'link': pyfile.url}) self.logDebug("JSON data: " + page) page = json_loads(page) if page['status'] != 'ok': diff --git a/module/plugins/hoster/PornhubCom.py b/module/plugins/hoster/PornhubCom.py index fad915fb1..60b57d2c8 100644 --- a/module/plugins/hoster/PornhubCom.py +++ b/module/plugins/hoster/PornhubCom.py @@ -44,7 +44,7 @@ class PornhubCom(Hoster): post_data += "\x02\x00\x02\x2d\x31\x02\x00\x20" post_data += "add299463d4410c6d1b1c418868225f7" - content = self.req.load(url, post=str(post_data)) + content = self.load(url, post=str(post_data)) new_content = "" for x in content: diff --git a/module/plugins/hoster/UnrestrictLi.py b/module/plugins/hoster/UnrestrictLi.py index 0cd8e315f..2acb7816d 100644 --- a/module/plugins/hoster/UnrestrictLi.py +++ b/module/plugins/hoster/UnrestrictLi.py @@ -43,8 +43,8 @@ class UnrestrictLi(Hoster): else: self.logDebug("Old URL: %s" % pyfile.url) for _ in xrange(5): - page = self.req.load('https://unrestrict.li/unrestrict.php', - post={'link': pyfile.url, 'domain': 'long'}) + page = self.load('https://unrestrict.li/unrestrict.php', + post={'link': pyfile.url, 'domain': 'long'}) self.logDebug("JSON data: " + page) if page != '': break -- cgit v1.2.3 From 39b304c6495e6a77562e9ce2c9cdf921851c668a Mon Sep 17 00:00:00 2001 From: Walter Purcaro <vuolter@gmail.com> Date: Sun, 19 Oct 2014 16:28:10 +0200 Subject: Fixes --- module/plugins/hooks/XFileSharingPro.py | 12 ++++++------ module/plugins/internal/SimpleHoster.py | 4 ++-- 2 files changed, 8 insertions(+), 8 deletions(-) (limited to 'module') diff --git a/module/plugins/hooks/XFileSharingPro.py b/module/plugins/hooks/XFileSharingPro.py index 1782456e1..54d97de53 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.17" + __version__ = "0.18" __config__ = [("activated", "bool", "Activated", True), ("match_hoster", "Always;Always except excluded;Listed only", "Hoster match", "Always except excluded"), @@ -49,13 +49,13 @@ class XFileSharingPro(Hook): def loadPattern(self): - regex = {'hoster' = (r'https?://(?!(?:www\.)?(?:%s))(?:www\.)?([\w^_]+(?:\.[a-zA-Z]{2,})+(?:\:\d+)?)/(?:embed-)?\w{12}', - r'https?://(?:[^/]+\.)?(%s)/(?:embed-)?\w{12}\W?'), - 'crypter' = (r'https?://(?!(?:www\.)?(?:%s))(?:www\.)?([\w^_]+(?:\.[a-zA-Z]{2,})+(?:\:\d+)?)/(?:user|folder)s?/\w+', - r'https?://(?:[^/]+\.)?(%s)/(?:user|folder)s?/\w+')} + regex = {'hoster' : (r'https?://(?!(?:www\.)?(?:%s))(?:www\.)?([\w^_]+(?:\.[a-zA-Z]{2,})+(?:\:\d+)?)/(?:embed-)?\w{12}', + r'https?://(?:[^/]+\.)?(%s)/(?:embed-)?\w{12}\W?'), + 'crypter': (r'https?://(?!(?:www\.)?(?:%s))(?:www\.)?([\w^_]+(?:\.[a-zA-Z]{2,})+(?:\:\d+)?)/(?:user|folder)s?/\w+', + r'https?://(?:[^/]+\.)?(%s)/(?:user|folder)s?/\w+')} for type, plugin in (("hoster", "XFileSharingPro"), ("crypter", "XFileSharingProFolder")): - match = self.getConfig('match_%ss' % type) + match = self.getConfig('match_%s' % type) include_set = self.getConfigSet('include_%ss' % type) exclude_set = self.getConfigSet('exclude_%ss' % type) diff --git a/module/plugins/internal/SimpleHoster.py b/module/plugins/internal/SimpleHoster.py index fe9b2d523..c62ef53b4 100644 --- a/module/plugins/internal/SimpleHoster.py +++ b/module/plugins/internal/SimpleHoster.py @@ -9,7 +9,7 @@ from module.network.CookieJar import CookieJar from module.network.RequestFactory import getURL from module.plugins.Hoster import Hoster from module.plugins.Plugin import Fail -reasonfrom module.utils import fixup, html_unescape, parseFileSize +from module.utils import fixup, html_unescape, parseFileSize def replace_patterns(string, ruleslist): @@ -143,7 +143,7 @@ def timestamp(): class SimpleHoster(Hoster): __name__ = "SimpleHoster" __type__ = "hoster" - __version__ = "0.39" + __version__ = "0.40" __pattern__ = None -- cgit v1.2.3 From 6b1317e3d93731c5a84f4dc443be97d3186c7a45 Mon Sep 17 00:00:00 2001 From: Walter Purcaro <vuolter@gmail.com> Date: Mon, 20 Oct 2014 00:30:45 +0200 Subject: Improve packagetools regex 2 --- module/common/packagetools.py | 55 ++++++++++++++++++++++--------------------- 1 file changed, 28 insertions(+), 27 deletions(-) (limited to 'module') diff --git a/module/common/packagetools.py b/module/common/packagetools.py index 578148b50..d930157e1 100644 --- a/module/common/packagetools.py +++ b/module/common/packagetools.py @@ -5,18 +5,19 @@ import re from urlparse import urlparse -endings = ("3gp", "7zip", "7z", "abr", "ac3", "aiff", "aifc", "aif", "ai", "au", - "avi", "bin", "bz2", "cbr", "cbz", "ccf", "cue", "cvd", "chm", "dta", - "deb", "divx", "djvu", "dlc", "dmg", "doc", "docx", "dot", "eps", "exe", - "ff", "flv", "f4v", "gsd", "gif", "gz", "iwd", "iso", "ipsw", "java", - "jar", "jpg", "jpeg", "jdeatme", "load", "mws", "mw", "m4v", "m4a", - "mkv", "mp2", "mp3", "mp4", "mov", "movie", "mpeg", "mpe", "mpg", "msi", - "msu", "msp", "nfo", "npk", "oga", "ogg", "ogv", "otrkey", "pkg", "png", - "pdf", "pptx", "ppt", "pps", "ppz", "pot", "psd", "qt", "rmvb", "rm", - "rar", "ram", "ra", "rev", "rnd", "r\d+", "rpm", "run", "rsdf", "rtf", - "sh(!?tml)", "srt", "snd", "sfv", "swf", "tar", "tif", "tiff", "ts", - "txt", "viv", "vivo", "vob", "wav", "wmv", "xla", "xls", "xpi", "zeno", - "zip", "z\d+", "_[_a-z]{2}", "\d+$") +endings = ("jdeatme", "3gp", "7zip", "7z", "abr", "ac3", "aiff", "aifc", "aif", "ai", + "au", "avi", "apk", "bin", "bmp", "bat", "bz2", "cbr", "cbz", "ccf", "chm", + "cr2", "cso", "cue", "cvd", "dta", "deb", "divx", "djvu", "dlc", "dmg", "doc", + "docx", "dot", "eps", "epub", "exe", "ff", "flv", "flac", "f4v", "gsd", "gif", + "gpg", "gz", "iwd", "idx", "iso", "ipa", "ipsw", "java", "jar", "jpe?g", "load", + "m2ts", "m4v", "m4a", "md5", "mkv", "mp2", "mp3", "mp4", "mobi", "mov", "movie", + "mpeg", "mpe", "mpg", "mpq", "msi", "msu", "msp", "mv", "mws", "nfo", "npk", "oga", + "ogg", "ogv", "otrkey", "par2", "pkg", "png", "pdf", "pptx?", "ppsx?", "ppz", "pot", + "psd", "qt", "rmvb", "rm", "rar", "ram", "ra", "rev", "rnd", "rpm", "run", "rsdf", + "reg", "rtf", "shnf", "sh(?!tml)", "ssa", "smi", "sub", "srt", "snd", "sfv", "sfx", + "swf", "swc", "tar\.(gz|bz2|xz)", "tar", "tgz", "tiff?", "ts", "txt", "viv", "vivo", + "vob", "vtt", "webm", "wav", "wmv", "wma", "xla", "xls", "xpi", "zeno", "zip", + "[r-z]\d{2}", "_[_a-z]{2}", "\d{3,4}(?=\?|$|\"|\r|\n)") rarPats = [re.compile(r'(.*)(\.|_|-)pa?r?t?\.?\d+.(rar|exe)$', re.I), re.compile(r'(.*)(\.|_|-)part\.?[0]*[1].(rar|exe)$', re.I), @@ -48,9 +49,9 @@ def matchFirst(string, *args): """ matches against list of regexp and returns first match """ for patternlist in args: for pattern in patternlist: - r = pattern.search(string) - if r is not None: - name = r.group(1) + m = pattern.search(string) + if m is not None: + name = m.group(1) return name return string @@ -96,19 +97,19 @@ def parseNames(files): patternMatch = True # xtremsplit pattern - r = pat4.search(name) - if r is not None: - name = r.group(1) + m = pat4.search(name) + if m is not None: + name = m.group(1) # remove part and cd pattern - r = pat1.search(name) - if r is not None: - name = name.replace(r.group(0), "") + m = pat1.search(name) + if m is not None: + name = name.replace(m.group(0), "") patternMatch = True - r = pat2.search(name) - if r is not None: - name = name.replace(r.group(0), "") + m = pat2.search(name) + if m is not None: + name = name.replace(m.group(0), "") patternMatch = True # additional checks if extension pattern matched @@ -123,9 +124,9 @@ def parseNames(files): name = name[:-length] # remove endings like . _ - - r = pat3.search(name) - if r is not None: - name = r.group(1) + m = pat3.search(name) + if m is not None: + name = m.group(1) # replace . and _ with space name = name.replace(".", " ") -- cgit v1.2.3 From 52ec86c18b649676b3231aa3730583041c132bd7 Mon Sep 17 00:00:00 2001 From: Walter Purcaro <vuolter@gmail.com> Date: Mon, 20 Oct 2014 00:32:04 +0200 Subject: Improve log functions --- module/plugins/Plugin.py | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) (limited to 'module') diff --git a/module/plugins/Plugin.py b/module/plugins/Plugin.py index d17776485..57da4d114 100644 --- a/module/plugins/Plugin.py +++ b/module/plugins/Plugin.py @@ -59,17 +59,20 @@ class Base(object): self.config = core.config #log functions + def logDebug(self, *args): + self.log.debug("%s: %s" % (self.__name__, " | ".join([a if isinstance(a, basestring) else str(a) for a in args if a]))) + def logInfo(self, *args): - self.log.info("%s: %s" % (self.__name__, " | ".join([a if isinstance(a, basestring) else str(a) for a in args]))) + self.log.info("%s: %s" % (self.__name__, " | ".join([a if isinstance(a, basestring) else str(a) for a in args if a]))) def logWarning(self, *args): - self.log.warning("%s: %s" % (self.__name__, " | ".join([a if isinstance(a, basestring) else str(a) for a in args]))) + self.log.warning("%s: %s" % (self.__name__, " | ".join([a if isinstance(a, basestring) else str(a) for a in args if a]))) def logError(self, *args): - self.log.error("%s: %s" % (self.__name__, " | ".join([a if isinstance(a, basestring) else str(a) for a in args]))) + self.log.error("%s: %s" % (self.__name__, " | ".join([a if isinstance(a, basestring) else str(a) for a in args if a]))) - def logDebug(self, *args): - self.log.debug("%s: %s" % (self.__name__, " | ".join([a if isinstance(a, basestring) else str(a) for a in args]))) + def logCritical(self, *args): + self.log.critical("%s: %s" % (self.__name__, " | ".join([a if isinstance(a, basestring) else str(a) for a in args if a]))) def setConf(self, option, value): -- cgit v1.2.3 From 3253bc2596edc5d45a64a643d85f154b8f0fd8ce Mon Sep 17 00:00:00 2001 From: Walter Purcaro <vuolter@gmail.com> Date: Mon, 20 Oct 2014 00:33:05 +0200 Subject: Tiny code cosmetics in Ftp and Http accounts --- module/plugins/accounts/Ftp.py | 3 ++- module/plugins/accounts/Http.py | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) (limited to 'module') diff --git a/module/plugins/accounts/Ftp.py b/module/plugins/accounts/Ftp.py index 698051ede..422573a4a 100644 --- a/module/plugins/accounts/Ftp.py +++ b/module/plugins/accounts/Ftp.py @@ -13,4 +13,5 @@ class Ftp(Account): __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] - login_timeout = info_threshold = 1000000 + info_threshold = 1000000 + login_timeout = 1000000 diff --git a/module/plugins/accounts/Http.py b/module/plugins/accounts/Http.py index c7b03a668..c3170ae85 100644 --- a/module/plugins/accounts/Http.py +++ b/module/plugins/accounts/Http.py @@ -13,4 +13,5 @@ class Http(Account): __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] - login_timeout = info_threshold = 1000000 + info_threshold = 1000000 + login_timeout = 1000000 -- cgit v1.2.3 From f70cd18b0c7cb303597a06becc791035f7fd7bd6 Mon Sep 17 00:00:00 2001 From: Walter Purcaro <vuolter@gmail.com> Date: Mon, 20 Oct 2014 02:20:56 +0200 Subject: [XFSPAccount] Fixed broken login due missing HOSTER_URL --- module/plugins/Account.py | 29 ++++++++++++++++++++++++++--- module/plugins/internal/XFSPAccount.py | 7 ++++++- 2 files changed, 32 insertions(+), 4 deletions(-) (limited to 'module') diff --git a/module/plugins/Account.py b/module/plugins/Account.py index 1adba6af4..9c97d2cf9 100644 --- a/module/plugins/Account.py +++ b/module/plugins/Account.py @@ -39,16 +39,19 @@ class Account(Base): self.manager = manager self.accounts = {} - self.infos = {} # cache for account information + self.infos = {} #: cache for account information self.lock = RLock() - self.timestamps = {} - self.setAccounts(accounts) + self.init() + self.setAccounts(accounts) + + def init(self): pass + def login(self, user, data, req): """login into account, the cookies will be saved so user can be recognized @@ -58,6 +61,7 @@ class Account(Base): """ pass + @lock def _login(self, user, data): # set timestamp for login @@ -85,6 +89,7 @@ class Account(Base): req.close() return success + def relogin(self, user): req = self.getAccountRequest(user) if req: @@ -95,12 +100,14 @@ class Account(Base): return self._login(user, self.accounts[user]) + def setAccounts(self, accounts): self.accounts = accounts for user, data in self.accounts.iteritems(): self._login(user, data) self.infos[user] = {} + def updateAccounts(self, user, password=None, options={}): """ updates account and return true if anything changed """ @@ -119,6 +126,7 @@ class Account(Base): self._login(user, self.accounts[user]) return True + def removeAccount(self, user): if user in self.accounts: del self.accounts[user] @@ -127,6 +135,7 @@ class Account(Base): if user in self.timestamps: del self.timestamps[user] + @lock def getAccountInfo(self, name, force=False): """retrieve account infos for an user, do **not** overwrite this method!\\ @@ -165,10 +174,12 @@ class Account(Base): data.update(self.infos[name]) return data + def isPremium(self, user): info = self.getAccountInfo(user) return info['premium'] + def loadAccountInfo(self, name, req=None): """this should be overwritten in account plugin,\ and retrieving account information for user @@ -190,9 +201,11 @@ class Account(Base): "type": self.__name__, } + def getAllAccounts(self, force=False): return [self.getAccountInfo(user, force) for user, data in self.accounts.iteritems()] + def getAccountRequest(self, user=None): if not user: user, data = self.selectAccount() @@ -202,6 +215,7 @@ class Account(Base): req = self.core.requestFactory.getRequest(self.__name__, user) return req + def getAccountCookies(self, user=None): if not user: user, data = self.selectAccount() @@ -211,9 +225,11 @@ class Account(Base): cj = self.core.requestFactory.getCookieJar(self.__name__, user) return cj + def getAccountData(self, user): return self.accounts[user] + def selectAccount(self): """ returns an valid account name and data""" usable = [] @@ -243,15 +259,19 @@ class Account(Base): if not usable: return None, None return choice(usable) + def canUse(self): return False if self.selectAccount() == (None, None) else True + def parseTraffic(self, string): #returns kbyte return parseFileSize(string) / 1024 + def wrongPassword(self): raise WrongPassword + def empty(self, user): if user in self.infos: self.logWarning(_("Account %s has not enough traffic, checking again in 30min") % user) @@ -259,6 +279,7 @@ class Account(Base): self.infos[user].update({"trafficleft": 0}) self.scheduleRefresh(user, 30 * 60) + def expired(self, user): if user in self.infos: self.logWarning(_("Account %s is expired, checking again in 1h") % user) @@ -266,11 +287,13 @@ class Account(Base): self.infos[user].update({"validuntil": time() - 1}) self.scheduleRefresh(user, 60 * 60) + def scheduleRefresh(self, user, time=0, force=True): """ add task to refresh account info to sheduler """ self.logDebug("Scheduled Account refresh for %s in %s seconds." % (user, time)) self.core.scheduler.addJob(time, self.getAccountInfo, [user, force]) + @lock def checkLogin(self, user): """ checks if user is still logged in """ diff --git a/module/plugins/internal/XFSPAccount.py b/module/plugins/internal/XFSPAccount.py index 713bf827d..c2d779c29 100644 --- a/module/plugins/internal/XFSPAccount.py +++ b/module/plugins/internal/XFSPAccount.py @@ -13,7 +13,7 @@ from module.utils import parseFileSize class XFSPAccount(Account): __name__ = "XFSPAccount" __type__ = "account" - __version__ = "0.13" + __version__ = "0.14" __description__ = """XFileSharingPro account plugin""" __license__ = "GPLv3" @@ -43,6 +43,11 @@ class XFSPAccount(Account): LOGIN_FAIL_PATTERN = r'>(Incorrect Login or Password|Error<)' + def __init__(self, manager, accounts): #@TODO: remove in 0.4.10 + self.init() + return super(XFSPAccount, self).__init__(manager, accounts) + + def init(self): if not hasattr(self, "HOSTER_URL"): self.HOSTER_URL = "http://%s/" % self.HOSTER_NAME -- cgit v1.2.3 From 99fcb5c59bcb95311e0eb2213bcf23943d57769c Mon Sep 17 00:00:00 2001 From: Walter Purcaro <vuolter@gmail.com> Date: Mon, 20 Oct 2014 02:10:06 +0200 Subject: [SafelinkingNet] Better way to retrieve password --- module/plugins/crypter/SafelinkingNet.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) (limited to 'module') diff --git a/module/plugins/crypter/SafelinkingNet.py b/module/plugins/crypter/SafelinkingNet.py index 33b3d73ab..9ef4529cb 100644 --- a/module/plugins/crypter/SafelinkingNet.py +++ b/module/plugins/crypter/SafelinkingNet.py @@ -38,14 +38,12 @@ class SafelinkingNet(Crypter): self.fail("Couldn't find forwarded Link") else: - password = "" postData = {"post-protect": "1"} self.html = self.load(url) if "link-password" in self.html: - password = pyfile.package().password - postData['link-password'] = password + postData['link-password'] = self.getPassword() if "altcaptcha" in self.html: for _ in xrange(5): -- cgit v1.2.3 From 8831b9b27bcfadbefa35d133fad3e618d6e30a6e Mon Sep 17 00:00:00 2001 From: Walter Purcaro <vuolter@gmail.com> Date: Mon, 20 Oct 2014 02:22:34 +0200 Subject: [Ftp] Improve __pattern__ --- module/plugins/hoster/Ftp.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'module') diff --git a/module/plugins/hoster/Ftp.py b/module/plugins/hoster/Ftp.py index f80fdd69f..bdf75b10f 100644 --- a/module/plugins/hoster/Ftp.py +++ b/module/plugins/hoster/Ftp.py @@ -12,9 +12,9 @@ from module.plugins.Hoster import Hoster class Ftp(Hoster): __name__ = "Ftp" __type__ = "hoster" - __version__ = "0.42" + __version__ = "0.43" - __pattern__ = r'(ftps?|sftp)://(.*?:.*?@)?.*?/.*' # ftp://user:password@ftp\.server\.org/path/to/file + __pattern__ = r'(?:ftps?|sftp)://([\w.-]+(:[\w.-]+)?@)?[\w.-]+(:\d+)?/.+' __description__ = """Download from ftp directory""" __license__ = "GPLv3" @@ -27,6 +27,7 @@ class Ftp(Hoster): self.chunkLimit = -1 self.resumeDownload = True + def process(self, pyfile): parsed_url = urlparse(pyfile.url) netloc = parsed_url.netloc @@ -44,7 +45,7 @@ class Ftp(Hoster): self.logDebug("Logging on to %s" % netloc) self.req.addAuth(self.account.accounts[netloc]['password']) else: - for pwd in pyfile.package().password.splitlines(): + for pwd in self.getPassword().splitlines(): if ":" in pwd: self.req.addAuth(pwd.strip()) break -- cgit v1.2.3 From 702ab35e37437300a2ded26e66011faaac06f902 Mon Sep 17 00:00:00 2001 From: Walter Purcaro <vuolter@gmail.com> Date: Mon, 20 Oct 2014 12:57:26 +0200 Subject: Fix download resume feature --- module/network/HTTPDownload.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'module') diff --git a/module/network/HTTPDownload.py b/module/network/HTTPDownload.py index fe8075539..3f32295b4 100644 --- a/module/network/HTTPDownload.py +++ b/module/network/HTTPDownload.py @@ -63,7 +63,7 @@ class HTTPDownload(): except IOError: self.info = ChunkInfo(filename) - self.chunkSupport = None + self.chunkSupport = True self.m = pycurl.CurlMulti() #needed for speed calculation @@ -130,7 +130,7 @@ class HTTPDownload(): except pycurl.error, e: #code 33 - no resume code = e.args[0] - if code == 33: + if resume is True and code == 33: # try again without resume self.log.debug("Errno 33 -> Restart without resume") @@ -151,6 +151,7 @@ class HTTPDownload(): if not resume: self.info.clear() self.info.addChunk("%s.chunk0" % self.filename, (0, 0)) #create an initial entry + self.info.save() self.chunks = [] @@ -164,8 +165,8 @@ class HTTPDownload(): chunksDone = set() # list of curl handles that are finished chunksCreated = False done = False - if self.info.getCount() > 1: # This is a resume, if we were chunked originally assume still can - self.chunkSupport = True + if self.info.getCount() is 0: # This is a resume, if we were chunked originally assume still can + self.chunkSupport = False while 1: #need to create chunks -- cgit v1.2.3 From 4e0e93fe8a9c9a98f3f299afacf07fbc855ef88b Mon Sep 17 00:00:00 2001 From: Walter Purcaro <vuolter@gmail.com> Date: Mon, 20 Oct 2014 12:59:27 +0200 Subject: Preload self.html --- module/plugins/internal/SimpleCrypter.py | 10 +++++----- module/plugins/internal/SimpleHoster.py | 11 ++++------- module/plugins/internal/XFSPHoster.py | 9 +++------ 3 files changed, 12 insertions(+), 18 deletions(-) (limited to 'module') diff --git a/module/plugins/internal/SimpleCrypter.py b/module/plugins/internal/SimpleCrypter.py index f1def8118..b09ee6ac2 100644 --- a/module/plugins/internal/SimpleCrypter.py +++ b/module/plugins/internal/SimpleCrypter.py @@ -2,6 +2,7 @@ import re +from module.network.RequestFactory import getURL from module.plugins.Crypter import Crypter from module.plugins.Plugin import Fail from module.plugins.internal.SimpleHoster import replace_patterns, set_cookies @@ -11,7 +12,7 @@ from module.utils import fixup, html_unescape class SimpleCrypter(Crypter): __name__ = "SimpleCrypter" __type__ = "crypter" - __version__ = "0.16" + __version__ = "0.17" __pattern__ = None @@ -86,14 +87,13 @@ class SimpleCrypter(Crypter): if isinstance(self.COOKIES, list): set_cookies(self.req.cj, self.COOKIES) + url = self.pyfile.url = replace_patterns(self.pyfile.url, self.URL_REPLACEMENTS) + self.html = getURL(url, decode=not self.TEXT_ENCODING, cookies=self.COOKIES) + def decrypt(self, pyfile): self.prepare() - pyfile.url = replace_patterns(pyfile.url, self.URL_REPLACEMENTS) - - self.html = self.load(pyfile.url, decode=not self.TEXT_ENCODING) - self.checkOnline() package_name, folder_name = self.getPackageNameAndFolder() diff --git a/module/plugins/internal/SimpleHoster.py b/module/plugins/internal/SimpleHoster.py index c62ef53b4..6fc61460a 100644 --- a/module/plugins/internal/SimpleHoster.py +++ b/module/plugins/internal/SimpleHoster.py @@ -204,17 +204,16 @@ class SimpleHoster(Hoster): def prepare(self): if isinstance(self.COOKIES, list): set_cookies(self.req.cj, self.COOKIES) + self.req.setOption("timeout", 120) + url = self.pyfile.url = replace_patterns(self.pyfile.url, self.FILE_URL_REPLACEMENTS) + self.html = getURL(url, decode=not self.TEXT_ENCODING, cookies=self.COOKIES) + def process(self, pyfile): self.prepare() - pyfile.url = replace_patterns(pyfile.url, self.FILE_URL_REPLACEMENTS) - - # Due to a 0.4.9 core bug self.load would keep previous cookies even if overridden by cookies parameter. - # Workaround using getURL. Can be reverted in 0.4.10 as the cookies bug has been fixed. - self.html = getURL(pyfile.url, decode=not self.TEXT_ENCODING, cookies=self.COOKIES) premium_only = hasattr(self, 'PREMIUM_ONLY_PATTERN') and re.search(self.PREMIUM_ONLY_PATTERN, self.html) if not premium_only: # Usually premium only pages doesn't show the file information self.getFileInfo() @@ -224,8 +223,6 @@ class SimpleHoster(Hoster): elif premium_only: self.fail("This link require a premium account") else: - # This line is required due to the getURL workaround. Can be removed in 0.4.10 - self.html = self.load(pyfile.url, decode=not self.TEXT_ENCODING) self.handleFree() diff --git a/module/plugins/internal/XFSPHoster.py b/module/plugins/internal/XFSPHoster.py index 0b656c67c..14c8302e1 100644 --- a/module/plugins/internal/XFSPHoster.py +++ b/module/plugins/internal/XFSPHoster.py @@ -75,12 +75,13 @@ class XFSPHoster(SimpleHoster): self.errmsg = None self.passwords = self.getPassword().splitlines() + url = self.pyfile.url = replace_patterns(self.pyfile.url, self.FILE_URL_REPLACEMENTS) + self.html = getURL(url, decode=not self.TEXT_ENCODING, cookies=self.COOKIES) + def process(self, pyfile): self.prepare() - pyfile.url = replace_patterns(pyfile.url, self.FILE_URL_REPLACEMENTS) - if not re.match(self.__pattern__, pyfile.url): if self.premium: self.handleOverriden() @@ -88,10 +89,6 @@ class XFSPHoster(SimpleHoster): self.fail("Only premium users can download from other hosters with %s" % self.HOSTER_NAME) else: try: - # Due to a 0.4.9 core bug self.load would use cookies even if - # cookies=False. Workaround using getURL to avoid cookies. - # Can be reverted in 0.4.10 as the cookies bug has been fixed. - self.html = getURL(pyfile.url, decode=not self.TEXT_ENCODING, cookies=self.COOKIES) self.file_info = self.getFileInfo() except Fail: self.file_info = None -- cgit v1.2.3 From df18c546f35f642bd03ee33c4e8405b4af71f714 Mon Sep 17 00:00:00 2001 From: Walter Purcaro <vuolter@gmail.com> Date: Mon, 20 Oct 2014 13:00:16 +0200 Subject: [MegasharesCom] Fix PASSPORT_RENEW_PATTERN --- module/plugins/hoster/MegasharesCom.py | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) (limited to 'module') diff --git a/module/plugins/hoster/MegasharesCom.py b/module/plugins/hoster/MegasharesCom.py index 19942f136..61a314de4 100644 --- a/module/plugins/hoster/MegasharesCom.py +++ b/module/plugins/hoster/MegasharesCom.py @@ -10,13 +10,14 @@ from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo class MegasharesCom(SimpleHoster): __name__ = "MegasharesCom" __type__ = "hoster" - __version__ = "0.26" + __version__ = "0.27" __pattern__ = r'http://(?:www\.)?(d\d{2}\.)?megashares\.com/((index\.php)?\?d\d{2}=|dl/)\w+' __description__ = """Megashares.com hoster plugin""" __license__ = "GPLv3" - __authors__ = [("zoidberg", "zoidberg@mujmail.cz")] + __authors__ = [("zoidberg", "zoidberg@mujmail.cz"), + ("Walter Purcaro", "vuolter@gmail.com")] FILE_NAME_PATTERN = r'<h1 class="black xxl"[^>]*title="(?P<N>[^"]+)">' @@ -26,7 +27,7 @@ class MegasharesCom(SimpleHoster): LINK_PATTERN = r'<div id="show_download_button_%d"[^>]*>\s*<a href="([^"]+)">' PASSPORT_LEFT_PATTERN = r'Your Download Passport is: <[^>]*>(\w+).*?You have.*?<[^>]*>.*?([\d.]+) (\w+)' - PASSPORT_RENEW_PATTERN = r'Your download passport will renew(?:.|\n)*(\d+).*?(\d+).*?(\d+)' + PASSPORT_RENEW_PATTERN = r'(\d+):<strong>(\d+)</strong>:<strong>(\d+)</strong>' REACTIVATE_NUM_PATTERN = r'<input[^>]*id="random_num" value="(\d+)" />' REACTIVATE_PASSPORT_PATTERN = r'<input[^>]*id="passport_num" value="(\w+)" />' REQUEST_URI_PATTERN = r'var request_uri = "([^"]+)";' @@ -43,8 +44,6 @@ class MegasharesCom(SimpleHoster): def handleFree(self): - self.html = self.load(self.pyfile.url, decode=True) - if self.NO_SLOTS_PATTERN in self.html: self.retry(wait_time=5 * 60) @@ -76,19 +75,24 @@ class MegasharesCom(SimpleHoster): else: self.fail("Failed to reactivate passport") + m = re.search(self.PASSPORT_RENEW_PATTERN, self.html) + if m: + time = [int(x) for x in m.groups()] + renew = time[0] + (time[1] * 60) + (time[2] * 60) + self.logDebug('Waiting %d seconds for a new passport' % renew) + self.retry(wait_time=renew, reason="Passport renewal") + # Check traffic left on passport m = re.search(self.PASSPORT_LEFT_PATTERN, self.html, re.M | re.S) if m is None: self.fail('Passport not found') + self.logInfo("Download passport: %s" % m.group(1)) data_left = float(m.group(2)) * 1024 ** {'B': 0, 'KB': 1, 'MB': 2, 'GB': 3}[m.group(3)] self.logInfo("Data left: %s %s (%d MB needed)" % (m.group(2), m.group(3), self.pyfile.size / 1048576)) if not data_left: - m = re.search(self.PASSPORT_RENEW_PATTERN, self.html) - renew = int(m.group(1) + 60 * (m.group(2) + 60 * m.group(3))) if found else 600 - self.logDebug('Waiting %d seconds for a new passport' % renew) - self.retry(wait_time=renew, reason="Passport renewal") + self.retry(wait_time=600, reason="Passport renewal") self.handleDownload(False) -- cgit v1.2.3 From 946264a976217b49fcd1b095e2de9b652161be39 Mon Sep 17 00:00:00 2001 From: estaban <babedoudi@yahoo.fr> Date: Sat, 30 Aug 2014 19:10:35 +0200 Subject: Fix resume and progress column for some FTP files --- module/PyFile.py | 2 +- module/network/HTTPChunk.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) (limited to 'module') diff --git a/module/PyFile.py b/module/PyFile.py index 3dede9360..9e20ceab4 100644 --- a/module/PyFile.py +++ b/module/PyFile.py @@ -251,7 +251,7 @@ class PyFile(object): def getBytesLeft(self): """ gets bytes left """ try: - return self.plugin.req.size - self.plugin.req.arrived + return self.getSize() - self.plugin.req.arrived except: return 0 diff --git a/module/network/HTTPChunk.py b/module/network/HTTPChunk.py index b637aef32..d42744cf4 100644 --- a/module/network/HTTPChunk.py +++ b/module/network/HTTPChunk.py @@ -208,7 +208,7 @@ class HTTPChunk(HTTPRequest): # as first chunk, we will parse the headers if not self.range and self.header.endswith("\r\n\r\n"): self.parseHeader() - elif not self.range and buf.startswith("150") and "data connection" in buf: #ftp file size parsing + elif not self.range and buf.startswith("150") and "data connection" in buf.lower(): #: ftp file size parsing size = search(r"(\d+) bytes", buf) if size: self.p.size = int(size.group(1)) @@ -290,4 +290,4 @@ class HTTPChunk(HTTPRequest): """ closes everything, unusable after this """ if self.fp: self.fp.close() self.c.close() - if hasattr(self, "p"): del self.p \ No newline at end of file + if hasattr(self, "p"): del self.p -- cgit v1.2.3 From ffc6db40f7b45ead4941e9943e7ec85bcd1c942d Mon Sep 17 00:00:00 2001 From: Walter Purcaro <vuolter@gmail.com> Date: Mon, 20 Oct 2014 13:06:23 +0200 Subject: [UpdateManager] MIN_INTERVAL is 6h now --- module/plugins/hooks/UpdateManager.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'module') diff --git a/module/plugins/hooks/UpdateManager.py b/module/plugins/hooks/UpdateManager.py index b0fe36c9f..cc086af5c 100644 --- a/module/plugins/hooks/UpdateManager.py +++ b/module/plugins/hooks/UpdateManager.py @@ -14,7 +14,7 @@ from module.utils import save_join class UpdateManager(Hook): __name__ = "UpdateManager" __type__ = "hook" - __version__ = "0.35" + __version__ = "0.36" __config__ = [("activated", "bool", "Activated", True), ("mode", "pyLoad + plugins;plugins only", "Check updates for", "pyLoad + plugins"), @@ -30,7 +30,7 @@ class UpdateManager(Hook): event_list = ["pluginConfigChanged"] SERVER_URL = "http://updatemanager.pyload.org" - MIN_INTERVAL = 3 * 60 * 60 #: 3h minimum check interval (value is in seconds) + MIN_INTERVAL = 6 * 60 * 60 #: 6h minimum check interval (value is in seconds) def pluginConfigChanged(self, plugin, name, value): -- cgit v1.2.3 From dabee359dd8c3870e0302e99457e6dd1bb93d736 Mon Sep 17 00:00:00 2001 From: Walter Purcaro <vuolter@gmail.com> Date: Tue, 21 Oct 2014 16:01:05 +0200 Subject: Remove needless self.html --- module/plugins/crypter/LinkSaveIn.py | 1 - module/plugins/crypter/NCryptIn.py | 1 - module/plugins/crypter/OneKhDe.py | 1 - module/plugins/crypter/RelinkUs.py | 1 - module/plugins/crypter/SexuriaCom.py | 4 ---- module/plugins/crypter/ShareLinksBiz.py | 1 - module/plugins/hoster/DlFreeFr.py | 1 - module/plugins/hoster/FilerNet.py | 3 --- module/plugins/hoster/MegasharesCom.py | 2 -- 9 files changed, 15 deletions(-) (limited to 'module') diff --git a/module/plugins/crypter/LinkSaveIn.py b/module/plugins/crypter/LinkSaveIn.py index 81768e457..3e37f3610 100644 --- a/module/plugins/crypter/LinkSaveIn.py +++ b/module/plugins/crypter/LinkSaveIn.py @@ -33,7 +33,6 @@ class LinkSaveIn(SimpleCrypter): def setup(self): - self.html = None self.fileid = None self.captcha = False self.package = None diff --git a/module/plugins/crypter/NCryptIn.py b/module/plugins/crypter/NCryptIn.py index 22fd53384..28a0735a5 100644 --- a/module/plugins/crypter/NCryptIn.py +++ b/module/plugins/crypter/NCryptIn.py @@ -31,7 +31,6 @@ class NCryptIn(Crypter): def setup(self): self.package = None - self.html = None self.cleanedHtml = None self.links_source_order = ["cnl2", "rsdf", "ccf", "dlc", "web"] self.protection_type = None diff --git a/module/plugins/crypter/OneKhDe.py b/module/plugins/crypter/OneKhDe.py index 3b072b3d7..7a2aefe83 100644 --- a/module/plugins/crypter/OneKhDe.py +++ b/module/plugins/crypter/OneKhDe.py @@ -21,7 +21,6 @@ class OneKhDe(Crypter): def __init__(self, parent): Crypter.__init__(self, parent) self.parent = parent - self.html = None def file_exists(self): """ returns True or False diff --git a/module/plugins/crypter/RelinkUs.py b/module/plugins/crypter/RelinkUs.py index dc97fca74..09b83b82b 100644 --- a/module/plugins/crypter/RelinkUs.py +++ b/module/plugins/crypter/RelinkUs.py @@ -55,7 +55,6 @@ class RelinkUs(Crypter): self.fileid = None self.package = None self.password = None - self.html = None self.captcha = False diff --git a/module/plugins/crypter/SexuriaCom.py b/module/plugins/crypter/SexuriaCom.py index 55b6adef4..68a404f46 100644 --- a/module/plugins/crypter/SexuriaCom.py +++ b/module/plugins/crypter/SexuriaCom.py @@ -26,10 +26,6 @@ class SexuriaCom(Crypter): PATTERN_REDIRECT_LINKS = re.compile(r'value="(http://sexuria\.com/out\.php\?id=\d+\&part=\d+\&link=\d+)" readonly', flags=re.I) - def setup(self): - self.html = None - - def decrypt(self, pyfile): # Init self.pyfile = pyfile diff --git a/module/plugins/crypter/ShareLinksBiz.py b/module/plugins/crypter/ShareLinksBiz.py index 6e187ed6f..126a7e5dc 100644 --- a/module/plugins/crypter/ShareLinksBiz.py +++ b/module/plugins/crypter/ShareLinksBiz.py @@ -24,7 +24,6 @@ class ShareLinksBiz(Crypter): self.baseUrl = None self.fileId = None self.package = None - self.html = None self.captcha = False diff --git a/module/plugins/hoster/DlFreeFr.py b/module/plugins/hoster/DlFreeFr.py index b3ed346fe..b653e2a8f 100644 --- a/module/plugins/hoster/DlFreeFr.py +++ b/module/plugins/hoster/DlFreeFr.py @@ -144,7 +144,6 @@ class DlFreeFr(SimpleHoster): valid_url = pyfile.url headers = self.load(valid_url, just_header=True) - self.html = None if headers.get('code') == 302: valid_url = headers.get('location') headers = self.load(valid_url, just_header=True) diff --git a/module/plugins/hoster/FilerNet.py b/module/plugins/hoster/FilerNet.py index 46c914e9b..7a850a849 100644 --- a/module/plugins/hoster/FilerNet.py +++ b/module/plugins/hoster/FilerNet.py @@ -41,9 +41,6 @@ class FilerNet(SimpleHoster): def handleFree(self): - self.req.setOption("timeout", 120) - self.html = self.load(self.pyfile.url, decode=not self.TEXT_ENCODING, cookies=self.COOKIES) - # Wait between downloads m = re.search(r'musst du <span id="time">(\d+)</span> Sekunden warten', self.html) if m: diff --git a/module/plugins/hoster/MegasharesCom.py b/module/plugins/hoster/MegasharesCom.py index 61a314de4..e674ae7fa 100644 --- a/module/plugins/hoster/MegasharesCom.py +++ b/module/plugins/hoster/MegasharesCom.py @@ -47,8 +47,6 @@ class MegasharesCom(SimpleHoster): if self.NO_SLOTS_PATTERN in self.html: self.retry(wait_time=5 * 60) - self.getFileInfo() - m = re.search(self.REACTIVATE_PASSPORT_PATTERN, self.html) if m: passport_num = m.group(1) -- cgit v1.2.3 From 99f1eff391ca832740d1d519e8d6724a00fba952 Mon Sep 17 00:00:00 2001 From: Walter Purcaro <vuolter@gmail.com> Date: Wed, 22 Oct 2014 02:04:46 +0200 Subject: [SimpleCrypter] Fix missing TEXT_ENCODING routine --- module/plugins/internal/SimpleCrypter.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'module') diff --git a/module/plugins/internal/SimpleCrypter.py b/module/plugins/internal/SimpleCrypter.py index b09ee6ac2..e2e08bb1b 100644 --- a/module/plugins/internal/SimpleCrypter.py +++ b/module/plugins/internal/SimpleCrypter.py @@ -12,7 +12,7 @@ from module.utils import fixup, html_unescape class SimpleCrypter(Crypter): __name__ = "SimpleCrypter" __type__ = "crypter" - __version__ = "0.17" + __version__ = "0.18" __pattern__ = None @@ -88,7 +88,7 @@ class SimpleCrypter(Crypter): set_cookies(self.req.cj, self.COOKIES) url = self.pyfile.url = replace_patterns(self.pyfile.url, self.URL_REPLACEMENTS) - self.html = getURL(url, decode=not self.TEXT_ENCODING, cookies=self.COOKIES) + self.html = getURL(url, decode=not self.TEXT_ENCODING, cookies=bool(self.COOKIES)) def decrypt(self, pyfile): @@ -127,6 +127,9 @@ class SimpleCrypter(Crypter): def getPackageNameAndFolder(self): + if isinstance(self.TEXT_ENCODING, basestring): + self.html = unicode(html, self.TEXT_ENCODING) + if hasattr(self, 'TITLE_PATTERN'): try: m = re.search(self.TITLE_PATTERN, self.html) -- cgit v1.2.3 From b409e7782d48830489f47cc2364b4728d98f363a Mon Sep 17 00:00:00 2001 From: Walter Purcaro <vuolter@gmail.com> Date: Wed, 22 Oct 2014 02:06:31 +0200 Subject: Improve COOKIES parsing --- module/plugins/internal/SimpleHoster.py | 5 +++-- module/plugins/internal/XFSPHoster.py | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) (limited to 'module') diff --git a/module/plugins/internal/SimpleHoster.py b/module/plugins/internal/SimpleHoster.py index 6fc61460a..74910692f 100644 --- a/module/plugins/internal/SimpleHoster.py +++ b/module/plugins/internal/SimpleHoster.py @@ -67,7 +67,7 @@ def parseHtmlForm(attr_str, html, input_names=None): return {}, None # no matching form found -def parseFileInfo(self, url='', html=''): +def parseFileInfo(self, url="", html=""): info = {"name": url, "size": 0, "status": 3} if hasattr(self, "pyfile"): @@ -129,6 +129,7 @@ def create_getInfo(plugin): cj = CookieJar(plugin.__name__) if isinstance(plugin.COOKIES, list): set_cookies(cj, plugin.COOKIES) + file_info = parseFileInfo(plugin, url, getURL(replace_patterns(url, plugin.FILE_URL_REPLACEMENTS), decode=not plugin.TEXT_ENCODING, cookies=cj)) yield file_info @@ -208,7 +209,7 @@ class SimpleHoster(Hoster): self.req.setOption("timeout", 120) url = self.pyfile.url = replace_patterns(self.pyfile.url, self.FILE_URL_REPLACEMENTS) - self.html = getURL(url, decode=not self.TEXT_ENCODING, cookies=self.COOKIES) + self.html = getURL(url, decode=not self.TEXT_ENCODING, cookies=bool(self.COOKIES)) def process(self, pyfile): diff --git a/module/plugins/internal/XFSPHoster.py b/module/plugins/internal/XFSPHoster.py index 14c8302e1..5d75e41a7 100644 --- a/module/plugins/internal/XFSPHoster.py +++ b/module/plugins/internal/XFSPHoster.py @@ -76,7 +76,7 @@ class XFSPHoster(SimpleHoster): self.passwords = self.getPassword().splitlines() url = self.pyfile.url = replace_patterns(self.pyfile.url, self.FILE_URL_REPLACEMENTS) - self.html = getURL(url, decode=not self.TEXT_ENCODING, cookies=self.COOKIES) + self.html = getURL(url, decode=not self.TEXT_ENCODING, cookies=bool(self.COOKIES)) def process(self, pyfile): -- cgit v1.2.3 From e24a10387d38c706839a4d86e1b23780c52e9a5b Mon Sep 17 00:00:00 2001 From: eerozeteen <eerozeteen@gmail.com> Date: Wed, 22 Oct 2014 08:22:31 +0200 Subject: Update Captcha9kw.py syntax error, added missing parentheses --- module/plugins/hooks/Captcha9kw.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'module') diff --git a/module/plugins/hooks/Captcha9kw.py b/module/plugins/hooks/Captcha9kw.py index 7c1fa40fd..4eb7e0ffc 100755 --- a/module/plugins/hooks/Captcha9kw.py +++ b/module/plugins/hooks/Captcha9kw.py @@ -130,7 +130,7 @@ class Captcha9kw(Hook): "pyload": "1", "source": "pyload", "id": task.data['ticket']}) - self.logInfo(_("Request correct", response) + self.logInfo(_("Request correct"), response) except BadHeader, e: self.logError(_("Could not send correct request."), e) @@ -149,7 +149,7 @@ class Captcha9kw(Hook): "pyload": "1", "source": "pyload", "id": task.data['ticket']}) - self.logInfo(_("Request refund", response) + self.logInfo(_("Request refund"), response) except BadHeader, e: self.logError(_("Could not send refund request."), e) -- cgit v1.2.3 From 6badd4f1f210d2e9385c4d73c5b41ee5a6f04e65 Mon Sep 17 00:00:00 2001 From: Walter Purcaro <vuolter@gmail.com> Date: Wed, 22 Oct 2014 09:59:16 +0200 Subject: Improve error method + fix TEXT_ENCODING in SimpleCrypter --- module/plugins/Plugin.py | 6 ++++++ module/plugins/internal/SimpleCrypter.py | 15 +++++++++------ module/plugins/internal/SimpleHoster.py | 9 +++++---- 3 files changed, 20 insertions(+), 10 deletions(-) (limited to 'module') diff --git a/module/plugins/Plugin.py b/module/plugins/Plugin.py index 57da4d114..83571345c 100644 --- a/module/plugins/Plugin.py +++ b/module/plugins/Plugin.py @@ -13,6 +13,7 @@ if os.name != "nt": from grp import getgrnam from itertools import islice +from traceback import print_exc from module.utils import save_join, save_path, fs_encode, fs_decode @@ -284,6 +285,11 @@ class Plugin(Base): """ fail and give reason """ raise Fail(reason) + def error(self, reason=None, type="parse"): + raise Fail("%s error%s | Plugin out of date" % (type.capitalize(), ':' + str(reason) if reason else "")) + if self.core.debug: + print_exc() + def offline(self): """ fail and indicate file is offline """ raise Fail("offline") diff --git a/module/plugins/internal/SimpleCrypter.py b/module/plugins/internal/SimpleCrypter.py index e2e08bb1b..2ea8d302b 100644 --- a/module/plugins/internal/SimpleCrypter.py +++ b/module/plugins/internal/SimpleCrypter.py @@ -2,6 +2,8 @@ import re +from traceback import print_exc + from module.network.RequestFactory import getURL from module.plugins.Crypter import Crypter from module.plugins.Plugin import Fail @@ -12,7 +14,7 @@ from module.utils import fixup, html_unescape class SimpleCrypter(Crypter): __name__ = "SimpleCrypter" __type__ = "crypter" - __version__ = "0.18" + __version__ = "0.19" __pattern__ = None @@ -65,6 +67,7 @@ class SimpleCrypter(Crypter): LOGIN_PREMIUM = False + #@TODO: remove in 0.4.10 def init(self): account_name = (self.__name__ + ".py").replace("Folder.py", "").replace(".py", "") account = self.core.accountManager.getAccountPlugin(account_name) @@ -128,7 +131,7 @@ class SimpleCrypter(Crypter): def getPackageNameAndFolder(self): if isinstance(self.TEXT_ENCODING, basestring): - self.html = unicode(html, self.TEXT_ENCODING) + self.html = unicode(self.html, self.TEXT_ENCODING) if hasattr(self, 'TITLE_PATTERN'): try: @@ -160,8 +163,8 @@ class SimpleCrypter(Crypter): self.package_links += self.getLinks() + #@TODO: remove in 0.4.10 def error(self, reason=None, type="parse"): - if reason: - raise Fail("%s error: %s | Plugin may be out of date" % (type.capitalize(), reason)) - else: - raise Fail("%s error | Plugin out of date" % type.capitalize()) + raise Fail("%s error%s | Plugin out of date" % (type.capitalize(), ':' + str(reason) if reason else "")) + if self.core.debug: + print_exc() diff --git a/module/plugins/internal/SimpleHoster.py b/module/plugins/internal/SimpleHoster.py index 74910692f..17543ba8d 100644 --- a/module/plugins/internal/SimpleHoster.py +++ b/module/plugins/internal/SimpleHoster.py @@ -3,6 +3,7 @@ import re from time import time +from traceback import print_exc from urlparse import urlparse from module.network.CookieJar import CookieJar @@ -321,8 +322,8 @@ class SimpleHoster(Hoster): super(SimpleHoster, self).wait() + #@TODO: remove in 0.4.10 def error(self, reason=None, type="parse"): - if reason: - raise Fail("%s error: %s | Plugin may be out of date" % (type.capitalize(), reason)) - else: - raise Fail("%s error | Plugin out of date" % type.capitalize()) + raise Fail("%s error%s | Plugin out of date" % (type.capitalize(), ':' + str(reason) if reason else "")) + if self.core.debug: + print_exc() -- cgit v1.2.3 From f7b87385de7bb559422c5da1f9ef2ef768a6355b Mon Sep 17 00:00:00 2001 From: zapp-brannigan <zapp-brannigan@users.noreply.github.com> Date: Wed, 22 Oct 2014 10:11:51 +0200 Subject: LoadTo.py] Improve checkDownload Sometimes, files are not downloaded properly. You receive a html-page instead of the desired file. It happens mostly on small files, but it isn't reproducable. Restarting the link solves the issue. --- module/plugins/hoster/LoadTo.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'module') diff --git a/module/plugins/hoster/LoadTo.py b/module/plugins/hoster/LoadTo.py index 6f1fdb575..a28428b73 100644 --- a/module/plugins/hoster/LoadTo.py +++ b/module/plugins/hoster/LoadTo.py @@ -13,7 +13,7 @@ from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo class LoadTo(SimpleHoster): __name__ = "LoadTo" __type__ = "hoster" - __version__ = "0.17" + __version__ = "0.18" __pattern__ = r'http://(?:www\.)?load\.to/\w+' @@ -60,11 +60,14 @@ class LoadTo(SimpleHoster): else: captcha_challenge, captcha_response = solvemedia.challenge(captcha_key) self.download(download_url, post={"adcopy_challenge": captcha_challenge, "adcopy_response": captcha_response}) - check = self.checkDownload({"404": re.compile("\A<h1>404 Not Found</h1>")}) + check = self.checkDownload({'404': re.compile("\A<h1>404 Not Found</h1>"), 'html': re.compile("html")}) if check == "404": self.logWarning("The captcha you entered was incorrect. Please try again.") self.invalidCaptcha() self.retry() + elif check == "html": + self.logWarning("Downloaded file is an html page, will retry") + self.retry() getInfo = create_getInfo(LoadTo) -- cgit v1.2.3 From f00dbe52cee93a0aad9b6747419ff7271adb6e84 Mon Sep 17 00:00:00 2001 From: Walter Purcaro <vuolter@gmail.com> Date: Wed, 22 Oct 2014 10:12:21 +0200 Subject: Code cosmetics --- module/plugins/hooks/Captcha9kw.py | 2 +- module/plugins/hoster/DevhostSt.py | 2 +- module/plugins/hoster/DropboxCom.py | 2 +- module/plugins/hoster/FilepupNet.py | 2 +- module/plugins/hoster/KingfilesNet.py | 2 +- module/plugins/hoster/SpeedyshareCom.py | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) (limited to 'module') diff --git a/module/plugins/hooks/Captcha9kw.py b/module/plugins/hooks/Captcha9kw.py index 4eb7e0ffc..6485db22b 100755 --- a/module/plugins/hooks/Captcha9kw.py +++ b/module/plugins/hooks/Captcha9kw.py @@ -15,7 +15,7 @@ from module.plugins.Hook import Hook class Captcha9kw(Hook): __name__ = "Captcha9kw" __type__ = "hook" - __version__ = "0.09" + __version__ = "0.10" __config__ = [("activated", "bool", "Activated", False), ("force", "bool", "Force CT even if client is connected", True), diff --git a/module/plugins/hoster/DevhostSt.py b/module/plugins/hoster/DevhostSt.py index 6ad6a551f..643538e4d 100644 --- a/module/plugins/hoster/DevhostSt.py +++ b/module/plugins/hoster/DevhostSt.py @@ -43,7 +43,7 @@ class DevhostSt(SimpleHoster): check = self.checkDownload({'html': re.compile("html")}) if check == "html": - self.error("Downloaded file is an html file") + self.error("Downloaded file is an html page") getInfo = create_getInfo(DevhostSt) diff --git a/module/plugins/hoster/DropboxCom.py b/module/plugins/hoster/DropboxCom.py index c0f8e8306..efc711bd4 100644 --- a/module/plugins/hoster/DropboxCom.py +++ b/module/plugins/hoster/DropboxCom.py @@ -36,7 +36,7 @@ class DropboxCom(SimpleHoster): check = self.checkDownload({'html': re.compile("html")}) if check == "html": - self.error("Downloaded file is an html file") + self.error("Downloaded file is an html page") getInfo = create_getInfo(DropboxCom) diff --git a/module/plugins/hoster/FilepupNet.py b/module/plugins/hoster/FilepupNet.py index 366cefc88..2a1c43913 100644 --- a/module/plugins/hoster/FilepupNet.py +++ b/module/plugins/hoster/FilepupNet.py @@ -45,7 +45,7 @@ class FilepupNet(SimpleHoster): check = self.checkDownload({'html': re.compile("html")}) if check == "html": - self.error("Downloaded file is an html file") + self.error("Downloaded file is an html page") getInfo = create_getInfo(FilepupNet) diff --git a/module/plugins/hoster/KingfilesNet.py b/module/plugins/hoster/KingfilesNet.py index c6dbd1e5c..7211aa378 100644 --- a/module/plugins/hoster/KingfilesNet.py +++ b/module/plugins/hoster/KingfilesNet.py @@ -81,7 +81,7 @@ class KingfilesNet(SimpleHoster): check = self.checkDownload({'html': re.compile("<html>")}) if check == "html": - self.error("Downloaded file is an html file") + self.error("Downloaded file is an html page") getInfo = create_getInfo(KingfilesNet) diff --git a/module/plugins/hoster/SpeedyshareCom.py b/module/plugins/hoster/SpeedyshareCom.py index 0696ae810..98d74631f 100644 --- a/module/plugins/hoster/SpeedyshareCom.py +++ b/module/plugins/hoster/SpeedyshareCom.py @@ -45,7 +45,7 @@ class SpeedyshareCom(SimpleHoster): check = self.checkDownload({'html': re.compile("html")}) if check == "html": - self.error("Downloaded file is an html file") + self.error("Downloaded file is an html page") getInfo = create_getInfo(SpeedyshareCom) -- cgit v1.2.3 From 0672bc1e4a19aeff19416084de3d68cff4a5b390 Mon Sep 17 00:00:00 2001 From: Walter Purcaro <vuolter@gmail.com> Date: Wed, 22 Oct 2014 14:30:37 +0200 Subject: [FilerNet] Revert last revert XD --- module/plugins/hoster/FilerNet.py | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) (limited to 'module') diff --git a/module/plugins/hoster/FilerNet.py b/module/plugins/hoster/FilerNet.py index 7a850a849..6d62dfde8 100644 --- a/module/plugins/hoster/FilerNet.py +++ b/module/plugins/hoster/FilerNet.py @@ -16,7 +16,7 @@ from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo class FilerNet(SimpleHoster): __name__ = "FilerNet" __type__ = "hoster" - __version__ = "0.06" + __version__ = "0.07" __pattern__ = r'https?://(?:www\.)?filer\.net/get/(\w+)' @@ -30,15 +30,6 @@ class FilerNet(SimpleHoster): LINK_PATTERN = r'href="([^"]+)">Get download</a>' - RECAPTCHA_KEY = "6LcFctISAAAAAAgaeHgyqhNecGJJRnxV1m_vAz3V" - - - def process(self, pyfile): - if self.premium and (not self.FORCE_CHECK_TRAFFIC or self.checkTrafficLeft()): - self.handlePremium() - else: - self.handleFree() - def handleFree(self): # Wait between downloads @@ -47,8 +38,6 @@ class FilerNet(SimpleHoster): waittime = int(m.group(1)) self.retry(3, waittime, "Wait between free downloads") - self.getFileInfo() - self.html = self.load(self.pyfile.url, decode=True) inputs = self.parseHtmlForm(input_names='token')[1] @@ -69,8 +58,12 @@ class FilerNet(SimpleHoster): recaptcha = ReCaptcha(self) + captcha_key = recaptcha.detect_key() + if captcha_key is None: + self.parseError("ReCaptcha key not found") + for _ in xrange(5): - challenge, response = recaptcha.challenge(self.RECAPTCHA_KEY) + challenge, response = recaptcha.challenge(captcha_key) post_data = {'recaptcha_challenge_field': challenge, 'recaptcha_response_field': response, 'hash': hash_data} -- cgit v1.2.3 From fe5c86946dfc2c539b4e2a59128275c1fe506493 Mon Sep 17 00:00:00 2001 From: Walter Purcaro <vuolter@gmail.com> Date: Wed, 22 Oct 2014 14:31:45 +0200 Subject: [CaptchaService] Fix KEY_PATTERN --- module/plugins/internal/CaptchaService.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) (limited to 'module') diff --git a/module/plugins/internal/CaptchaService.py b/module/plugins/internal/CaptchaService.py index 203dda82e..28374899d 100644 --- a/module/plugins/internal/CaptchaService.py +++ b/module/plugins/internal/CaptchaService.py @@ -7,7 +7,7 @@ from random import random class CaptchaService: __name__ = "CaptchaService" - __version__ = "0.12" + __version__ = "0.13" __description__ = """Base captcha service plugin""" __license__ = "GPLv3" @@ -52,14 +52,14 @@ class CaptchaService: class ReCaptcha(CaptchaService): __name__ = "ReCaptcha" - __version__ = "0.05" + __version__ = "0.06" __description__ = """ReCaptcha captcha service plugin""" __license__ = "GPLv3" __authors__ = [("pyLoad Team", "admin@pyload.org")] - KEY_PATTERN = r'https?://(?:www\.)?google\.com/recaptcha/api/challenge\?k=(?P<KEY>[\w-]+)' + KEY_PATTERN = r'recaptcha/api/challenge\?k=(?P<KEY>[\w-]+)' KEY_AJAX_PATTERN = r'Recaptcha\.create\s*\(\s*["\'](?P<KEY>[\w-]+)' @@ -113,15 +113,15 @@ class ReCaptcha(CaptchaService): class AdsCaptcha(CaptchaService): __name__ = "AdsCaptcha" - __version__ = "0.03" + __version__ = "0.04" __description__ = """AdsCaptcha captcha service plugin""" __license__ = "GPLv3" __authors__ = [("pyLoad Team", "admin@pyload.org")] - ID_PATTERN = r'http://api\.adscaptcha\.com/Get\.aspx\?[^"\']*CaptchaId=(?P<ID>\d+)' - KEY_PATTERN = r'http://api\.adscaptcha\.com/Get\.aspx\?[^"\']*PublicKey=(?P<KEY>[\w-]+)' + ID_PATTERN = r'api\.adscaptcha\.com/Get\.aspx\?[^"\']*CaptchaId=(?P<ID>\d+)' + KEY_PATTERN = r'api\.adscaptcha\.com/Get\.aspx\?[^"\']*PublicKey=(?P<KEY>[\w-]+)' def detect_key(self, html=None): @@ -175,14 +175,14 @@ class AdsCaptcha(CaptchaService): class SolveMedia(CaptchaService): __name__ = "SolveMedia" - __version__ = "0.04" + __version__ = "0.05" __description__ = """SolveMedia captcha service plugin""" __license__ = "GPLv3" __authors__ = [("pyLoad Team", "admin@pyload.org")] - KEY_PATTERN = r'http://api\.solvemedia\.com/papi/challenge\.(no)?script\?k=(?P<KEY>.+?)["\']' + KEY_PATTERN = r'api\.solvemedia\.com/papi/challenge\.(no)?script\?k=(?P<KEY>.+?)["\']' def challenge(self, key=None): -- cgit v1.2.3 From 166a0c3e33cebc81ce9440a93042befa595e2a87 Mon Sep 17 00:00:00 2001 From: Walter Purcaro <vuolter@gmail.com> Date: Wed, 22 Oct 2014 16:40:30 +0200 Subject: [Keep2shareCC] Fix CAPTCHA_PATTERN --- module/plugins/hoster/Keep2shareCC.py | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) (limited to 'module') diff --git a/module/plugins/hoster/Keep2shareCC.py b/module/plugins/hoster/Keep2shareCC.py index 1da65f3c8..26a50bb61 100644 --- a/module/plugins/hoster/Keep2shareCC.py +++ b/module/plugins/hoster/Keep2shareCC.py @@ -11,13 +11,14 @@ from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo class Keep2shareCC(SimpleHoster): __name__ = "Keep2shareCC" __type__ = "hoster" - __version__ = "0.11" + __version__ = "0.12" __pattern__ = r'https?://(?:www\.)?(keep2share|k2s|keep2s)\.cc/file/(?P<ID>\w+)' __description__ = """Keep2share.cc hoster plugin""" __license__ = "GPLv3" - __authors__ = [("stickell", "l.stickell@yahoo.it")] + __authors__ = [("stickell", "l.stickell@yahoo.it"), + ("Walter Purcaro", "vuolter@gmail.com")] FILE_NAME_PATTERN = r'File: <span>(?P<N>.+)</span>' @@ -25,6 +26,7 @@ class Keep2shareCC(SimpleHoster): OFFLINE_PATTERN = r'File not found or deleted|Sorry, this file is blocked or deleted|Error 404' LINK_PATTERN = r'To download this file with slow speed, use <a href="([^"]+)">this link</a>' + CAPTCHA_PATTERN = r'src="(/file/captcha\.html.+?)"' WAIT_PATTERN = r'Please wait ([\d:]+) to download this file' MULTIDL_ERROR = r'Free account does not allow to download more than one file at the same time' @@ -69,17 +71,14 @@ class Keep2shareCC(SimpleHoster): def handleCaptcha(self): - recaptcha = ReCaptcha(self) + m = re.search(self.CAPTCHA_PATTERN, self.html) + if m is None: + self.error("Captcha key not found") - captcha_key = recaptcha.detect_key() - if captcha_key is None: - self.error("ReCaptcha key not found") + captcha_url = urljoin(self.base_url, m.group(1)) for _ in xrange(5): - challenge, response = recaptcha.challenge(captcha_key) - post_data = {'recaptcha_challenge_field': challenge, - 'recaptcha_response_field': response, - 'CaptchaForm%5Bcode%5D': '', + post_data = {'CaptchaForm[code]': self.decryptCaptcha(captcha_url), 'free': 1, 'freeDownloadRequest': 1, 'uniqueId': self.fid, -- cgit v1.2.3 From 1b096b2eb2634e8dea80b06ab9ecde206b198b35 Mon Sep 17 00:00:00 2001 From: Walter Purcaro <vuolter@gmail.com> Date: Wed, 22 Oct 2014 19:47:00 +0200 Subject: Spare code cosmetics --- module/plugins/Plugin.py | 2 +- module/plugins/hoster/BezvadataCz.py | 2 +- module/plugins/hoster/CrockoCom.py | 4 ++-- module/plugins/hoster/DataHu.py | 6 ++++-- module/plugins/hoster/DataportCz.py | 2 +- module/plugins/hoster/DepositfilesCom.py | 2 -- module/plugins/hoster/FastshareCz.py | 19 +++++++------------ module/plugins/hoster/FilefactoryCom.py | 1 - module/plugins/hoster/FilerNet.py | 5 ++--- module/plugins/hoster/LomafileCom.py | 2 +- module/plugins/hoster/MegaRapidCz.py | 4 ++-- module/plugins/hoster/OneFichierCom.py | 1 - module/plugins/hoster/ShareonlineBiz.py | 25 +++++++++---------------- module/plugins/hoster/TurbobitNet.py | 5 ++--- module/plugins/hoster/UploadheroCom.py | 1 - module/plugins/internal/CaptchaService.py | 22 +++++++++++----------- module/plugins/internal/SimpleCrypter.py | 2 +- module/plugins/internal/SimpleHoster.py | 2 +- module/plugins/internal/XFSPHoster.py | 4 ++-- 19 files changed, 47 insertions(+), 64 deletions(-) (limited to 'module') diff --git a/module/plugins/Plugin.py b/module/plugins/Plugin.py index 83571345c..0a4b6d44d 100644 --- a/module/plugins/Plugin.py +++ b/module/plugins/Plugin.py @@ -286,7 +286,7 @@ class Plugin(Base): raise Fail(reason) def error(self, reason=None, type="parse"): - raise Fail("%s error%s | Plugin out of date" % (type.capitalize(), ':' + str(reason) if reason else "")) + raise Fail("%s error%s | Plugin out of date" % (type.capitalize(), ': ' + str(reason) if reason else "")) if self.core.debug: print_exc() diff --git a/module/plugins/hoster/BezvadataCz.py b/module/plugins/hoster/BezvadataCz.py index dcf9bf293..ffd586f74 100644 --- a/module/plugins/hoster/BezvadataCz.py +++ b/module/plugins/hoster/BezvadataCz.py @@ -77,7 +77,7 @@ class BezvadataCz(SimpleHoster): def checkErrors(self): if 'images/button-download-disable.png' in self.html: - self.longWait(5 * 60, 24) # parallel dl limit + self.longWait(5 * 60, 24) #: parallel dl limit elif '<div class="infobox' in self.html: self.tempOffline() diff --git a/module/plugins/hoster/CrockoCom.py b/module/plugins/hoster/CrockoCom.py index f685d7452..15bf25ad2 100644 --- a/module/plugins/hoster/CrockoCom.py +++ b/module/plugins/hoster/CrockoCom.py @@ -22,7 +22,7 @@ class CrockoCom(SimpleHoster): FILE_SIZE_PATTERN = r'<span class="tip1"><span class="inner">(?P<S>[^<]+)</span></span>' OFFLINE_PATTERN = r'<h1>Sorry,<br />the page you\'re looking for <br />isn\'t here.</h1>|File not found' - CAPTCHA_URL_PATTERN = re.compile(r"u='(/file_contents/captcha/\w+)';\s*w='(\d+)';") + CAPTCHA_PATTERN = re.compile(r"u='(/file_contents/captcha/\w+)';\s*w='(\d+)';") FORM_PATTERN = r'<form method="post" action="([^"]+)">(.*?)</form>' FORM_INPUT_PATTERN = r'<input[^>]* name="?([^" ]+)"? value="?([^" ]+)"?[^>]*>' @@ -35,7 +35,7 @@ class CrockoCom(SimpleHoster): self.fail("You need Premium membership to download this file.") for _ in xrange(5): - m = re.search(self.CAPTCHA_URL_PATTERN, self.html) + m = re.search(self.CAPTCHA_PATTERN, self.html) if m: url, wait_time = 'http://crocko.com' + m.group(1), m.group(2) self.wait(wait_time) diff --git a/module/plugins/hoster/DataHu.py b/module/plugins/hoster/DataHu.py index d3a13c54b..d76444d32 100644 --- a/module/plugins/hoster/DataHu.py +++ b/module/plugins/hoster/DataHu.py @@ -26,10 +26,12 @@ class DataHu(SimpleHoster): LINK_PATTERN = r'<div class="download_box_button"><a href="([^"]+)">' - def handleFree(self): + def setup(self): self.resumeDownload = True - self.html = self.load(self.pyfile.url, decode=True) + self.multiDL = self.premium + + def handleFree(self): m = re.search(self.LINK_PATTERN, self.html) if m: url = m.group(1) diff --git a/module/plugins/hoster/DataportCz.py b/module/plugins/hoster/DataportCz.py index c79a21b8e..6fcbfc2ad 100644 --- a/module/plugins/hoster/DataportCz.py +++ b/module/plugins/hoster/DataportCz.py @@ -21,7 +21,7 @@ class DataportCz(SimpleHoster): FILE_URL_REPLACEMENTS = [(__pattern__, r'http://www.dataport.cz/file/\1')] - CAPTCHA_URL_PATTERN = r'<section id="captcha_bg">\s*<img src="(.*?)"' + CAPTCHA_PATTERN = r'<section id="captcha_bg">\s*<img src="(.*?)"' FREE_SLOTS_PATTERN = ur'Počet volných slotů: <span class="darkblue">(\d+)</span><br />' diff --git a/module/plugins/hoster/DepositfilesCom.py b/module/plugins/hoster/DepositfilesCom.py index d49b3fc94..ade91e7d4 100644 --- a/module/plugins/hoster/DepositfilesCom.py +++ b/module/plugins/hoster/DepositfilesCom.py @@ -102,8 +102,6 @@ class DepositfilesCom(SimpleHoster): self.retry(wait_time=60) def handlePremium(self): - self.html = self.load(self.pyfile.url, cookies=self.COOKIES) - if '<span class="html_download_api-gold_traffic_limit">' in self.html: self.logWarning("Download limit reached") self.retry(25, 60 * 60, "Download limit reached") diff --git a/module/plugins/hoster/FastshareCz.py b/module/plugins/hoster/FastshareCz.py index 337977095..2a8d3af7d 100644 --- a/module/plugins/hoster/FastshareCz.py +++ b/module/plugins/hoster/FastshareCz.py @@ -64,20 +64,15 @@ class FastshareCz(SimpleHoster): header = self.load(self.pyfile.url, just_header=True) if "location" in header: url = header['location'] + elif self.CREDIT_PATTERN in self.html: + self.logWarning("Not enough traffic left") + self.resetAccount() else: - self.html = self.load(self.pyfile.url) - - self.getFileInfo() # - - if self.CREDIT_PATTERN in self.html: - self.logWarning("Not enough traffic left") - self.resetAccount() + m = re.search(self.PREMIUM_URL_PATTERN, self.html) + if m: + url = m.group(1) else: - m = re.search(self.PREMIUM_URL_PATTERN, self.html) - if m: - url = m.group(1) - else: - self.error("Premium URL") + self.error("Premium URL") self.logDebug("PREMIUM URL: " + url) self.download(url, disposition=True) diff --git a/module/plugins/hoster/FilefactoryCom.py b/module/plugins/hoster/FilefactoryCom.py index 0e422f108..a5942e261 100644 --- a/module/plugins/hoster/FilefactoryCom.py +++ b/module/plugins/hoster/FilefactoryCom.py @@ -38,7 +38,6 @@ class FilefactoryCom(SimpleHoster): def handleFree(self): - self.html = self.load(self.pyfile.url, decode=True) if "Currently only Premium Members can download files larger than" in self.html: self.fail("File too large for free download") elif "All free download slots on this server are currently in use" in self.html: diff --git a/module/plugins/hoster/FilerNet.py b/module/plugins/hoster/FilerNet.py index 6d62dfde8..7a8d49378 100644 --- a/module/plugins/hoster/FilerNet.py +++ b/module/plugins/hoster/FilerNet.py @@ -18,7 +18,7 @@ class FilerNet(SimpleHoster): __type__ = "hoster" __version__ = "0.07" - __pattern__ = r'https?://(?:www\.)?filer\.net/get/(\w+)' + __pattern__ = r'https?://(?:www\.)?filer\.net/get/\w+' __description__ = """Filer.net hoster plugin""" __license__ = "GPLv3" @@ -35,8 +35,7 @@ class FilerNet(SimpleHoster): # Wait between downloads m = re.search(r'musst du <span id="time">(\d+)</span> Sekunden warten', self.html) if m: - waittime = int(m.group(1)) - self.retry(3, waittime, "Wait between free downloads") + self.retry(wait_time=int(m.group(1)), reason="Wait between free downloads") self.html = self.load(self.pyfile.url, decode=True) diff --git a/module/plugins/hoster/LomafileCom.py b/module/plugins/hoster/LomafileCom.py index 0c7e03484..1c86b16e8 100644 --- a/module/plugins/hoster/LomafileCom.py +++ b/module/plugins/hoster/LomafileCom.py @@ -24,7 +24,7 @@ class LomafileCom(XFSPHoster): OFFLINE_PATTERN = r'>(No such file|Software error:<)' TEMP_OFFLINE_PATTERN = r'The page may have been renamed, removed or be temporarily unavailable.<' - CAPTCHA_URL_PATTERN = r'(http://lomafile\.com/captchas/[^"\']+)' + CAPTCHA_PATTERN = r'(http://lomafile\.com/captchas/[^"\']+)' getInfo = create_getInfo(LomafileCom) diff --git a/module/plugins/hoster/MegaRapidCz.py b/module/plugins/hoster/MegaRapidCz.py index 06e6626c6..153f6ea8b 100644 --- a/module/plugins/hoster/MegaRapidCz.py +++ b/module/plugins/hoster/MegaRapidCz.py @@ -53,7 +53,7 @@ class MegaRapidCz(SimpleHoster): self.html = self.load(self.pyfile.url, decode=True) except BadHeader, e: self.account.relogin(self.user) - self.retry(max_tries=3, reason=str(e)) + self.retry(wait_time=60, reason=str(e)) m = re.search(self.LINK_PATTERN, self.html) if m: @@ -63,7 +63,7 @@ class MegaRapidCz(SimpleHoster): else: if re.search(self.ERR_LOGIN_PATTERN, self.html): self.relogin(self.user) - self.retry(max_tries=3, reason="User login failed") + self.retry(wait_time=60, reason="User login failed") elif re.search(self.ERR_CREDIT_PATTERN, self.html): self.fail("Not enough credit left") else: diff --git a/module/plugins/hoster/OneFichierCom.py b/module/plugins/hoster/OneFichierCom.py index e6e193b89..3f3d0a19a 100644 --- a/module/plugins/hoster/OneFichierCom.py +++ b/module/plugins/hoster/OneFichierCom.py @@ -37,7 +37,6 @@ class OneFichierCom(SimpleHoster): def handleFree(self): - self.html = self.load(self.pyfile.url, decode=True) m = re.search(self.WAIT_PATTERN, self.html) if m: wait_time = int(m.group(1)) + 1 #: One minute more than what the page displays to be safe diff --git a/module/plugins/hoster/ShareonlineBiz.py b/module/plugins/hoster/ShareonlineBiz.py index 7a73ab316..b7c112a45 100644 --- a/module/plugins/hoster/ShareonlineBiz.py +++ b/module/plugins/hoster/ShareonlineBiz.py @@ -55,38 +55,28 @@ class ShareonlineBiz(Hoster): def setup(self): - # range request not working? - # api supports resume, only one chunk - # website isn't supporting resuming in first place self.file_id = re.match(self.__pattern__, self.pyfile.url).group("ID") self.pyfile.url = "http://www.share-online.biz/dl/" + self.file_id self.resumeDownload = self.premium self.multiDL = False - #self.chunkLimit = 1 self.check_data = None + def process(self, pyfile): if self.premium: self.handlePremium() - #web-download fallback removed - didn't work anyway else: self.handleFree() - # check = self.checkDownload({"failure": re.compile(self.ERROR_INFO_PATTERN)}) - # if check == "failure": - # try: - # self.retry(reason=self.lastCheck.group(1).decode("utf8")) - # except: - # self.retry(reason="Unknown error") - if self.api_data: self.check_data = {"size": int(self.api_data['size']), "md5": self.api_data['md5']} + def loadAPIData(self): api_url_base = "http://api.share-online.biz/linkcheck.php?md5=1" - api_param_file = {"links": self.file_id} # api only supports old style links + api_param_file = {"links": self.file_id} #: api only supports old style links src = self.load(api_url_base, cookies=False, post=api_param_file, decode=True) fields = src.split(";") @@ -96,15 +86,16 @@ class ShareonlineBiz(Hoster): self.offline() else: self.api_data['filename'] = fields[2] - self.api_data['size'] = fields[3] # in bytes - self.api_data['md5'] = fields[4].strip().lower().replace("\n\n", "") # md5 + self.api_data['size'] = fields[3] #: in bytes + self.api_data['md5'] = fields[4].strip().lower().replace("\n\n", "") #: md5 + def handleFree(self): self.loadAPIData() self.pyfile.name = self.api_data['filename'] self.pyfile.size = int(self.api_data['size']) - self.html = self.load(self.pyfile.url, cookies=True) # refer, stuff + self.html = self.load(self.pyfile.url, cookies=True) #: refer, stuff self.setWait(3) self.wait() @@ -152,6 +143,7 @@ class ShareonlineBiz(Hoster): else: self.correctCaptcha() + def handlePremium(self): #: should be working better loading (account) api internally self.account.getAccountInfo(self.user, True) src = self.load("http://api.share-online.biz/account.php", @@ -177,6 +169,7 @@ class ShareonlineBiz(Hoster): self.multiDL = True self.download(dlLink) + def checkErrors(self): m = re.search(r"/failure/(.*?)/1", self.req.lastEffectiveURL) if m is None: diff --git a/module/plugins/hoster/TurbobitNet.py b/module/plugins/hoster/TurbobitNet.py index 8557e0ce7..ded926010 100644 --- a/module/plugins/hoster/TurbobitNet.py +++ b/module/plugins/hoster/TurbobitNet.py @@ -38,7 +38,7 @@ class TurbobitNet(SimpleHoster): LINK_PATTERN = r'(?P<url>/download/redirect/[^"\']+)' LIMIT_WAIT_PATTERN = r'<div id=\'timeout\'>(\d+)<' - CAPTCHA_URL_PATTERN = r'<img alt="Captcha" src="(.+?)"' + CAPTCHA_PATTERN = r'<img alt="Captcha" src="(.+?)"' def handleFree(self): @@ -78,7 +78,7 @@ class TurbobitNet(SimpleHoster): inputs['recaptcha_challenge_field'], inputs['recaptcha_response_field'] = recaptcha.challenge(captcha_key) else: - m = re.search(self.CAPTCHA_URL_PATTERN, self.html) + m = re.search(self.CAPTCHA_PATTERN, self.html) if m is None: self.error('captcha') captcha_url = m.group(1) @@ -165,7 +165,6 @@ class TurbobitNet(SimpleHoster): def handlePremium(self): self.logDebug("Premium download as user %s" % self.user) - self.html = self.load(self.pyfile.url) # Useless in 0.5 self.downloadFile() diff --git a/module/plugins/hoster/UploadheroCom.py b/module/plugins/hoster/UploadheroCom.py index 3c26a0b8b..753ad6807 100644 --- a/module/plugins/hoster/UploadheroCom.py +++ b/module/plugins/hoster/UploadheroCom.py @@ -60,7 +60,6 @@ class UploadheroCom(SimpleHoster): def handlePremium(self): self.logDebug("%s: Use Premium Account" % self.__name__) - self.html = self.load(self.pyfile.url) link = re.search(self.PREMIUM_URL_PATTERN, self.html).group(1) self.logDebug("Downloading link : '%s'" % link) self.download(link) diff --git a/module/plugins/internal/CaptchaService.py b/module/plugins/internal/CaptchaService.py index 28374899d..6d3fc0feb 100644 --- a/module/plugins/internal/CaptchaService.py +++ b/module/plugins/internal/CaptchaService.py @@ -16,7 +16,7 @@ class CaptchaService: KEY_PATTERN = None - key = None + key = None #: last key detected def __init__(self, plugin): @@ -28,7 +28,7 @@ class CaptchaService: if hasattr(self.plugin, "html") and self.plugin.html: html = self.plugin.html else: - errmsg = "%s html missing" % self.__name__ + errmsg = "%s html not found" % self.__name__ self.plugin.fail(errmsg) raise TypeError(errmsg) @@ -68,7 +68,7 @@ class ReCaptcha(CaptchaService): if hasattr(self.plugin, "html") and self.plugin.html: html = self.plugin.html else: - errmsg = "ReCaptcha html missing" + errmsg = "ReCaptcha not found" self.plugin.fail(errmsg) raise TypeError(errmsg) @@ -86,10 +86,10 @@ class ReCaptcha(CaptchaService): def challenge(self, key=None): if not key: - if self.key: + if self.detect_key(): key = self.key else: - errmsg = "ReCaptcha key missing" + errmsg = "ReCaptcha key not found" self.plugin.fail(errmsg) raise TypeError(errmsg) @@ -129,7 +129,7 @@ class AdsCaptcha(CaptchaService): if hasattr(self.plugin, "html") and self.plugin.html: html = self.plugin.html else: - errmsg = "AdsCaptcha html missing" + errmsg = "AdsCaptcha html not found" self.plugin.fail(errmsg) raise TypeError(errmsg) @@ -144,12 +144,12 @@ class AdsCaptcha(CaptchaService): return None - def challenge(self, key=None): #: key is tuple(CaptchaId, PublicKey) + def challenge(self, key=None): #: key is a tuple(CaptchaId, PublicKey) if not key: - if self.key: + if self.detect_key(): key = self.key else: - errmsg = "AdsCaptcha key missing" + errmsg = "AdsCaptcha key not found" self.plugin.fail(errmsg) raise TypeError(errmsg) @@ -187,10 +187,10 @@ class SolveMedia(CaptchaService): def challenge(self, key=None): if not key: - if self.key: + if self.detect_key(): key = self.key else: - errmsg = "SolveMedia key missing" + errmsg = "SolveMedia key not found" self.plugin.fail(errmsg) raise TypeError(errmsg) diff --git a/module/plugins/internal/SimpleCrypter.py b/module/plugins/internal/SimpleCrypter.py index 2ea8d302b..613ffce1f 100644 --- a/module/plugins/internal/SimpleCrypter.py +++ b/module/plugins/internal/SimpleCrypter.py @@ -165,6 +165,6 @@ class SimpleCrypter(Crypter): #@TODO: remove in 0.4.10 def error(self, reason=None, type="parse"): - raise Fail("%s error%s | Plugin out of date" % (type.capitalize(), ':' + str(reason) if reason else "")) + raise Fail("%s error%s | Plugin out of date" % (type.capitalize(), ': ' + str(reason) if reason else "")) if self.core.debug: print_exc() diff --git a/module/plugins/internal/SimpleHoster.py b/module/plugins/internal/SimpleHoster.py index 17543ba8d..a8a44d953 100644 --- a/module/plugins/internal/SimpleHoster.py +++ b/module/plugins/internal/SimpleHoster.py @@ -324,6 +324,6 @@ class SimpleHoster(Hoster): #@TODO: remove in 0.4.10 def error(self, reason=None, type="parse"): - raise Fail("%s error%s | Plugin out of date" % (type.capitalize(), ':' + str(reason) if reason else "")) + raise Fail("%s error%s | Plugin out of date" % (type.capitalize(), ': ' + str(reason) if reason else "")) if self.core.debug: print_exc() diff --git a/module/plugins/internal/XFSPHoster.py b/module/plugins/internal/XFSPHoster.py index 5d75e41a7..91a69116c 100644 --- a/module/plugins/internal/XFSPHoster.py +++ b/module/plugins/internal/XFSPHoster.py @@ -46,7 +46,7 @@ class XFSPHoster(SimpleHoster): OVR_LINK_PATTERN = r'<h2>Download Link</h2>\s*<textarea[^>]*>([^<]+)' LINK_PATTERN = None #: final download url pattern - CAPTCHA_URL_PATTERN = r'(http://[^"\']+?/captchas?/[^"\']+)' + CAPTCHA_PATTERN = r'(http://[^"\']+?/captchas?/[^"\']+)' CAPTCHA_DIV_PATTERN = r'>Enter code.*?<div.*?>(.+?)</div>' RECAPTCHA_PATTERN = None SOLVEMEDIA_PATTERN = None @@ -306,7 +306,7 @@ class XFSPHoster(SimpleHoster): def handleCaptcha(self, inputs): - m = re.search(self.CAPTCHA_URL_PATTERN, self.html) + m = re.search(self.CAPTCHA_PATTERN, self.html) if m: captcha_url = m.group(1) inputs['code'] = self.decryptCaptcha(captcha_url) -- cgit v1.2.3 From 0eb6e7ec4a1144dcca824d8add049787d3da1762 Mon Sep 17 00:00:00 2001 From: Walter Purcaro <vuolter@gmail.com> Date: Wed, 22 Oct 2014 19:44:59 +0200 Subject: Two space before function declaration --- module/plugins/AccountManager.py | 11 +++++++++ module/plugins/Hook.py | 16 ++++++++++++ module/plugins/Plugin.py | 33 +++++++++++++++++++++++++ module/plugins/PluginManager.py | 8 ++++++ module/plugins/accounts/EuroshareEu.py | 1 - module/plugins/accounts/FreeWayMe.py | 2 ++ module/plugins/accounts/FshareVn.py | 1 + module/plugins/accounts/OneFichierCom.py | 2 -- module/plugins/accounts/PremiumizeMe.py | 1 + module/plugins/accounts/RPNetBiz.py | 1 + module/plugins/accounts/ShareonlineBiz.py | 1 + module/plugins/accounts/UploadedTo.py | 2 -- module/plugins/accounts/ZeveraCom.py | 1 + module/plugins/captcha/GigasizeCom.py | 1 + module/plugins/captcha/LinksaveIn.py | 5 ++++ module/plugins/captcha/NetloadIn.py | 1 + module/plugins/captcha/ShareonlineBiz.py | 1 + module/plugins/captcha/captcha.py | 12 +++++++++ module/plugins/container/CCF.py | 1 - module/plugins/crypter/DDLMusicOrg.py | 1 + module/plugins/crypter/DailymotionBatch.py | 6 +++++ module/plugins/crypter/DuckCryptInfo.py | 2 ++ module/plugins/crypter/EmbeduploadCom.py | 1 + module/plugins/crypter/HoerbuchIn.py | 1 + module/plugins/crypter/LinkdecrypterCom.py | 5 ++-- module/plugins/crypter/NCryptIn.py | 6 ----- module/plugins/crypter/NetfolderIn.py | 3 +++ module/plugins/crypter/OneKhDe.py | 2 ++ module/plugins/crypter/TurbobitNetFolder.py | 1 + module/plugins/crypter/YoutubeBatch.py | 7 ++++++ module/plugins/hooks/BypassCaptcha.py | 10 ++++++++ module/plugins/hooks/Captcha9kw.py | 5 ++++ module/plugins/hooks/CaptchaBrotherhood.py | 9 +++++++ module/plugins/hooks/Checksum.py | 4 +++ module/plugins/hooks/DeathByCaptcha.py | 12 +++++++++ module/plugins/hooks/DownloadScheduler.py | 3 +++ module/plugins/hooks/ExpertDecoders.py | 4 +++ module/plugins/hooks/ExtractArchive.py | 2 ++ module/plugins/hooks/HotFolder.py | 1 + module/plugins/hooks/IRCInterface.py | 24 ++++++++++++++++++ module/plugins/hooks/ImageTyperz.py | 8 ++++++ module/plugins/hooks/LinkdecrypterCom.py | 1 + module/plugins/hooks/MergeFiles.py | 1 + module/plugins/hooks/MultiHome.py | 8 ++++++ module/plugins/hooks/PremiumTo.py | 1 + module/plugins/hooks/PremiumizeMe.py | 1 + module/plugins/hooks/RPNetBiz.py | 1 + module/plugins/hooks/RehostTo.py | 1 + module/plugins/hooks/RestartFailed.py | 3 +++ module/plugins/hooks/UnSkipOnFail.py | 2 ++ module/plugins/hooks/UpdateManager.py | 12 +++++++++ module/plugins/hooks/WindowsPhoneToastNotify.py | 3 +++ module/plugins/hooks/XMPPInterface.py | 20 +++++++++++++++ module/plugins/hoster/AlldebridCom.py | 2 ++ module/plugins/hoster/BayfilesCom.py | 2 ++ module/plugins/hoster/BezvadataCz.py | 3 +++ module/plugins/hoster/CzshareCom.py | 3 +++ module/plugins/hoster/DailymotionCom.py | 5 ++++ module/plugins/hoster/DateiTo.py | 2 ++ module/plugins/hoster/DebridItaliaCom.py | 1 + module/plugins/hoster/DepositfilesCom.py | 1 + module/plugins/hoster/DlFreeFr.py | 1 + module/plugins/hoster/EdiskCz.py | 1 + module/plugins/hoster/EuroshareEu.py | 2 ++ module/plugins/hoster/FastixRu.py | 2 ++ module/plugins/hoster/FastshareCz.py | 1 + module/plugins/hoster/FileStoreTo.py | 1 + module/plugins/hoster/FilecloudIo.py | 2 ++ module/plugins/hoster/FilefactoryCom.py | 1 + module/plugins/hoster/FilepostCom.py | 1 + module/plugins/hoster/FilesMailRu.py | 5 ++++ module/plugins/hoster/FileserveCom.py | 6 +++++ module/plugins/hoster/FreakshareCom.py | 9 +++++++ module/plugins/hoster/FreeWayMe.py | 1 + module/plugins/hoster/FshareVn.py | 4 +++ module/plugins/hoster/GamefrontCom.py | 4 +++ module/plugins/hoster/GigapetaCom.py | 1 + module/plugins/hoster/GooIm.py | 1 + module/plugins/hoster/HellshareCz.py | 1 + module/plugins/hoster/IfolderRu.py | 1 + module/plugins/hoster/JumbofilesCom.py | 1 + module/plugins/hoster/LetitbitNet.py | 4 ++- module/plugins/hoster/LinksnappyCom.py | 2 ++ module/plugins/hoster/LuckyShareNet.py | 1 + module/plugins/hoster/MediafireCom.py | 3 +++ module/plugins/hoster/MegaDebridEu.py | 4 +++ module/plugins/hoster/MegaRapidCz.py | 1 + module/plugins/hoster/MegacrypterCom.py | 1 + module/plugins/hoster/MultishareCz.py | 4 +++ module/plugins/hoster/MyfastfileCom.py | 1 + module/plugins/hoster/MyvideoDe.py | 4 +++ module/plugins/hoster/NetloadIn.py | 8 ++++++ module/plugins/hoster/NowDownloadEu.py | 1 + module/plugins/hoster/OverLoadMe.py | 2 ++ module/plugins/hoster/PornhostCom.py | 4 +++ module/plugins/hoster/PornhubCom.py | 4 +++ module/plugins/hoster/PremiumTo.py | 2 ++ module/plugins/hoster/QuickshareCz.py | 2 ++ module/plugins/hoster/RPNetBiz.py | 1 + module/plugins/hoster/RapidshareCom.py | 7 ++++++ module/plugins/hoster/RealdebridCom.py | 2 ++ module/plugins/hoster/RedtubeCom.py | 4 +++ module/plugins/hoster/RehostTo.py | 2 ++ module/plugins/hoster/RemixshareCom.py | 1 + module/plugins/hoster/ShareplaceCom.py | 6 +++++ module/plugins/hoster/SimplyPremiumCom.py | 1 + module/plugins/hoster/SimplydebridCom.py | 1 + module/plugins/hoster/StreamCz.py | 2 +- module/plugins/hoster/TwoSharedCom.py | 1 + module/plugins/hoster/UlozTo.py | 5 ++++ module/plugins/hoster/UloziskoSk.py | 1 + module/plugins/hoster/UnrestrictLi.py | 2 ++ module/plugins/hoster/UploadedTo.py | 3 +++ module/plugins/hoster/UploadheroCom.py | 2 ++ module/plugins/hoster/VeehdCom.py | 6 +++++ module/plugins/hoster/VeohCom.py | 1 + module/plugins/hoster/VimeoCom.py | 1 + module/plugins/hoster/WebshareCz.py | 1 + module/plugins/hoster/WrzucTo.py | 1 + module/plugins/hoster/XHamsterCom.py | 4 +++ module/plugins/hoster/Xdcc.py | 2 ++ module/plugins/hoster/YoupornCom.py | 4 +++ module/plugins/hoster/YourfilesTo.py | 6 +++++ module/plugins/hoster/YoutubeCom.py | 2 ++ module/plugins/hoster/ZDF.py | 3 +++ module/plugins/hoster/ZeveraCom.py | 1 + module/plugins/internal/AbstractExtractor.py | 8 ++++++ module/plugins/internal/MultiHoster.py | 11 +++++++++ module/plugins/internal/SimpleCrypter.py | 1 + module/plugins/internal/UnZip.py | 3 +++ 130 files changed, 464 insertions(+), 17 deletions(-) (limited to 'module') diff --git a/module/plugins/AccountManager.py b/module/plugins/AccountManager.py index 4b8063002..b039b5827 100644 --- a/module/plugins/AccountManager.py +++ b/module/plugins/AccountManager.py @@ -14,6 +14,7 @@ ACC_VERSION = 1 class AccountManager(): """manages all accounts""" + #---------------------------------------------------------------------- def __init__(self, core): """Constructor""" @@ -24,6 +25,7 @@ class AccountManager(): self.initPlugins() self.saveAccounts() # save to add categories to conf + def initPlugins(self): self.accounts = {} # key = ( plugin ) self.plugins = {} @@ -31,6 +33,7 @@ class AccountManager(): self.initAccountPlugins() self.loadAccounts() + def getAccountPlugin(self, plugin): """get account instance for plugin or None if anonymous""" if plugin in self.accounts: @@ -41,6 +44,7 @@ class AccountManager(): else: return None + def getAccountPlugins(self): """ get all account instances""" @@ -50,6 +54,7 @@ class AccountManager(): return plugins + #---------------------------------------------------------------------- def loadAccounts(self): """loads all accounts available""" @@ -97,6 +102,7 @@ class AccountManager(): name, sep, pw = line.partition(":") self.accounts[plugin][name] = {"password": pw, "options": {}, "valid": True} + #---------------------------------------------------------------------- def saveAccounts(self): """save all account information""" @@ -117,12 +123,14 @@ class AccountManager(): f.close() chmod(f.name, 0600) + #---------------------------------------------------------------------- def initAccountPlugins(self): """init names""" for name in self.core.pluginManager.getAccountPlugins(): self.accounts[name] = {} + @lock def updateAccount(self, plugin , user, password=None, options={}): """add or update account""" @@ -134,6 +142,7 @@ class AccountManager(): self.saveAccounts() if updated: p.scheduleRefresh(user, force=False) + @lock def removeAccount(self, plugin, user): """remove account""" @@ -144,6 +153,7 @@ class AccountManager(): self.saveAccounts() + @lock def getAccountInfos(self, force=True, refresh=False): data = {} @@ -162,6 +172,7 @@ class AccountManager(): self.core.pullManager.addEvent(e) return data + def sendChange(self): e = AccountUpdateEvent() self.core.pullManager.addEvent(e) diff --git a/module/plugins/Hook.py b/module/plugins/Hook.py index 1e4749cd5..4d43b70f7 100644 --- a/module/plugins/Hook.py +++ b/module/plugins/Hook.py @@ -81,10 +81,12 @@ class Hook(Base): self.initPeriodical() self.setup() + def initPeriodical(self): if self.interval >=1: self.cb = self.core.scheduler.addJob(0, self._periodical, threaded=False) + def _periodical(self): try: if self.isActivated(): self.periodical() @@ -99,14 +101,17 @@ class Hook(Base): def __repr__(self): return "<Hook %s>" % self.__name__ + def setup(self): """ more init stuff if needed """ pass + def unload(self): """ called when hook was deactivated """ pass + def isActivated(self): """ checks if hook is activated""" return self.config.getPlugin(self.__name__, "activated") @@ -116,36 +121,47 @@ class Hook(Base): def coreReady(self): pass + def coreExiting(self): pass + def downloadPreparing(self, pyfile): pass + def downloadFinished(self, pyfile): pass + def downloadFailed(self, pyfile): pass + def packageFinished(self, pypack): pass + def beforeReconnecting(self, ip): pass + def afterReconnecting(self, ip): pass + def periodical(self): pass + def newCaptchaTask(self, task): """ new captcha task for the plugin, it MUST set the handler and timeout or will be ignored """ pass + def captchaCorrect(self, task): pass + def captchaInvalid(self, task): pass diff --git a/module/plugins/Plugin.py b/module/plugins/Plugin.py index 0a4b6d44d..be26a8960 100644 --- a/module/plugins/Plugin.py +++ b/module/plugins/Plugin.py @@ -51,6 +51,7 @@ class Base(object): A Base class with log/config/db methods *all* plugin types can use """ + def __init__(self, core): #: Core instance self.core = core @@ -59,19 +60,24 @@ class Base(object): #: core config self.config = core.config + #log functions def logDebug(self, *args): self.log.debug("%s: %s" % (self.__name__, " | ".join([a if isinstance(a, basestring) else str(a) for a in args if a]))) + def logInfo(self, *args): self.log.info("%s: %s" % (self.__name__, " | ".join([a if isinstance(a, basestring) else str(a) for a in args if a]))) + def logWarning(self, *args): self.log.warning("%s: %s" % (self.__name__, " | ".join([a if isinstance(a, basestring) else str(a) for a in args if a]))) + def logError(self, *args): self.log.error("%s: %s" % (self.__name__, " | ".join([a if isinstance(a, basestring) else str(a) for a in args if a]))) + def logCritical(self, *args): self.log.critical("%s: %s" % (self.__name__, " | ".join([a if isinstance(a, basestring) else str(a) for a in args if a]))) @@ -80,6 +86,7 @@ class Base(object): """ see `setConfig` """ self.core.config.setPlugin(self.__name__, option, value) + def setConfig(self, option, value): """ Set config value for current plugin @@ -89,10 +96,12 @@ class Base(object): """ self.setConf(option, value) + def getConf(self, option): """ see `getConfig` """ return self.core.config.getPlugin(self.__name__, option) + def getConfig(self, option): """ Returns config value for current plugin @@ -101,24 +110,29 @@ class Base(object): """ return self.getConf(option) + def setStorage(self, key, value): """ Saves a value persistently to the database """ self.core.db.setStorage(self.__name__, key, value) + def store(self, key, value): """ same as `setStorage` """ self.core.db.setStorage(self.__name__, key, value) + def getStorage(self, key=None, default=None): """ Retrieves saved value or dict of all saved entries if key is None """ if key is not None: return self.core.db.getStorage(self.__name__, key) or default return self.core.db.getStorage(self.__name__, key) + def retrieve(self, *args, **kwargs): """ same as `getStorage` """ return self.getStorage(*args, **kwargs) + def delStorage(self, key): """ Delete entry in db """ self.core.db.delStorage(self.__name__, key) @@ -198,22 +212,27 @@ class Plugin(Base): self.init() + def getChunkCount(self): if self.chunkLimit <= 0: return self.config['download']['chunks'] return min(self.config['download']['chunks'], self.chunkLimit) + def __call__(self): return self.__name__ + def init(self): """initialize the plugin (in addition to `__init__`)""" pass + def setup(self): """ setup for enviroment and other things, called before downloading (possibly more than one time)""" pass + def preprocessing(self, thread): """ handles important things to do before starting """ self.thread = thread @@ -234,12 +253,14 @@ class Plugin(Base): """the 'main' method of every plugin, you **have to** overwrite it""" raise NotImplementedError + def resetAccount(self): """ dont use account and retry download """ self.account = None self.req = self.core.requestFactory.getRequest(self.__name__) self.retry() + def checksum(self, local_file=None): """ return codes: @@ -264,6 +285,7 @@ class Plugin(Base): self.wantReconnect = True self.pyfile.waitUntil = time() + int(seconds) + def wait(self): """ waits the time previously set """ self.waiting = True @@ -281,23 +303,28 @@ class Plugin(Base): self.waiting = False self.pyfile.setStatus("starting") + def fail(self, reason): """ fail and give reason """ raise Fail(reason) + def error(self, reason=None, type="parse"): raise Fail("%s error%s | Plugin out of date" % (type.capitalize(), ': ' + str(reason) if reason else "")) if self.core.debug: print_exc() + def offline(self): """ fail and indicate file is offline """ raise Fail("offline") + def tempOffline(self): """ fail and indicates file ist temporary offline, the core may take consequences """ raise Fail("temp. offline") + def retry(self, max_tries=3, wait_time=1, reason=""): """Retries and begin again from the beginning @@ -316,14 +343,17 @@ class Plugin(Base): self.retries += 1 raise Retry(reason) + def invalidCaptcha(self): if self.cTask: self.cTask.invalid() + def correctCaptcha(self): if self.cTask: self.cTask.correct() + def decryptCaptcha(self, url, get={}, post={}, cookies=False, forceUser=False, imgtype='jpg', result_type='textual'): """ Loads a captcha and decrypts it with ocr, plugin, user input @@ -455,6 +485,7 @@ class Plugin(Base): return res + def download(self, url, get={}, post={}, ref=True, cookies=True, disposition=False): """Downloads the content at url to download folder @@ -525,6 +556,7 @@ class Plugin(Base): self.lastDownload = filename return self.lastDownload + def checkDownload(self, rules, api_size=0, max_size=50000, delete=True, read_size=0): """ checks the content of the last downloaded file, re match is saved to `lastCheck` @@ -603,6 +635,7 @@ class Plugin(Base): self.log.debug("File %s not skipped, because it does not exists." % self.pyfile.name) + def clean(self): """ clean everything and remove references """ if hasattr(self, "pyfile"): diff --git a/module/plugins/PluginManager.py b/module/plugins/PluginManager.py index e263f8e04..034e40d4a 100644 --- a/module/plugins/PluginManager.py +++ b/module/plugins/PluginManager.py @@ -60,6 +60,7 @@ class PluginManager: self.log.debug("created index of plugins") + def parse(self, folder, pattern=False, home={}): """ returns dict with information @@ -211,12 +212,14 @@ class PluginManager: return res + def findPlugin(self, name, pluginlist=("hoster", "crypter", "container")): for ptype in pluginlist: if name in self.plugins[ptype]: return self.plugins[ptype][name], ptype return None, None + def getPlugin(self, name, original=False): """return plugin module from hoster|decrypter|container""" plugin, type = self.findPlugin(name) @@ -230,6 +233,7 @@ class PluginManager: return self.loadModule(type, name) + def getPluginName(self, name): """ used to obtain new name if other plugin was injected""" plugin, type = self.findPlugin(name) @@ -239,6 +243,7 @@ class PluginManager: return name + def loadModule(self, type, name): """ Returns loaded module for plugin @@ -258,15 +263,18 @@ class PluginManager: if self.core.debug: print_exc() + def loadClass(self, type, name): """Returns the class of a plugin with the same name""" module = self.loadModule(type, name) if module: return getattr(module, name) + def getAccountPlugins(self): """return list of account plugin names""" return self.accountPlugins.keys() + def find_module(self, fullname, path=None): #redirecting imports if necesarry if fullname.startswith(self.ROOT) or fullname.startswith(self.USERROOT): #seperate pyload plugins diff --git a/module/plugins/accounts/EuroshareEu.py b/module/plugins/accounts/EuroshareEu.py index bb2f0c8e2..e08cc7e45 100644 --- a/module/plugins/accounts/EuroshareEu.py +++ b/module/plugins/accounts/EuroshareEu.py @@ -31,7 +31,6 @@ class EuroshareEu(Account): def login(self, user, data, req): - html = req.load('http://euroshare.eu/customer-zone/login/', post={ "trvale": "1", "login": user, diff --git a/module/plugins/accounts/FreeWayMe.py b/module/plugins/accounts/FreeWayMe.py index 12c24329c..797748c93 100644 --- a/module/plugins/accounts/FreeWayMe.py +++ b/module/plugins/accounts/FreeWayMe.py @@ -32,6 +32,7 @@ class FreeWayMe(Account): return account_info + def getpw(self, user): return self.accounts[user]['password'] @@ -43,6 +44,7 @@ class FreeWayMe(Account): if not status: self.wrongPassword() + def getAccountStatus(self, user, req): answer = req.load("https://www.free-way.me/ajax/jd.php", get={"id": 4, "user": user, "pass": self.accounts[user]['password']}) diff --git a/module/plugins/accounts/FshareVn.py b/module/plugins/accounts/FshareVn.py index 45ee5a749..9e513d6f6 100644 --- a/module/plugins/accounts/FshareVn.py +++ b/module/plugins/accounts/FshareVn.py @@ -57,6 +57,7 @@ class FshareVn(Account): if not re.search(r'<img\s+alt="VIP"', html): self.wrongPassword() + def getTrafficLeft(self): m = re.search(self.TRAFFIC_LEFT_PATTERN, html) return float(m.group(1)) * 1024 ** {'k': 0, 'K': 0, 'M': 1, 'G': 2}[m.group(2)] if m else 0 diff --git a/module/plugins/accounts/OneFichierCom.py b/module/plugins/accounts/OneFichierCom.py index 8e8430f61..71fa550b6 100644 --- a/module/plugins/accounts/OneFichierCom.py +++ b/module/plugins/accounts/OneFichierCom.py @@ -21,7 +21,6 @@ class OneFichierCom(Account): def loadAccountInfo(self, user, req): - html = req.load("http://1fichier.com/console/abo.pl") m = re.search(self.VALID_UNTIL_PATTERN, html) @@ -38,7 +37,6 @@ class OneFichierCom(Account): def login(self, user, data, req): - req.http.c.setopt(REFERER, "http://1fichier.com/login.pl?lg=en") html = req.load("http://1fichier.com/login.pl?lg=en", post={ diff --git a/module/plugins/accounts/PremiumizeMe.py b/module/plugins/accounts/PremiumizeMe.py index e65b9ec4b..4a789bfdf 100644 --- a/module/plugins/accounts/PremiumizeMe.py +++ b/module/plugins/accounts/PremiumizeMe.py @@ -38,6 +38,7 @@ class PremiumizeMe(Account): if status['status'] != 200: self.wrongPassword() + def getAccountStatus(self, user, req): # Use premiumize.me API v1 (see https://secure.premiumize.me/?show=api) # to retrieve account info and return the parsed json answer diff --git a/module/plugins/accounts/RPNetBiz.py b/module/plugins/accounts/RPNetBiz.py index e4b873824..59349bd7a 100644 --- a/module/plugins/accounts/RPNetBiz.py +++ b/module/plugins/accounts/RPNetBiz.py @@ -40,6 +40,7 @@ class RPNetBiz(Account): if 'error' in response: self.wrongPassword() + def getAccountStatus(self, user, req): # Using the rpnet API, check if valid premium account response = req.load("https://premium.rpnet.biz/client_api.php", diff --git a/module/plugins/accounts/ShareonlineBiz.py b/module/plugins/accounts/ShareonlineBiz.py index 76c564032..c00e4769d 100644 --- a/module/plugins/accounts/ShareonlineBiz.py +++ b/module/plugins/accounts/ShareonlineBiz.py @@ -18,6 +18,7 @@ class ShareonlineBiz(Account): return req.load("http://api.share-online.biz/account.php", {"username": user, "password": self.accounts[user]['password'], "act": "userDetails"}) + def loadAccountInfo(self, user, req): src = self.getUserAPI(user, req) diff --git a/module/plugins/accounts/UploadedTo.py b/module/plugins/accounts/UploadedTo.py index 437730a3f..147962838 100644 --- a/module/plugins/accounts/UploadedTo.py +++ b/module/plugins/accounts/UploadedTo.py @@ -17,7 +17,6 @@ class UploadedTo(Account): def loadAccountInfo(self, user, req): - req.load("http://uploaded.net/language/en") html = req.load("http://uploaded.net/me") @@ -44,7 +43,6 @@ class UploadedTo(Account): def login(self, user, data, req): - req.load("http://uploaded.net/language/en") req.cj.setCookie("uploaded.net", "lang", "en") diff --git a/module/plugins/accounts/ZeveraCom.py b/module/plugins/accounts/ZeveraCom.py index 7e4fb0ab8..8ee8610ba 100644 --- a/module/plugins/accounts/ZeveraCom.py +++ b/module/plugins/accounts/ZeveraCom.py @@ -34,6 +34,7 @@ class ZeveraCom(Account): if self.getAPIData(req) == "No traffic": self.wrongPassword() + def getAPIData(self, req, just_header=False, **kwargs): get_data = { 'cmd': 'accountinfo', diff --git a/module/plugins/captcha/GigasizeCom.py b/module/plugins/captcha/GigasizeCom.py index 8fe67c0d0..d7fe25ab7 100644 --- a/module/plugins/captcha/GigasizeCom.py +++ b/module/plugins/captcha/GigasizeCom.py @@ -16,6 +16,7 @@ class GigasizeCom(OCR): def __init__(self): OCR.__init__(self) + def get_captcha(self, image): self.load_image(image) self.threshold(2.8) diff --git a/module/plugins/captcha/LinksaveIn.py b/module/plugins/captcha/LinksaveIn.py index e8487c387..6535dd11f 100644 --- a/module/plugins/captcha/LinksaveIn.py +++ b/module/plugins/captcha/LinksaveIn.py @@ -26,6 +26,7 @@ class LinksaveIn(OCR): OCR.__init__(self) self.data_dir = dirname(abspath(__file__)) + sep + "LinksaveIn" + sep + def load_image(self, image): im = Image.open(image) frame_nr = 0 @@ -53,6 +54,7 @@ class LinksaveIn(OCR): self.pixels = self.image.load() self.result_captcha = '' + def get_bg(self): stat = {} cstat = {} @@ -89,6 +91,7 @@ class LinksaveIn(OCR): max_p = value return bg + def substract_bg(self, bgpath): bg = Image.open(bgpath) img = self.image.convert("P") @@ -111,6 +114,7 @@ class LinksaveIn(OCR): if rgb_c == rgb_bg: orgpix[x, y] = (255,255,255) + def eval_black_white(self): new = Image.new("RGB", (140, 75)) pix = new.load() @@ -132,6 +136,7 @@ class LinksaveIn(OCR): self.image = new self.pixels = self.image.load() + def get_captcha(self, image): self.load_image(image) bg = self.get_bg() diff --git a/module/plugins/captcha/NetloadIn.py b/module/plugins/captcha/NetloadIn.py index 514cb259f..a8a05b210 100644 --- a/module/plugins/captcha/NetloadIn.py +++ b/module/plugins/captcha/NetloadIn.py @@ -16,6 +16,7 @@ class NetloadIn(OCR): def __init__(self): OCR.__init__(self) + def get_captcha(self, image): self.load_image(image) self.to_greyscale() diff --git a/module/plugins/captcha/ShareonlineBiz.py b/module/plugins/captcha/ShareonlineBiz.py index 7435710d5..41caa3697 100644 --- a/module/plugins/captcha/ShareonlineBiz.py +++ b/module/plugins/captcha/ShareonlineBiz.py @@ -16,6 +16,7 @@ class ShareonlineBiz(OCR): def __init__(self): OCR.__init__(self) + def get_captcha(self, image): self.load_image(image) self.to_greyscale() diff --git a/module/plugins/captcha/captcha.py b/module/plugins/captcha/captcha.py index fb85d8996..dda6fed02 100644 --- a/module/plugins/captcha/captcha.py +++ b/module/plugins/captcha/captcha.py @@ -28,18 +28,22 @@ class OCR(object): def __init__(self): self.logger = logging.getLogger("log") + def load_image(self, image): self.image = Image.open(image) self.pixels = self.image.load() self.result_captcha = '' + def unload(self): """delete all tmp images""" pass + def threshold(self, value): self.image = self.image.point(lambda a: a * value + 10) + def run(self, command): """Run a command""" @@ -50,6 +54,7 @@ class OCR(object): popen.stderr.close() self.logger.debug("Tesseract ReturnCode %s Output: %s" % (popen.returncode, output)) + def run_tesser(self, subset=False, digits=True, lowercase=True, uppercase=True): #tmpTif = tempfile.NamedTemporaryFile(suffix=".tif") tmpTif = open(join("tmp", "tmpTif_%s.tif" % self.__name__), "wb") @@ -103,15 +108,18 @@ class OCR(object): except: pass + def get_captcha(self, name): raise NotImplementedError + def to_greyscale(self): if self.image.mode != 'L': self.image = self.image.convert('L') self.pixels = self.image.load() + def eval_black_white(self, limit): self.pixels = self.image.load() w, h = self.image.size @@ -122,6 +130,7 @@ class OCR(object): else: self.pixels[x, y] = 0 + def clean(self, allowed): pixels = self.pixels @@ -167,6 +176,7 @@ class OCR(object): self.pixels = pixels + def derotate_by_average(self): """rotate by checking each angle and guess most suitable""" @@ -241,6 +251,7 @@ class OCR(object): self.pixels = pixels + def split_captcha_letters(self): captcha = self.image started = False @@ -280,6 +291,7 @@ class OCR(object): return letters + def correct(self, values, var=None): if var: result = var diff --git a/module/plugins/container/CCF.py b/module/plugins/container/CCF.py index 7a90ddf1c..4d62be553 100644 --- a/module/plugins/container/CCF.py +++ b/module/plugins/container/CCF.py @@ -24,7 +24,6 @@ class CCF(Container): def decrypt(self, pyfile): - infile = pyfile.url.replace("\n", "") opener = build_opener(MultipartPostHandler) diff --git a/module/plugins/crypter/DDLMusicOrg.py b/module/plugins/crypter/DDLMusicOrg.py index a78794b6d..bd5560ed1 100644 --- a/module/plugins/crypter/DDLMusicOrg.py +++ b/module/plugins/crypter/DDLMusicOrg.py @@ -22,6 +22,7 @@ class DDLMusicOrg(Crypter): def setup(self): self.multiDL = False + def decrypt(self, pyfile): html = self.load(pyfile.url, cookies=True) diff --git a/module/plugins/crypter/DailymotionBatch.py b/module/plugins/crypter/DailymotionBatch.py index a0ed0e80f..5d2f53b38 100644 --- a/module/plugins/crypter/DailymotionBatch.py +++ b/module/plugins/crypter/DailymotionBatch.py @@ -26,6 +26,7 @@ class DailymotionBatch(Crypter): page = self.load(url, get=req) return json_loads(page) + def getPlaylistInfo(self, id): ref = "playlist/" + id req = {"fields": "name,owner.screenname"} @@ -38,6 +39,7 @@ class DailymotionBatch(Crypter): owner = playlist['owner.screenname'] return name, owner + def _getPlaylists(self, user_id, page=1): ref = "user/%s/playlists" % user_id req = {"fields": "id", "page": page, "limit": 100} @@ -53,9 +55,11 @@ class DailymotionBatch(Crypter): for item in self._getPlaylists(user_id, page + 1): yield item + def getPlaylists(self, user_id): return [(id,) + self.getPlaylistInfo(id) for id in self._getPlaylists(user_id)] + def _getVideos(self, id, page=1): ref = "playlist/%s/videos" % id req = {"fields": "url", "page": page, "limit": 100} @@ -71,9 +75,11 @@ class DailymotionBatch(Crypter): for item in self._getVideos(id, page + 1): yield item + def getVideos(self, playlist_id): return list(self._getVideos(playlist_id))[::-1] + def decrypt(self, pyfile): m = re.match(self.__pattern__, pyfile.url) m_id = m.group("ID") diff --git a/module/plugins/crypter/DuckCryptInfo.py b/module/plugins/crypter/DuckCryptInfo.py index 29eeb4453..737ed59ec 100644 --- a/module/plugins/crypter/DuckCryptInfo.py +++ b/module/plugins/crypter/DuckCryptInfo.py @@ -33,6 +33,7 @@ class DuckCryptInfo(Crypter): else: self.handleFolder(m) + def handleFolder(self, m): src = self.load("http://duckcrypt.info/ajax/auth.php?hash=" + str(m.group(2))) m = re.match(self.__pattern__, src) @@ -47,6 +48,7 @@ class DuckCryptInfo(Crypter): if clink.find("a"): self.handleLink(clink.find("a")['href']) + def handleLink(self, url): src = self.load(url) soup = BeautifulSoup(src) diff --git a/module/plugins/crypter/EmbeduploadCom.py b/module/plugins/crypter/EmbeduploadCom.py index 71c4d5778..8e4f5da07 100644 --- a/module/plugins/crypter/EmbeduploadCom.py +++ b/module/plugins/crypter/EmbeduploadCom.py @@ -44,6 +44,7 @@ class EmbeduploadCom(Crypter): if not self.urls: self.fail('Could not extract any links') + def getLocation(self, tmp_links): new_links = [] for link in tmp_links: diff --git a/module/plugins/crypter/HoerbuchIn.py b/module/plugins/crypter/HoerbuchIn.py index 34e124d82..773e0bf8b 100644 --- a/module/plugins/crypter/HoerbuchIn.py +++ b/module/plugins/crypter/HoerbuchIn.py @@ -40,6 +40,7 @@ class HoerbuchIn(Crypter): else: self.urls = self.decryptFolder(pyfile.url) + def decryptFolder(self, url): m = self.protection.search(url) if m is None: diff --git a/module/plugins/crypter/LinkdecrypterCom.py b/module/plugins/crypter/LinkdecrypterCom.py index c72092a5f..0358d1308 100644 --- a/module/plugins/crypter/LinkdecrypterCom.py +++ b/module/plugins/crypter/LinkdecrypterCom.py @@ -24,7 +24,6 @@ class LinkdecrypterCom(Crypter): def decrypt(self, pyfile): - self.passwords = self.getPassword().splitlines() # API not working anymore @@ -32,8 +31,8 @@ class LinkdecrypterCom(Crypter): if not self.urls: self.fail('Could not extract any links') - def decryptAPI(self): + def decryptAPI(self): get_dict = {"t": "link", "url": self.pyfile.url, "lcache": "1"} self.html = self.load('http://linkdecrypter.com/api', get=get_dict) if self.html.startswith('http://'): @@ -51,8 +50,8 @@ class LinkdecrypterCom(Crypter): return None - def decryptHTML(self): + def decryptHTML(self): retries = 5 post_dict = {"link_cache": "on", "pro_links": self.pyfile.url, "modo_links": "text"} diff --git a/module/plugins/crypter/NCryptIn.py b/module/plugins/crypter/NCryptIn.py index 28a0735a5..ef696dbd8 100644 --- a/module/plugins/crypter/NCryptIn.py +++ b/module/plugins/crypter/NCryptIn.py @@ -131,7 +131,6 @@ class NCryptIn(Crypter): def unlockProtection(self): - postData = {} form = re.search(r'<form name="protected"(.*?)</form>', self.cleanedHtml, re.DOTALL).group(1) @@ -210,7 +209,6 @@ class NCryptIn(Crypter): def handleSingleLink(self): - self.logDebug("Handling Single link") package_links = [] @@ -223,7 +221,6 @@ class NCryptIn(Crypter): def handleCNL2(self): - self.logDebug("Handling CNL2 links") package_links = [] @@ -239,7 +236,6 @@ class NCryptIn(Crypter): def handleContainers(self): - self.logDebug("Handling Container links") package_links = [] @@ -254,7 +250,6 @@ class NCryptIn(Crypter): def handleWebLinks(self): - self.logDebug("Handling Web links") pattern = r'(http://ncrypt\.in/link-.*?=)' links = re.findall(pattern, self.html) @@ -280,7 +275,6 @@ class NCryptIn(Crypter): def _getCipherParams(self): - pattern = r'<input.*?name="%s".*?value="(.*?)"' # Get jk diff --git a/module/plugins/crypter/NetfolderIn.py b/module/plugins/crypter/NetfolderIn.py index 027503bd2..03c62ba14 100644 --- a/module/plugins/crypter/NetfolderIn.py +++ b/module/plugins/crypter/NetfolderIn.py @@ -40,12 +40,14 @@ class NetfolderIn(SimpleCrypter): # Set package self.packages = [(package_name, package_links, folder_name)] + def isPasswordProtected(self): if '<input type="password" name="password"' in self.html: self.logDebug("Links are password protected") return True return False + def submitPassword(self): # Gather data try: @@ -69,6 +71,7 @@ class NetfolderIn(SimpleCrypter): return html + def getLinks(self): links = re.search(r'name="list" value="(.*?)"', self.html).group(1).split(",") self.logDebug("Package has %d links" % len(links)) diff --git a/module/plugins/crypter/OneKhDe.py b/module/plugins/crypter/OneKhDe.py index 7a2aefe83..188a0a0ef 100644 --- a/module/plugins/crypter/OneKhDe.py +++ b/module/plugins/crypter/OneKhDe.py @@ -22,11 +22,13 @@ class OneKhDe(Crypter): Crypter.__init__(self, parent) self.parent = parent + def file_exists(self): """ returns True or False """ return True + def proceed(self, url, location): url = self.parent.url self.html = self.load(url) diff --git a/module/plugins/crypter/TurbobitNetFolder.py b/module/plugins/crypter/TurbobitNetFolder.py index 390520d88..1158c5cc1 100644 --- a/module/plugins/crypter/TurbobitNetFolder.py +++ b/module/plugins/crypter/TurbobitNetFolder.py @@ -35,6 +35,7 @@ class TurbobitNetFolder(SimpleCrypter): else: return + def getLinks(self): id = re.match(self.__pattern__, self.pyfile.url).group("ID") fixurl = lambda id: "http://turbobit.net/%s.html" % id diff --git a/module/plugins/crypter/YoutubeBatch.py b/module/plugins/crypter/YoutubeBatch.py index e5fd83c4f..e70003ab1 100644 --- a/module/plugins/crypter/YoutubeBatch.py +++ b/module/plugins/crypter/YoutubeBatch.py @@ -33,6 +33,7 @@ class YoutubeBatch(Crypter): page = self.load(url, get=req) return json_loads(page) + def getChannel(self, user): channels = self.api_response("channels", {"part": "id,snippet,contentDetails", "forUsername": user, "maxResults": "50"}) if channels['items']: @@ -42,6 +43,7 @@ class YoutubeBatch(Crypter): "relatedPlaylists": channel['contentDetails']['relatedPlaylists'], "user": user} # One lone channel for user? + def getPlaylist(self, p_id): playlists = self.api_response("playlists", {"part": "snippet", "id": p_id}) if playlists['items']: @@ -51,6 +53,7 @@ class YoutubeBatch(Crypter): "channelId": playlist['snippet']['channelId'], "channelTitle": playlist['snippet']['channelTitle']} + def _getPlaylists(self, id, token=None): req = {"part": "id", "maxResults": "50", "channelId": id} if token: @@ -65,9 +68,11 @@ class YoutubeBatch(Crypter): for item in self._getPlaylists(id, playlists['nextPageToken']): yield item + def getPlaylists(self, ch_id): return map(self.getPlaylist, self._getPlaylists(ch_id)) + def _getVideosId(self, id, token=None): req = {"part": "contentDetails", "maxResults": "50", "playlistId": id} if token: @@ -82,9 +87,11 @@ class YoutubeBatch(Crypter): for item in self._getVideosId(id, playlist['nextPageToken']): yield item + def getVideosId(self, p_id): return list(self._getVideosId(p_id)) + def decrypt(self, pyfile): m = re.match(self.__pattern__, pyfile.url) m_id = m.group("ID") diff --git a/module/plugins/hooks/BypassCaptcha.py b/module/plugins/hooks/BypassCaptcha.py index 984aac919..a07b2fc66 100644 --- a/module/plugins/hooks/BypassCaptcha.py +++ b/module/plugins/hooks/BypassCaptcha.py @@ -13,12 +13,15 @@ class BypassCaptchaException(Exception): def __init__(self, err): self.err = err + def getCode(self): return self.err + def __str__(self): return "<BypassCaptchaException %s>" % self.err + def __repr__(self): return "<BypassCaptchaException %s>" % self.err @@ -49,12 +52,14 @@ class BypassCaptcha(Hook): def setup(self): self.info = {} + def getCredits(self): response = getURL(self.GETCREDITS_URL, post={"key": self.getConfig("passkey")}) data = dict([x.split(' ', 1) for x in response.splitlines()]) return int(data['Left']) + def submit(self, captcha, captchaType="file", match=None): req = getRequest() @@ -81,6 +86,7 @@ class BypassCaptcha(Hook): return ticket, result + def respond(self, ticket, success): try: response = getURL(self.RESPOND_URL, post={"task_id": ticket, "key": self.getConfig("passkey"), @@ -88,6 +94,7 @@ class BypassCaptcha(Hook): except BadHeader, e: self.logError(_("Could not send response."), e + def newCaptchaTask(self, task): if "service" in task.data: return False @@ -110,14 +117,17 @@ class BypassCaptcha(Hook): else: self.logInfo(_("Your %s account has not enough credits") % self.__name__) + def captchaCorrect(self, task): if task.data['service'] == self.__name__ and "ticket" in task.data: self.respond(task.data['ticket'], True) + def captchaInvalid(self, task): if task.data['service'] == self.__name__ and "ticket" in task.data: self.respond(task.data['ticket'], False) + def processCaptcha(self, task): c = task.captchaFile try: diff --git a/module/plugins/hooks/Captcha9kw.py b/module/plugins/hooks/Captcha9kw.py index 6485db22b..947aff121 100755 --- a/module/plugins/hooks/Captcha9kw.py +++ b/module/plugins/hooks/Captcha9kw.py @@ -41,6 +41,7 @@ class Captcha9kw(Hook): self.API_URL = "https" + self.API_URL if self.getConfig("https") else "http" + self.API_URL self.info = {} + def getCredits(self): response = getURL(self.API_URL, get={"apikey": self.getConfig("passkey"), "pyload": "1", "source": "pyload", "action": "usercaptchaguthaben"}) @@ -53,6 +54,7 @@ class Captcha9kw(Hook): self.logError(response) return 0 + def processCaptcha(self, task): result = None @@ -100,6 +102,7 @@ class Captcha9kw(Hook): self.logError(_("Bad upload"), response) return False + def newCaptchaTask(self, task): if not task.isTextual() and not task.isPositional(): return False @@ -118,6 +121,7 @@ class Captcha9kw(Hook): else: self.logError(_("Your Captcha 9kw.eu Account has not enough credits")) + def captchaCorrect(self, task): if "ticket" in task.data: @@ -137,6 +141,7 @@ class Captcha9kw(Hook): else: self.logError(_("No CaptchaID for correct request (task %s) found.") % task) + def captchaInvalid(self, task): if "ticket" in task.data: diff --git a/module/plugins/hooks/CaptchaBrotherhood.py b/module/plugins/hooks/CaptchaBrotherhood.py index 3157fead8..da8fcbafe 100644 --- a/module/plugins/hooks/CaptchaBrotherhood.py +++ b/module/plugins/hooks/CaptchaBrotherhood.py @@ -23,12 +23,15 @@ class CaptchaBrotherhoodException(Exception): def __init__(self, err): self.err = err + def getCode(self): return self.err + def __str__(self): return "<CaptchaBrotherhoodException %s>" % self.err + def __repr__(self): return "<CaptchaBrotherhoodException %s>" % self.err @@ -55,6 +58,7 @@ class CaptchaBrotherhood(Hook): def setup(self): self.info = {} + def getCredits(self): response = getURL(self.API_URL + "askCredits.aspx", get={"username": self.getConfig("username"), "password": self.getConfig("passkey")}) @@ -66,6 +70,7 @@ class CaptchaBrotherhood(Hook): self.info['credits'] = credits return credits + def submit(self, captcha, captchaType="file", match=None): try: img = Image.open(captcha) @@ -116,6 +121,7 @@ class CaptchaBrotherhood(Hook): raise CaptchaBrotherhoodException("No solution received in time") + def get_api(self, api, ticket): response = getURL("%s%s.aspx" % (self.API_URL, api), get={"username": self.getConfig("username"), @@ -126,6 +132,7 @@ class CaptchaBrotherhood(Hook): return response + def newCaptchaTask(self, task): if "service" in task.data: return False @@ -147,10 +154,12 @@ class CaptchaBrotherhood(Hook): else: self.logInfo(_("Your CaptchaBrotherhood Account has not enough credits")) + def captchaInvalid(self, task): if task.data['service'] == self.__name__ and "ticket" in task.data: response = self.get_api("complainCaptcha", task.data['ticket']) + def processCaptcha(self, task): c = task.captchaFile try: diff --git a/module/plugins/hooks/Checksum.py b/module/plugins/hooks/Checksum.py index 32597beeb..4a7cfd661 100644 --- a/module/plugins/hooks/Checksum.py +++ b/module/plugins/hooks/Checksum.py @@ -67,12 +67,14 @@ class Checksum(Hook): if not self.getConfig("check_checksum"): self.logInfo(_("Checksum validation is disabled in plugin configuration")) + def setup(self): self.algorithms = sorted( getattr(hashlib, "algorithms", ("md5", "sha1", "sha224", "sha256", "sha384", "sha512")), reverse=True) self.algorithms.extend(["crc32", "adler32"]) self.formats = self.algorithms + ["sfv", "crc", "hash"] + def downloadFinished(self, pyfile): """ Compute checksum for the downloaded file and compare it with the hash provided by the hoster. @@ -130,6 +132,7 @@ class Checksum(Hook): else: self.logWarning(_("Unable to validate checksum for file"), pyfile.name) + def checkFailed(self, pyfile, local_file, msg): check_action = self.getConfig("check_action") if check_action == "retry": @@ -145,6 +148,7 @@ class Checksum(Hook): return pyfile.plugin.fail(reason=msg) + def packageFinished(self, pypack): download_folder = save_join(self.config['general']['download_folder'], pypack.folder, "") diff --git a/module/plugins/hooks/DeathByCaptcha.py b/module/plugins/hooks/DeathByCaptcha.py index 2548506cb..99d7f7401 100644 --- a/module/plugins/hooks/DeathByCaptcha.py +++ b/module/plugins/hooks/DeathByCaptcha.py @@ -25,21 +25,26 @@ class DeathByCaptchaException(Exception): 'invalid-request': 'Invalid request', 'timed-out': 'No CAPTCHA solution received in time'} + def __init__(self, err): self.err = err + def getCode(self): return self.err + def getDesc(self): if self.err in self.DBC_ERRORS.keys(): return self.DBC_ERRORS[self.err] else: return self.err + def __str__(self): return "<DeathByCaptchaException %s>" % self.err + def __repr__(self): return "<DeathByCaptchaException %s>" % self.err @@ -66,6 +71,7 @@ class DeathByCaptcha(Hook): def setup(self): self.info = {} + def call_api(self, api="captcha", post=False, multipart=False): req = getRequest() req.c.setopt(HTTPHEADER, ["Accept: application/json", "User-Agent: pyLoad %s" % self.core.version]) @@ -106,6 +112,7 @@ class DeathByCaptcha(Hook): return response + def getCredits(self): response = self.call_api("user", True) @@ -116,12 +123,14 @@ class DeathByCaptcha(Hook): else: raise DeathByCaptchaException(response) + def getStatus(self): response = self.call_api("status", False) if 'is_service_overloaded' in response and response['is_service_overloaded']: raise DeathByCaptchaException('service-overload') + def submit(self, captcha, captchaType="file", match=None): #workaround multipart-post bug in HTTPRequest.py if re.match("^\w*$", self.getConfig("passkey")): @@ -152,6 +161,7 @@ class DeathByCaptcha(Hook): return ticket, result + def newCaptchaTask(self, task): if "service" in task.data: return False @@ -183,6 +193,7 @@ class DeathByCaptcha(Hook): task.setWaiting(180) start_new_thread(self.processCaptcha, (task,)) + def captchaInvalid(self, task): if task.data['service'] == self.__name__ and "ticket" in task.data: try: @@ -192,6 +203,7 @@ class DeathByCaptcha(Hook): except Exception, e: self.logError(e) + def processCaptcha(self, task): c = task.captchaFile try: diff --git a/module/plugins/hooks/DownloadScheduler.py b/module/plugins/hooks/DownloadScheduler.py index c7a0155dd..70930ab67 100644 --- a/module/plugins/hooks/DownloadScheduler.py +++ b/module/plugins/hooks/DownloadScheduler.py @@ -26,9 +26,11 @@ class DownloadScheduler(Hook): def setup(self): self.cb = None # callback to scheduler job; will be by removed hookmanager when hook unloaded + def coreReady(self): self.updateSchedule() + def updateSchedule(self, schedule=None): if schedule is None: schedule = self.getConfig("timetable") @@ -56,6 +58,7 @@ class DownloadScheduler(Hook): self.core.scheduler.removeJob(self.cb) self.cb = self.core.scheduler.addJob(next_time, self.updateSchedule, threaded=False) + def setDownloadSpeed(self, speed): if speed == 0: abort = self.getConfig("abort") diff --git a/module/plugins/hooks/ExpertDecoders.py b/module/plugins/hooks/ExpertDecoders.py index 712b19677..e786cc35a 100644 --- a/module/plugins/hooks/ExpertDecoders.py +++ b/module/plugins/hooks/ExpertDecoders.py @@ -33,6 +33,7 @@ class ExpertDecoders(Hook): def setup(self): self.info = {} + def getCredits(self): response = getURL(self.API_URL, post={"key": self.getConfig("passkey"), "action": "balance"}) @@ -44,6 +45,7 @@ class ExpertDecoders(Hook): self.logError(response) return 0 + def processCaptcha(self, task): task.data['ticket'] = ticket = uuid4() result = None @@ -65,6 +67,7 @@ class ExpertDecoders(Hook): self.logDebug("Result %s : %s" % (ticket, result)) task.setResult(result) + def newCaptchaTask(self, task): if not task.isTextual(): return False @@ -83,6 +86,7 @@ class ExpertDecoders(Hook): else: self.logInfo(_("Your ExpertDecoders Account has not enough credits")) + def captchaInvalid(self, task): if "ticket" in task.data: diff --git a/module/plugins/hooks/ExtractArchive.py b/module/plugins/hooks/ExtractArchive.py index f6958941e..649689f6e 100644 --- a/module/plugins/hooks/ExtractArchive.py +++ b/module/plugins/hooks/ExtractArchive.py @@ -14,6 +14,7 @@ if sys.version_info < (2, 7) and os.name != "nt": import errno from subprocess import Popen + def _eintr_retry_call(func, *args): while True: try: @@ -23,6 +24,7 @@ if sys.version_info < (2, 7) and os.name != "nt": continue raise + # unsued timeout option for older python version def wait(self, timeout=0): """Wait for child process to terminate. Returns returncode diff --git a/module/plugins/hooks/HotFolder.py b/module/plugins/hooks/HotFolder.py index 34a9ff49b..688dcbf48 100644 --- a/module/plugins/hooks/HotFolder.py +++ b/module/plugins/hooks/HotFolder.py @@ -28,6 +28,7 @@ class HotFolder(Hook): def setup(self): self.interval = 10 + def periodical(self): if not exists(join(self.getConfig("folder"), "finished")): makedirs(join(self.getConfig("folder"), "finished")) diff --git a/module/plugins/hooks/IRCInterface.py b/module/plugins/hooks/IRCInterface.py index d648db7cf..59977b8af 100644 --- a/module/plugins/hooks/IRCInterface.py +++ b/module/plugins/hooks/IRCInterface.py @@ -44,6 +44,7 @@ class IRCInterface(Thread, Hook): # self.sm = core.server_methods self.api = core.api # todo, only use api + def coreReady(self): self.abort = False self.more = [] @@ -51,6 +52,7 @@ class IRCInterface(Thread, Hook): self.start() + def packageFinished(self, pypack): try: if self.getConfig("info_pack"): @@ -58,6 +60,7 @@ class IRCInterface(Thread, Hook): except: pass + def downloadFinished(self, pyfile): try: if self.getConfig("info_file"): @@ -66,6 +69,7 @@ class IRCInterface(Thread, Hook): except: pass + def newCaptchaTask(self, task): if self.getConfig("captcha") and task.isTextual(): task.handler.append(self) @@ -78,6 +82,7 @@ class IRCInterface(Thread, Hook): self.response(_("New Captcha Request: %s") % url) self.response(_("Answer with 'c %s text on the captcha'") % task.id) + def run(self): # connect to IRC etc. self.sock = socket.socket() @@ -99,6 +104,7 @@ class IRCInterface(Thread, Hook): print_exc() self.sock.close() + def main_loop(self): readbuffer = "" while True: @@ -137,6 +143,7 @@ class IRCInterface(Thread, Hook): self.handle_events(msg) + def handle_events(self, msg): if not msg['origin'].split("!", 1)[0] in self.getConfig("owner").split(): return @@ -179,6 +186,7 @@ class IRCInterface(Thread, Hook): except Exception, e: self.logError(repr(e)) + def response(self, msg, origin=""): if origin == "": for t in self.getConfig("owner").split(): @@ -186,11 +194,13 @@ class IRCInterface(Thread, Hook): else: self.sock.send("PRIVMSG %s :%s\r\n" % (origin.split("!", 1)[0], msg)) + #### Events def event_pass(self, args): return [] + def event_status(self, args): downloads = self.api.statusDownloads() if not downloads: @@ -216,6 +226,7 @@ class IRCInterface(Thread, Hook): )) return lines + def event_queue(self, args): ps = self.api.getQueueData() @@ -228,6 +239,7 @@ class IRCInterface(Thread, Hook): return lines + def event_collector(self, args): ps = self.api.getCollectorData() if not ps: @@ -239,6 +251,7 @@ class IRCInterface(Thread, Hook): return lines + def event_info(self, args): if not args: return ["ERROR: Use info like this: info <id>"] @@ -252,6 +265,7 @@ class IRCInterface(Thread, Hook): return ['LINK #%s: %s (%s) [%s][%s]' % (info.fid, info.name, info.format_size, info.statusmsg, info.plugin)] + def event_packinfo(self, args): if not args: return ["ERROR: Use packinfo like this: packinfo <id>"] @@ -283,6 +297,7 @@ class IRCInterface(Thread, Hook): return lines + def event_more(self, args): if not self.more: return ["No more information to display."] @@ -293,14 +308,17 @@ class IRCInterface(Thread, Hook): return lines + def event_start(self, args): self.api.unpauseServer() return ["INFO: Starting downloads."] + def event_stop(self, args): self.api.pauseServer() return ["INFO: No new downloads will be started."] + def event_add(self, args): if len(args) < 2: return ['ERROR: Add links like this: "add <packagename|id> links". ', @@ -326,6 +344,7 @@ class IRCInterface(Thread, Hook): id = self.api.addPackage(pack, links, 1) return ["INFO: Created new Package %s [#%d] with %d links." % (pack, id, len(links))] + def event_del(self, args): if len(args) < 2: return ["ERROR: Use del command like this: del -p|-l <id> [...] (-p indicates that the ids are from packages, -l indicates that the ids are from links)"] @@ -341,6 +360,7 @@ class IRCInterface(Thread, Hook): else: return ["ERROR: Use del command like this: del <-p|-l> <id> [...] (-p indicates that the ids are from packages, -l indicates that the ids are from links)"] + def event_push(self, args): if not args: return ["ERROR: Push package to queue like this: push <package id>"] @@ -354,6 +374,7 @@ class IRCInterface(Thread, Hook): self.api.pushToQueue(id) return ["INFO: Pushed package #%d to queue." % id] + def event_pull(self, args): if not args: return ["ERROR: Pull package from queue like this: pull <package id>."] @@ -365,6 +386,7 @@ class IRCInterface(Thread, Hook): self.api.pullFromQueue(id) return ["INFO: Pulled package #%d from queue to collector." % id] + def event_c(self, args): """ captcha answer """ if not args: @@ -377,6 +399,7 @@ class IRCInterface(Thread, Hook): task.setResult(" ".join(args[1:])) return ["INFO: Result %s saved." % " ".join(args[1:])] + def event_help(self, args): lines = ["The following commands are available:", "add <package|packid> <links> [...] Adds link to package. (creates new package if it does not exist)", @@ -400,5 +423,6 @@ class IRCError(Exception): def __init__(self, value): self.value = value + def __str__(self): return repr(self.value) diff --git a/module/plugins/hooks/ImageTyperz.py b/module/plugins/hooks/ImageTyperz.py index b7ee6b105..3eb0acd64 100644 --- a/module/plugins/hooks/ImageTyperz.py +++ b/module/plugins/hooks/ImageTyperz.py @@ -17,12 +17,15 @@ class ImageTyperzException(Exception): def __init__(self, err): self.err = err + def getCode(self): return self.err + def __str__(self): return "<ImageTyperzException %s>" % self.err + def __repr__(self): return "<ImageTyperzException %s>" % self.err @@ -51,6 +54,7 @@ class ImageTyperz(Hook): def setup(self): self.info = {} + def getCredits(self): response = getURL(self.GETCREDITS_URL, post={"action": "REQUESTBALANCE", "username": self.getConfig("username"), "password": self.getConfig("passkey")}) @@ -66,6 +70,7 @@ class ImageTyperz(Hook): self.logInfo(_("Account balance: $%s left") % response) return balance + def submit(self, captcha, captchaType="file", match=None): req = getRequest() #raise timeout threshold @@ -100,6 +105,7 @@ class ImageTyperz(Hook): return ticket, result + def newCaptchaTask(self, task): if "service" in task.data: return False @@ -122,6 +128,7 @@ class ImageTyperz(Hook): else: self.logInfo(_("Your %s account has not enough credits") % self.__name__) + def captchaInvalid(self, task): if task.data['service'] == self.__name__ and "ticket" in task.data: response = getURL(self.RESPOND_URL, post={"action": "SETBADIMAGE", "username": self.getConfig("username"), @@ -133,6 +140,7 @@ class ImageTyperz(Hook): else: self.logError(_("Bad captcha solution received, refund request failed"), response) + def processCaptcha(self, task): c = task.captchaFile try: diff --git a/module/plugins/hooks/LinkdecrypterCom.py b/module/plugins/hooks/LinkdecrypterCom.py index de08e406a..463a5af96 100644 --- a/module/plugins/hooks/LinkdecrypterCom.py +++ b/module/plugins/hooks/LinkdecrypterCom.py @@ -25,6 +25,7 @@ class LinkdecrypterCom(Hook): except Exception, e: self.logError(e) + def loadPatterns(self): page = getURL("http://linkdecrypter.com/") m = re.search(r'<b>Supported\(\d+\)</b>: <i>([^+<]*)', page) diff --git a/module/plugins/hooks/MergeFiles.py b/module/plugins/hooks/MergeFiles.py index 5a23ff862..0eab0037c 100644 --- a/module/plugins/hooks/MergeFiles.py +++ b/module/plugins/hooks/MergeFiles.py @@ -27,6 +27,7 @@ class MergeFiles(Hook): # nothing to do pass + @threaded def packageFinished(self, pack): files = {} diff --git a/module/plugins/hooks/MultiHome.py b/module/plugins/hooks/MultiHome.py index 5cda53bd7..378c493e9 100644 --- a/module/plugins/hooks/MultiHome.py +++ b/module/plugins/hooks/MultiHome.py @@ -26,19 +26,23 @@ class MultiHome(Hook): self.parseInterfaces([self.config['download']['interface']]) self.setConfig("interfaces", self.toConfig()) + def toConfig(self): return ";".join([i.adress for i in self.interfaces]) + def parseInterfaces(self, interfaces): for interface in interfaces: if not interface or str(interface).lower() == "none": continue self.interfaces.append(Interface(interface)) + def coreReady(self): requestFactory = self.core.requestFactory oldGetRequest = requestFactory.getRequest + def getRequest(pluginName, account=None): iface = self.bestInterface(pluginName, account) if iface: @@ -49,6 +53,7 @@ class MultiHome(Hook): requestFactory.getRequest = getRequest + def bestInterface(self, pluginName, account): best = None for interface in self.interfaces: @@ -63,13 +68,16 @@ class Interface(object): self.adress = adress self.history = {} + def lastPluginAccess(self, pluginName, account): if (pluginName, account) in self.history: return self.history[(pluginName, account)] return 0 + def useFor(self, pluginName, account): self.history[(pluginName, account)] = time() + def __repr__(self): return "<Interface - %s>" % self.adress diff --git a/module/plugins/hooks/PremiumTo.py b/module/plugins/hooks/PremiumTo.py index e783bac8f..15a357ce3 100644 --- a/module/plugins/hooks/PremiumTo.py +++ b/module/plugins/hooks/PremiumTo.py @@ -25,6 +25,7 @@ class PremiumTo(MultiHoster): get={'username': self.account.username, 'password': self.account.password}) return [x.strip() for x in page.replace("\"", "").split(";")] + def coreReady(self): self.account = self.core.accountManager.getAccountPlugin("PremiumTo") diff --git a/module/plugins/hooks/PremiumizeMe.py b/module/plugins/hooks/PremiumizeMe.py index c1a7866c4..1ef82612e 100644 --- a/module/plugins/hooks/PremiumizeMe.py +++ b/module/plugins/hooks/PremiumizeMe.py @@ -42,6 +42,7 @@ class PremiumizeMe(MultiHoster): # Extract hosters from json file return data['result']['hosterlist'] + def coreReady(self): # Get account plugin and check if there is a valid account available self.account = self.core.accountManager.getAccountPlugin("PremiumizeMe") diff --git a/module/plugins/hooks/RPNetBiz.py b/module/plugins/hooks/RPNetBiz.py index f0231d0e7..feba36204 100644 --- a/module/plugins/hooks/RPNetBiz.py +++ b/module/plugins/hooks/RPNetBiz.py @@ -40,6 +40,7 @@ class RPNetBiz(MultiHoster): # Extract hosters from json file return hoster_list['hosters'] + def coreReady(self): # Get account plugin and check if there is a valid account available self.account = self.core.accountManager.getAccountPlugin("RPNetBiz") diff --git a/module/plugins/hooks/RehostTo.py b/module/plugins/hooks/RehostTo.py index f3e1465ee..ea4521a28 100644 --- a/module/plugins/hooks/RehostTo.py +++ b/module/plugins/hooks/RehostTo.py @@ -24,6 +24,7 @@ class RehostTo(MultiHoster): page = getURL("http://rehost.to/api.php?cmd=get_supported_och_dl&long_ses=%s" % self.long_ses) return [x.strip() for x in page.replace("\"", "").split(",")] + def coreReady(self): self.account = self.core.accountManager.getAccountPlugin("RehostTo") diff --git a/module/plugins/hooks/RestartFailed.py b/module/plugins/hooks/RestartFailed.py index 6724ceaa8..ebce60b3f 100644 --- a/module/plugins/hooks/RestartFailed.py +++ b/module/plugins/hooks/RestartFailed.py @@ -31,13 +31,16 @@ class RestartFailed(Hook): else: self.logDebug("Invalid interval value, kept current") + def periodical(self): self.logInfo(_("Restart failed downloads")) self.api.restartFailed() + def setup(self): self.api = self.core.api self.interval = self.MIN_INTERVAL + def coreReady(self): self.pluginConfigChanged(self.__name__, "interval", self.getConfig("interval")) diff --git a/module/plugins/hooks/UnSkipOnFail.py b/module/plugins/hooks/UnSkipOnFail.py index f29383b32..e3c0f6af9 100644 --- a/module/plugins/hooks/UnSkipOnFail.py +++ b/module/plugins/hooks/UnSkipOnFail.py @@ -32,6 +32,7 @@ class UnSkipOnFail(Hook): self.logInfo(_('restart "%s" (pid:%s)') % (pyfile_name, lpid)) self.setLinkStatus(link, "queued") + def findDuplicates(self, pyfile): """ Search all packages for duplicate links to "pyfile". Duplicates are links that would overwrite "pyfile". @@ -61,6 +62,7 @@ class UnSkipOnFail(Hook): dups.append(link) return dups + def setLinkStatus(self, link, new_status): """ Change status of "link" to "new_status". "link" has to be a valid FileData object, diff --git a/module/plugins/hooks/UpdateManager.py b/module/plugins/hooks/UpdateManager.py index cc086af5c..be1d6e5fc 100644 --- a/module/plugins/hooks/UpdateManager.py +++ b/module/plugins/hooks/UpdateManager.py @@ -48,14 +48,17 @@ class UpdateManager(Hook): if value is True and self.core.debug: self.periodical2() + def coreReady(self): 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) + def unload(self): self.pluginConfigChanged(self.__name__, "reloadplugins", False) + def setup(self): self.cb2 = None self.interval = self.MIN_INTERVAL @@ -63,11 +66,13 @@ class UpdateManager(Hook): self.info = {'pyload': False, 'version': None, 'plugins': False} self.mtimes = {} #: store modification time for each plugin + def periodical2(self): if not self.updating: self.autoreloadPlugins() self.cb2 = self.core.scheduler.addJob(4, self.periodical2, threaded=False) + @Expose def autoreloadPlugins(self): """ reload and reindex all modified plugins """ @@ -97,16 +102,19 @@ class UpdateManager(Hook): return True if self.core.pluginManager.reloadPlugins(reloads) else False + def periodical(self): if not self.info['pyload'] and not (self.getConfig("nodebugupdate") and self.core.debug): self.updateThread() + def server_request(self): try: return getURL(self.SERVER_URL, get={'v': self.core.api.getServerVersion()}).splitlines() except: self.logWarning(_("Unable to contact server to get updates")) + @threaded def updateThread(self): self.updating = True @@ -116,11 +124,13 @@ class UpdateManager(Hook): else: self.updating = False + @Expose def updatePlugins(self): """ simple wrapper for calling plugin update quickly """ return self.update(onlyplugin=True) + @Expose def update(self, onlyplugin=False): """ check for updates """ @@ -142,6 +152,7 @@ class UpdateManager(Hook): self.info['version'] = newversion return exitcode #: 0 = No plugins updated; 1 = Plugins updated; 2 = Plugins updated, but restart required; 3 = No plugins updated, new pyLoad version available + def _updatePlugins(self, updates): """ check for plugin updates """ @@ -240,6 +251,7 @@ class UpdateManager(Hook): return exitcode #: 0 = No plugins updated; 1 = Plugins updated; 2 = Plugins updated, but restart required + @Expose def removePlugins(self, type_plugins): """ delete plugins from disk """ diff --git a/module/plugins/hooks/WindowsPhoneToastNotify.py b/module/plugins/hooks/WindowsPhoneToastNotify.py index eed61adbd..cf7920b74 100644 --- a/module/plugins/hooks/WindowsPhoneToastNotify.py +++ b/module/plugins/hooks/WindowsPhoneToastNotify.py @@ -25,12 +25,14 @@ class WindowsPhoneToastNotify(Hook): def setup(self): self.info = {} + def getXmlData(self): myxml = ("<?xml version='1.0' encoding='utf-8'?> <wp:Notification xmlns:wp='WPNotification'> " "<wp:Toast> <wp:Text1>Pyload Mobile</wp:Text1> <wp:Text2>Captcha waiting!</wp:Text2> " "</wp:Toast> </wp:Notification>") return myxml + def doRequest(self): URL = self.getConfig("pushUrl") request = self.getXmlData() @@ -46,6 +48,7 @@ class WindowsPhoneToastNotify(Hook): webservice.close() self.setStorage("LAST_NOTIFY", time.time()) + def newCaptchaTask(self, task): if not self.getConfig("pushId") or not self.getConfig("pushUrl"): return False diff --git a/module/plugins/hooks/XMPPInterface.py b/module/plugins/hooks/XMPPInterface.py index b32eeb40b..c4d6e1b66 100644 --- a/module/plugins/hooks/XMPPInterface.py +++ b/module/plugins/hooks/XMPPInterface.py @@ -30,6 +30,7 @@ class XMPPInterface(IRCInterface, JabberClient): implements(IMessageHandlersProvider) + def __init__(self, core, manager): IRCInterface.__init__(self, core, manager) @@ -58,11 +59,13 @@ class XMPPInterface(IRCInterface, JabberClient): self, ] + def coreReady(self): self.new_package = {} self.start() + def packageFinished(self, pypack): try: if self.getConfig("info_pack"): @@ -70,6 +73,7 @@ class XMPPInterface(IRCInterface, JabberClient): except: pass + def downloadFinished(self, pyfile): try: if self.getConfig("info_file"): @@ -78,6 +82,7 @@ class XMPPInterface(IRCInterface, JabberClient): except: pass + def run(self): # connect to IRC etc. self.connect() @@ -86,21 +91,26 @@ class XMPPInterface(IRCInterface, JabberClient): except Exception, ex: self.logError(ex) + def stream_state_changed(self, state, arg): """This one is called when the state of stream connecting the component to a server changes. This will usually be used to let the user know what is going on.""" self.logDebug("*** State changed: %s %r ***" % (state, arg)) + def disconnected(self): self.logDebug("Client was disconnected") + def stream_closed(self, stream): self.logDebug("Stream was closed", stream) + def stream_error(self, err): self.logDebug("Stream Error", err) + def get_message_handlers(self): """Return list of (message_type, message_handler) tuples. @@ -108,6 +118,7 @@ class XMPPInterface(IRCInterface, JabberClient): in a client session.""" return [("normal", self.message)] + def message(self, stanza): """Message handler for the component.""" subject = stanza.get_subject() @@ -165,9 +176,11 @@ class XMPPInterface(IRCInterface, JabberClient): else: return True + def response(self, msg, origin=""): return self.announce(msg) + def announce(self, message): """ send message to all owners""" for user in self.getConfig("owners").split(";"): @@ -187,9 +200,11 @@ class XMPPInterface(IRCInterface, JabberClient): stream.send(m) + def beforeReconnecting(self, ip): self.disconnect() + def afterReconnecting(self, ip): self.connect() @@ -202,24 +217,29 @@ class VersionHandler(object): implements(IIqHandlersProvider, IFeaturesProvider) + def __init__(self, client): """Just remember who created this.""" self.client = client + def get_features(self): """Return namespace which should the client include in its reply to a disco#info query.""" return ["jabber:iq:version"] + def get_iq_get_handlers(self): """Return list of tuples (element_name, namespace, handler) describing handlers of <iq type='get'/> stanzas""" return [("query", "jabber:iq:version", self.get_version)] + def get_iq_set_handlers(self): """Return empty list, as this class provides no <iq type='set'/> stanza handler.""" return [] + def get_version(self, iq): """Handler for jabber:iq:version queries. diff --git a/module/plugins/hoster/AlldebridCom.py b/module/plugins/hoster/AlldebridCom.py index 74509110c..1b65237a0 100644 --- a/module/plugins/hoster/AlldebridCom.py +++ b/module/plugins/hoster/AlldebridCom.py @@ -31,10 +31,12 @@ class AlldebridCom(Hoster): name += "%s.tmp" % randrange(100, 999) return name + def setup(self): self.chunkLimit = 16 self.resumeDownload = True + def process(self, pyfile): if re.match(self.__pattern__, pyfile.url): new_url = pyfile.url diff --git a/module/plugins/hoster/BayfilesCom.py b/module/plugins/hoster/BayfilesCom.py index b78af6286..8622f4dca 100644 --- a/module/plugins/hoster/BayfilesCom.py +++ b/module/plugins/hoster/BayfilesCom.py @@ -63,12 +63,14 @@ class BayfilesCom(SimpleHoster): self.error("Free link") self.startDownload(m.group(1)) + def handlePremium(self): m = re.search(self.PREMIUM_LINK_PATTERN, self.html) if m is None: self.error("Premium link") self.startDownload(m.group(1)) + def startDownload(self, url): self.logDebug("%s URL: %s" % ("Premium" if self.premium else "Free", url)) self.download(url) diff --git a/module/plugins/hoster/BezvadataCz.py b/module/plugins/hoster/BezvadataCz.py index ffd586f74..9da1861ce 100644 --- a/module/plugins/hoster/BezvadataCz.py +++ b/module/plugins/hoster/BezvadataCz.py @@ -25,6 +25,7 @@ class BezvadataCz(SimpleHoster): def setup(self): self.multiDL = self.resumeDownload = True + def handleFree(self): #download button m = re.search(r'<a class="stahnoutSoubor".*?href="(.*?)"', self.html) @@ -75,12 +76,14 @@ class BezvadataCz(SimpleHoster): self.download(url) + def checkErrors(self): if 'images/button-download-disable.png' in self.html: self.longWait(5 * 60, 24) #: parallel dl limit elif '<div class="infobox' in self.html: self.tempOffline() + def loadcaptcha(self, data, *args, **kwargs): return data.decode("base64") diff --git a/module/plugins/hoster/CzshareCom.py b/module/plugins/hoster/CzshareCom.py index 9f2f23d9e..2b8278a7e 100644 --- a/module/plugins/hoster/CzshareCom.py +++ b/module/plugins/hoster/CzshareCom.py @@ -62,6 +62,7 @@ class CzshareCom(SimpleHoster): return True + def handlePremium(self): # parse download link try: @@ -75,6 +76,7 @@ class CzshareCom(SimpleHoster): self.download("http://sdilej.cz/profi_down.php", post=inputs, disposition=True) self.checkDownloadedFile() + def handleFree(self): # get free url m = re.search(self.FREE_URL_PATTERN, self.html) @@ -126,6 +128,7 @@ class CzshareCom(SimpleHoster): self.download(url) self.checkDownloadedFile() + def checkDownloadedFile(self): # check download check = self.checkDownload({ diff --git a/module/plugins/hoster/DailymotionCom.py b/module/plugins/hoster/DailymotionCom.py index 726663ca6..b4ef6fa92 100644 --- a/module/plugins/hoster/DailymotionCom.py +++ b/module/plugins/hoster/DailymotionCom.py @@ -54,6 +54,7 @@ class DailymotionCom(Hoster): def setup(self): self.resumeDownload = self.multiDL = True + def getStreams(self): streams = [] for result in re.finditer(r"\"(?P<URL>http:\\/\\/www.dailymotion.com\\/cdn\\/H264-(?P<QF>.*?)\\.*?)\"", @@ -65,6 +66,7 @@ class DailymotionCom(Hoster): streams.append((quality, link)) return sorted(streams, key=lambda x: x[0][::-1]) + def getQuality(self): q = self.getConfig("quality") if q == "Lowest": @@ -75,6 +77,7 @@ class DailymotionCom(Hoster): quality = int(q.rsplit(" ")[1][:-1]) return quality + def getLink(self, streams, quality): if quality > 0: for x, s in reversed([item for item in enumerate(streams)]): @@ -91,6 +94,7 @@ class DailymotionCom(Hoster): self.logInfo("Download video quality %sx%s" % s[0]) return s[1] + def checkInfo(self, pyfile): pyfile.name, pyfile.size, pyfile.status, pyfile.url = getInfo([pyfile.url])[0] if pyfile.status == 1: @@ -98,6 +102,7 @@ class DailymotionCom(Hoster): elif pyfile.status == 6: self.tempOffline() + def process(self, pyfile): self.checkInfo(pyfile) diff --git a/module/plugins/hoster/DateiTo.py b/module/plugins/hoster/DateiTo.py index 06a485eae..93840b108 100644 --- a/module/plugins/hoster/DateiTo.py +++ b/module/plugins/hoster/DateiTo.py @@ -65,6 +65,7 @@ class DateiTo(SimpleHoster): self.logDebug("Download URL", download_url) self.download(download_url) + def checkErrors(self): m = re.search(self.PARALELL_PATTERN, self.html) if m: @@ -73,6 +74,7 @@ class DateiTo(SimpleHoster): self.wait(wait_time + 1, False) self.retry() + def doWait(self): m = re.search(self.WAIT_PATTERN, self.html) wait_time = int(m.group(1)) if m else 30 diff --git a/module/plugins/hoster/DebridItaliaCom.py b/module/plugins/hoster/DebridItaliaCom.py index 4e961fa9f..b1a2a4c77 100644 --- a/module/plugins/hoster/DebridItaliaCom.py +++ b/module/plugins/hoster/DebridItaliaCom.py @@ -21,6 +21,7 @@ class DebridItaliaCom(Hoster): self.chunkLimit = -1 self.resumeDownload = True + def process(self, pyfile): if re.match(self.__pattern__, pyfile.url): new_url = pyfile.url diff --git a/module/plugins/hoster/DepositfilesCom.py b/module/plugins/hoster/DepositfilesCom.py index ade91e7d4..16340036f 100644 --- a/module/plugins/hoster/DepositfilesCom.py +++ b/module/plugins/hoster/DepositfilesCom.py @@ -101,6 +101,7 @@ class DepositfilesCom(SimpleHoster): except: self.retry(wait_time=60) + def handlePremium(self): if '<span class="html_download_api-gold_traffic_limit">' in self.html: self.logWarning("Download limit reached") diff --git a/module/plugins/hoster/DlFreeFr.py b/module/plugins/hoster/DlFreeFr.py index b653e2a8f..8932e749c 100644 --- a/module/plugins/hoster/DlFreeFr.py +++ b/module/plugins/hoster/DlFreeFr.py @@ -14,6 +14,7 @@ class CustomBrowser(Browser): def __init__(self, bucket=None, options={}): Browser.__init__(self, bucket, options) + def load(self, *args, **kwargs): post = kwargs.get("post") diff --git a/module/plugins/hoster/EdiskCz.py b/module/plugins/hoster/EdiskCz.py index 5112c55ab..a2e1937fb 100644 --- a/module/plugins/hoster/EdiskCz.py +++ b/module/plugins/hoster/EdiskCz.py @@ -27,6 +27,7 @@ class EdiskCz(SimpleHoster): def setup(self): self.multiDL = False + def process(self, pyfile): url = re.sub("/(stahni|sk/stahni)/", "/en/download/", pyfile.url) diff --git a/module/plugins/hoster/EuroshareEu.py b/module/plugins/hoster/EuroshareEu.py index a4a4e6881..d7c4b2eeb 100644 --- a/module/plugins/hoster/EuroshareEu.py +++ b/module/plugins/hoster/EuroshareEu.py @@ -31,6 +31,7 @@ class EuroshareEu(SimpleHoster): self.multiDL = self.resumeDownload = self.premium self.req.setOption("timeout", 120) + def handlePremium(self): if self.ERR_NOT_LOGGED_IN_PATTERN in self.html: self.account.relogin(self.user) @@ -46,6 +47,7 @@ class EuroshareEu(SimpleHoster): elif check == "json": self.fail(self.lastCheck.group(1)) + def handleFree(self): if re.search(self.ERR_PARDL_PATTERN, self.html) is not None: self.longWait(5 * 60, 12) diff --git a/module/plugins/hoster/FastixRu.py b/module/plugins/hoster/FastixRu.py index 7f61f7d7c..b1e834c61 100644 --- a/module/plugins/hoster/FastixRu.py +++ b/module/plugins/hoster/FastixRu.py @@ -30,10 +30,12 @@ class FastixRu(Hoster): name += "%s.tmp" % randrange(100, 999) return name + def setup(self): self.chunkLimit = 3 self.resumeDownload = True + def process(self, pyfile): if re.match(self.__pattern__, pyfile.url): new_url = pyfile.url diff --git a/module/plugins/hoster/FastshareCz.py b/module/plugins/hoster/FastshareCz.py index 2a8d3af7d..0019a5708 100644 --- a/module/plugins/hoster/FastshareCz.py +++ b/module/plugins/hoster/FastshareCz.py @@ -60,6 +60,7 @@ class FastshareCz(SimpleHoster): elif check == "wrong_captcha": self.retry(max_tries=5, reason="Wrong captcha") + def handlePremium(self): header = self.load(self.pyfile.url, just_header=True) if "location" in header: diff --git a/module/plugins/hoster/FileStoreTo.py b/module/plugins/hoster/FileStoreTo.py index 549335a04..b8e56271b 100644 --- a/module/plugins/hoster/FileStoreTo.py +++ b/module/plugins/hoster/FileStoreTo.py @@ -25,6 +25,7 @@ class FileStoreTo(SimpleHoster): def setup(self): self.resumeDownload = self.multiDL = True + def handleFree(self): self.wait(10) ldc = re.search(r'wert="(\w+)"', self.html).group(1) diff --git a/module/plugins/hoster/FilecloudIo.py b/module/plugins/hoster/FilecloudIo.py index 5672e780d..659a2cc0f 100644 --- a/module/plugins/hoster/FilecloudIo.py +++ b/module/plugins/hoster/FilecloudIo.py @@ -37,6 +37,7 @@ class FilecloudIo(SimpleHoster): self.resumeDownload = self.multiDL = True self.chunkLimit = 1 + def handleFree(self): data = {"ukey": self.file_info['ID']} @@ -104,6 +105,7 @@ class FilecloudIo(SimpleHoster): else: self.fail("Unexpected server response") + def handlePremium(self): akey = self.account.getAccountData(self.user)['akey'] ukey = self.file_info['ID'] diff --git a/module/plugins/hoster/FilefactoryCom.py b/module/plugins/hoster/FilefactoryCom.py index a5942e261..0801ca9a1 100644 --- a/module/plugins/hoster/FilefactoryCom.py +++ b/module/plugins/hoster/FilefactoryCom.py @@ -85,6 +85,7 @@ class FilefactoryCom(SimpleHoster): elif check == "error": self.fail("Unknown error") + def handlePremium(self): header = self.load(self.pyfile.url, just_header=True) if 'location' in header: diff --git a/module/plugins/hoster/FilepostCom.py b/module/plugins/hoster/FilepostCom.py index 0748b64f2..45fb2e644 100644 --- a/module/plugins/hoster/FilepostCom.py +++ b/module/plugins/hoster/FilepostCom.py @@ -93,6 +93,7 @@ class FilepostCom(SimpleHoster): # Download self.download(download_url) + def getJsonResponse(self, get_dict, post_dict, field): json_response = json_loads(self.load('https://filepost.com/files/get/', get=get_dict, post=post_dict)) self.logDebug(json_response) diff --git a/module/plugins/hoster/FilesMailRu.py b/module/plugins/hoster/FilesMailRu.py index 2889e0565..cd8069efc 100644 --- a/module/plugins/hoster/FilesMailRu.py +++ b/module/plugins/hoster/FilesMailRu.py @@ -45,6 +45,7 @@ class FilesMailRu(Hoster): if not self.account: self.multiDL = False + def process(self, pyfile): self.html = self.load(pyfile.url) self.url_pattern = '<a href="(.+?)" onclick="return Act\(this\, \'dlink\'\, event\)">(.+?)</a>' @@ -68,20 +69,24 @@ class FilesMailRu(Hoster): self.download(self.getFileUrl()) self.myPostProcess() + def prepare(self): """You have to wait some seconds. Otherwise you will get a 40Byte HTML Page instead of the file you expected""" self.setWait(10) self.wait() return True + def getFileUrl(self): """gives you the URL to the file. Extracted from the Files.mail.ru HTML-page stored in self.html""" return re.search(self.url_pattern, self.html).group(0).split('<a href="')[1].split('" onclick="return Act')[0] + def getFileName(self): """gives you the Name for each file. Also extracted from the HTML-Page""" return re.search(self.url_pattern, self.html).group(0).split(', event)">')[1].split('</a>')[0] + def myPostProcess(self): # searches the file for HTMl-Code. Sometimes the Redirect # doesn't work (maybe a curl Problem) and you get only a small diff --git a/module/plugins/hoster/FileserveCom.py b/module/plugins/hoster/FileserveCom.py index 4e722eb9f..7a06472d3 100644 --- a/module/plugins/hoster/FileserveCom.py +++ b/module/plugins/hoster/FileserveCom.py @@ -64,6 +64,7 @@ class FileserveCom(Hoster): self.url = "%s%s" % (self.URLS[0], self.file_id) self.logDebug("File ID: %s URL: %s" % (self.file_id, self.url)) + def process(self, pyfile): pyfile.name, pyfile.size, status, self.url = checkFile(self, [self.url])[0] if status != 2: @@ -75,6 +76,7 @@ class FileserveCom(Hoster): else: self.handleFree() + def handleFree(self): self.html = self.load(self.url) action = self.load(self.url, post={"checkDownload": "check"}, decode=True) @@ -132,6 +134,7 @@ class FileserveCom(Hoster): self.thread.m.reconnecting.wait(3) # Ease issue with later downloads appearing to be in parallel + def doTimmer(self): response = self.load(self.url, post={"downloadLink": "wait"}, decode=True) self.logDebug("Wait response : %s" % response[:80]) @@ -150,6 +153,7 @@ class FileserveCom(Hoster): self.setWait(wait_time) self.wait() + def doCaptcha(self): captcha_key = re.search(self.CAPTCHA_KEY_PATTERN, self.html).group("key") recaptcha = ReCaptcha(self) @@ -170,12 +174,14 @@ class FileserveCom(Hoster): else: self.fail("Invalid captcha") + def doLongWait(self, m): wait_time = (int(m.group(1)) * {'seconds': 1, 'minutes': 60, 'hours': 3600}[m.group(2)]) if m else 12 * 60 self.setWait(wait_time, True) self.wait() self.retry() + def handlePremium(self): premium_url = None if self.__name__ == "FileserveCom": diff --git a/module/plugins/hoster/FreakshareCom.py b/module/plugins/hoster/FreakshareCom.py index df06f2e74..6287545cb 100644 --- a/module/plugins/hoster/FreakshareCom.py +++ b/module/plugins/hoster/FreakshareCom.py @@ -26,6 +26,7 @@ class FreakshareCom(Hoster): self.multiDL = False self.req_opts = [] + def process(self, pyfile): self.pyfile = pyfile @@ -62,6 +63,7 @@ class FreakshareCom(Hoster): elif check == "downloadserver": self.retry(5, 15 * 60, "No Download server") + def prepare(self): pyfile = self.pyfile @@ -81,10 +83,12 @@ class FreakshareCom(Hoster): return True + def download_html(self): self.load("http://freakshare.com/index.php", {"language": "EN"}) # Set english language in server session self.html = self.load(self.pyfile.url) + def get_file_url(self): """ returns the absolute downloadable filepath """ @@ -97,6 +101,7 @@ class FreakshareCom(Hoster): else: self.offline() + def get_file_name(self): if not self.html: self.download_html() @@ -110,6 +115,7 @@ class FreakshareCom(Hoster): else: return self.pyfile.url + def get_file_size(self): size = 0 if not self.html: @@ -124,6 +130,7 @@ class FreakshareCom(Hoster): return size + def get_waiting_time(self): if not self.html: self.download_html() @@ -138,6 +145,7 @@ class FreakshareCom(Hoster): else: return 60 + def file_exists(self): """ returns True or False """ @@ -148,6 +156,7 @@ class FreakshareCom(Hoster): else: return True + def get_download_options(self): re_envelope = re.search(r".*?value=\"Free\sDownload\".*?\n*?(.*?<.*?>\n*)*?\n*\s*?</form>", self.html).group(0) # get the whole request diff --git a/module/plugins/hoster/FreeWayMe.py b/module/plugins/hoster/FreeWayMe.py index 996c8b6aa..88ba982f6 100644 --- a/module/plugins/hoster/FreeWayMe.py +++ b/module/plugins/hoster/FreeWayMe.py @@ -20,6 +20,7 @@ class FreeWayMe(Hoster): self.chunkLimit = 1 self.multiDL = self.premium + def process(self, pyfile): if not self.account: self.logError(_("Please enter your %s account or deactivate this plugin") % "FreeWayMe") diff --git a/module/plugins/hoster/FshareVn.py b/module/plugins/hoster/FshareVn.py index 1a995ce28..7ce7cd3e6 100644 --- a/module/plugins/hoster/FshareVn.py +++ b/module/plugins/hoster/FshareVn.py @@ -58,6 +58,7 @@ class FshareVn(SimpleHoster): self.handleFree() self.checkDownloadedFile() + def handleFree(self): self.html = self.load(self.pyfile.url, decode=True) @@ -94,9 +95,11 @@ class FshareVn(SimpleHoster): self.wait() self.download(self.url) + def handlePremium(self): self.download(self.pyfile.url) + def checkErrors(self): if '/error.php?' in self.req.lastEffectiveURL or u"Liên kết bạn chọn không tồn" in self.html: self.offline() @@ -111,6 +114,7 @@ class FshareVn(SimpleHoster): self.logError("Unknown error occured or wait time not parsed") self.retry(30, 2 * 60, "Unknown error") + def checkDownloadedFile(self): # check download check = self.checkDownload({ diff --git a/module/plugins/hoster/GamefrontCom.py b/module/plugins/hoster/GamefrontCom.py index b7e7f0bc8..2009d06ab 100644 --- a/module/plugins/hoster/GamefrontCom.py +++ b/module/plugins/hoster/GamefrontCom.py @@ -28,6 +28,7 @@ class GamefrontCom(Hoster): self.resumeDownload = self.multiDL = True self.chunkLimit = -1 + def process(self, pyfile): self.pyfile = pyfile self.html = self.load(pyfile.url, decode=True) @@ -44,12 +45,14 @@ class GamefrontCom(Hoster): self.download(link) + def _checkOnline(self): if re.search(self.PATTERN_OFFLINE, self.html): return False else: return True + def _getName(self): name = re.search(self.PATTERN_FILENAME, self.html) if name is None: @@ -57,6 +60,7 @@ class GamefrontCom(Hoster): return name.group(1) + def _getLink(self): self.html2 = self.load("http://www.gamefront.com/" + re.search("(files/service/thankyou\\?id=\w+)", self.html).group(1)) diff --git a/module/plugins/hoster/GigapetaCom.py b/module/plugins/hoster/GigapetaCom.py index efec11079..65d940c5a 100644 --- a/module/plugins/hoster/GigapetaCom.py +++ b/module/plugins/hoster/GigapetaCom.py @@ -55,6 +55,7 @@ class GigapetaCom(SimpleHoster): self.logDebug("Download URL: %s" % download_url) self.download(download_url) + def checkErrors(self): if "All threads for IP" in self.html: self.logDebug("Your IP is already downloading a file - wait and retry") diff --git a/module/plugins/hoster/GooIm.py b/module/plugins/hoster/GooIm.py index d27b38f1f..d8f4c6190 100644 --- a/module/plugins/hoster/GooIm.py +++ b/module/plugins/hoster/GooIm.py @@ -27,6 +27,7 @@ class GooIm(SimpleHoster): def setup(self): self.multiDL = self.resumeDownload = True + def handleFree(self): url = self.pyfile.url self.html = self.load(url, cookies=True) diff --git a/module/plugins/hoster/HellshareCz.py b/module/plugins/hoster/HellshareCz.py index 10975829c..7a8579e78 100644 --- a/module/plugins/hoster/HellshareCz.py +++ b/module/plugins/hoster/HellshareCz.py @@ -27,6 +27,7 @@ class HellshareCz(SimpleHoster): self.resumeDownload = self.multiDL = True if self.account else False self.chunkLimit = 1 + def process(self, pyfile): if not self.account: self.fail("User not logged in") diff --git a/module/plugins/hoster/IfolderRu.py b/module/plugins/hoster/IfolderRu.py index 774761049..176225e30 100644 --- a/module/plugins/hoster/IfolderRu.py +++ b/module/plugins/hoster/IfolderRu.py @@ -33,6 +33,7 @@ class IfolderRu(SimpleHoster): self.resumeDownload = self.multiDL = True if self.account else False self.chunkLimit = 1 + def process(self, pyfile): file_id = re.match(self.__pattern__, pyfile.url).group('ID') self.html = self.load("http://rusfolder.com/%s" % file_id, cookies=True, decode=True) diff --git a/module/plugins/hoster/JumbofilesCom.py b/module/plugins/hoster/JumbofilesCom.py index fe0b72804..f43ee7697 100644 --- a/module/plugins/hoster/JumbofilesCom.py +++ b/module/plugins/hoster/JumbofilesCom.py @@ -25,6 +25,7 @@ class JumbofilesCom(SimpleHoster): def setup(self): self.resumeDownload = self.multiDL = True + def handleFree(self): ukey = re.match(self.__pattern__, self.pyfile.url).group(1) post_data = {"id": ukey, "op": "download3", "rand": ""} diff --git a/module/plugins/hoster/LetitbitNet.py b/module/plugins/hoster/LetitbitNet.py index 8443c2206..002c986e2 100644 --- a/module/plugins/hoster/LetitbitNet.py +++ b/module/plugins/hoster/LetitbitNet.py @@ -56,7 +56,7 @@ class LetitbitNet(SimpleHoster): def setup(self): self.resumeDownload = True - #TODO confirm that resume works + def getFileInfo(self): api_rep = api_download_info(self.pyfile.url) @@ -67,6 +67,7 @@ class LetitbitNet(SimpleHoster): else: self.offline() + def handleFree(self): action, inputs = self.parseHtmlForm('id="ifree_form"') if not action: @@ -149,6 +150,7 @@ class LetitbitNet(SimpleHoster): else: self.fail("Download did not finish correctly") + def handlePremium(self): api_key = self.user premium_key = self.account.getAccountData(self.user)['password'] diff --git a/module/plugins/hoster/LinksnappyCom.py b/module/plugins/hoster/LinksnappyCom.py index 3372a505d..b96c9492c 100644 --- a/module/plugins/hoster/LinksnappyCom.py +++ b/module/plugins/hoster/LinksnappyCom.py @@ -27,6 +27,7 @@ class LinksnappyCom(Hoster): self.chunkLimit = -1 self.resumeDownload = True + def process(self, pyfile): if re.match(self.__pattern__, pyfile.url): new_url = pyfile.url @@ -67,6 +68,7 @@ class LinksnappyCom(Hoster): if check == "html302": self.retry(wait_time=5, reason="Linksnappy returns only HTML data.") + @staticmethod def _get_host(url): host = urlsplit(url).netloc diff --git a/module/plugins/hoster/LuckyShareNet.py b/module/plugins/hoster/LuckyShareNet.py index fe5a80679..4a4d4a047 100644 --- a/module/plugins/hoster/LuckyShareNet.py +++ b/module/plugins/hoster/LuckyShareNet.py @@ -38,6 +38,7 @@ class LuckyShareNet(SimpleHoster): self.retry(reason="Hash expired") return json_loads(rep) + # TODO: There should be a filesize limit for free downloads # TODO: Some files could not be downloaded in free mode def handleFree(self): diff --git a/module/plugins/hoster/MediafireCom.py b/module/plugins/hoster/MediafireCom.py index c2581aa9f..31b85b433 100644 --- a/module/plugins/hoster/MediafireCom.py +++ b/module/plugins/hoster/MediafireCom.py @@ -71,6 +71,7 @@ class MediafireCom(SimpleHoster): def setup(self): self.multiDL = False + def process(self, pyfile): pyfile.url = re.sub(r'/view/?\?', '/?', pyfile.url) @@ -93,6 +94,7 @@ class MediafireCom(SimpleHoster): self.multiDL = True self.download(self.url, disposition=True) + def handleFree(self): passwords = self.getPassword().splitlines() while self.PASSWORD_PATTERN in self.html: @@ -111,6 +113,7 @@ class MediafireCom(SimpleHoster): self.download(download_url) + def checkCaptcha(self): solvemedia = SolveMedia(self) diff --git a/module/plugins/hoster/MegaDebridEu.py b/module/plugins/hoster/MegaDebridEu.py index ca0569c6b..68b7e0c1e 100644 --- a/module/plugins/hoster/MegaDebridEu.py +++ b/module/plugins/hoster/MegaDebridEu.py @@ -29,6 +29,7 @@ class MegaDebridEu(Hoster): except IndexError: return "" + def process(self, pyfile): if re.match(self.__pattern__, pyfile.url): new_url = pyfile.url @@ -47,6 +48,7 @@ class MegaDebridEu(Hoster): pyfile.name = filename self.download(new_url, disposition=True) + def connectToApi(self): """ Connexion to the mega-debrid API @@ -63,6 +65,7 @@ class MegaDebridEu(Hoster): else: return False + def debridLink(self, linkToDebrid): """ Debrid a link @@ -78,6 +81,7 @@ class MegaDebridEu(Hoster): else: self.exitOnFail("Unable to debrid %s" % linkToDebrid) + def exitOnFail(self, msg): """ exit the plugin on fail case diff --git a/module/plugins/hoster/MegaRapidCz.py b/module/plugins/hoster/MegaRapidCz.py index 153f6ea8b..01b2aaf70 100644 --- a/module/plugins/hoster/MegaRapidCz.py +++ b/module/plugins/hoster/MegaRapidCz.py @@ -48,6 +48,7 @@ class MegaRapidCz(SimpleHoster): def setup(self): self.chunkLimit = 1 + def handlePremium(self): try: self.html = self.load(self.pyfile.url, decode=True) diff --git a/module/plugins/hoster/MegacrypterCom.py b/module/plugins/hoster/MegacrypterCom.py index 67dec2a0b..5464dedce 100644 --- a/module/plugins/hoster/MegacrypterCom.py +++ b/module/plugins/hoster/MegacrypterCom.py @@ -29,6 +29,7 @@ class MegacrypterCom(MegaNz): self.logDebug("API Response: " + resp) return json_loads(resp) + def process(self, pyfile): # match is guaranteed because plugin was chosen to handle url node = re.match(self.__pattern__, pyfile.url).group(1) diff --git a/module/plugins/hoster/MultishareCz.py b/module/plugins/hoster/MultishareCz.py index 1ce16f30c..f7c8b47fd 100644 --- a/module/plugins/hoster/MultishareCz.py +++ b/module/plugins/hoster/MultishareCz.py @@ -38,9 +38,11 @@ class MultishareCz(SimpleHoster): else: self.handleOverriden() + def handleFree(self): self.download("http://www.multishare.cz/html/download_free.php?ID=%s" % self.fileID) + def handlePremium(self): if not self.checkCredit(): self.logWarning("Not enough credit left to download file") @@ -48,6 +50,7 @@ class MultishareCz(SimpleHoster): self.download("http://www.multishare.cz/html/download_premium.php?ID=%s" % self.fileID) + def handleOverriden(self): if not self.premium: self.fail("Only premium users can download from other hosters") @@ -63,6 +66,7 @@ class MultishareCz(SimpleHoster): self.logDebug(url, params) self.download(url, get=params) + def checkCredit(self): self.acc_info = self.account.getAccountInfo(self.user, True) self.logInfo("User %s has %i MB left" % (self.user, self.acc_info['trafficleft'] / 1024)) diff --git a/module/plugins/hoster/MyfastfileCom.py b/module/plugins/hoster/MyfastfileCom.py index 8fbae3e0a..d3a699e98 100644 --- a/module/plugins/hoster/MyfastfileCom.py +++ b/module/plugins/hoster/MyfastfileCom.py @@ -22,6 +22,7 @@ class MyfastfileCom(Hoster): self.chunkLimit = -1 self.resumeDownload = True + def process(self, pyfile): if re.match(self.__pattern__, pyfile.url): new_url = pyfile.url diff --git a/module/plugins/hoster/MyvideoDe.py b/module/plugins/hoster/MyvideoDe.py index 1f02b5b69..1f8c785a7 100644 --- a/module/plugins/hoster/MyvideoDe.py +++ b/module/plugins/hoster/MyvideoDe.py @@ -24,19 +24,23 @@ class MyvideoDe(Hoster): pyfile.name = self.get_file_name() self.download(self.get_file_url()) + def download_html(self): self.html = self.load(self.pyfile.url) + def get_file_url(self): videoId = re.search(r"addVariable\('_videoid','(.*)'\);p.addParam\('quality'", self.html).group(1) videoServer = re.search("rel='image_src' href='(.*)thumbs/.*' />", self.html).group(1) file_url = videoServer + videoId + ".flv" return file_url + def get_file_name(self): file_name_pattern = r'<h1 class=\'globalHd\'>(.*)</h1>' return unescape(re.search(file_name_pattern, self.html).group(1).replace("/", "") + '.flv') + def file_exists(self): self.download_html() self.load(str(self.pyfile.url), cookies=False, just_header=True) diff --git a/module/plugins/hoster/NetloadIn.py b/module/plugins/hoster/NetloadIn.py index 0c255afbe..800de3068 100644 --- a/module/plugins/hoster/NetloadIn.py +++ b/module/plugins/hoster/NetloadIn.py @@ -66,12 +66,14 @@ class NetloadIn(Hoster): def setup(self): self.multiDL = self.resumeDownload = self.premium + def process(self, pyfile): self.url = pyfile.url self.prepare() pyfile.setStatus("downloading") self.proceed(self.url) + def prepare(self): self.download_api_data() @@ -93,6 +95,7 @@ class NetloadIn(Hoster): self.fail("Failed") return False + def download_api_data(self, n=0): url = self.url id_regex = re.compile(self.__pattern__) @@ -134,6 +137,7 @@ class NetloadIn(Hoster): else: self.api_data = False + def final_wait(self, page): wait_time = self.get_wait_time(page) self.setWait(wait_time) @@ -141,6 +145,7 @@ class NetloadIn(Hoster): self.wait() self.url = self.get_file_url(page) + def download_html(self): self.logDebug("Netload: Entering download_html") page = self.load(self.url, decode=True) @@ -227,6 +232,7 @@ class NetloadIn(Hoster): return False + def get_file_url(self, page): try: file_url_pattern = r'<a class="Orange_Link" href="(http://.+)".?>Or click here' @@ -242,10 +248,12 @@ class NetloadIn(Hoster): self.logDebug("Netload: Getting final link failed") return None + def get_wait_time(self, page): wait_seconds = int(re.search(r"countdown\((.+),'change\(\)'\)", page).group(1)) / 100 return wait_seconds + def proceed(self, url): self.logDebug("Netload: Downloading..") diff --git a/module/plugins/hoster/NowDownloadEu.py b/module/plugins/hoster/NowDownloadEu.py index 57d31acd5..256b2c801 100644 --- a/module/plugins/hoster/NowDownloadEu.py +++ b/module/plugins/hoster/NowDownloadEu.py @@ -34,6 +34,7 @@ class NowDownloadEu(SimpleHoster): self.multiDL = self.resumeDownload = True self.chunkLimit = -1 + def handleFree(self): tokenlink = re.search(self.TOKEN_PATTERN, self.html) continuelink = re.search(self.CONTINUE_PATTERN, self.html) diff --git a/module/plugins/hoster/OverLoadMe.py b/module/plugins/hoster/OverLoadMe.py index 5c3a36318..1b50ae8a2 100644 --- a/module/plugins/hoster/OverLoadMe.py +++ b/module/plugins/hoster/OverLoadMe.py @@ -31,10 +31,12 @@ class OverLoadMe(Hoster): name += "%s.tmp" % randrange(100, 999) return name + def setup(self): self.chunkLimit = 5 self.resumeDownload = True + def process(self, pyfile): if re.match(self.__pattern__, pyfile.url): new_url = pyfile.url diff --git a/module/plugins/hoster/PornhostCom.py b/module/plugins/hoster/PornhostCom.py index 51426de71..6fb0fad83 100644 --- a/module/plugins/hoster/PornhostCom.py +++ b/module/plugins/hoster/PornhostCom.py @@ -25,11 +25,13 @@ class PornhostCom(Hoster): pyfile.name = self.get_file_name() self.download(self.get_file_url()) + # Old interface def download_html(self): url = self.pyfile.url self.html = self.load(url) + def get_file_url(self): """ returns the absolute downloadable filepath """ @@ -47,6 +49,7 @@ class PornhostCom(Hoster): return url.group(1).strip() + def get_file_name(self): if not self.html: self.download_html() @@ -63,6 +66,7 @@ class PornhostCom(Hoster): return name + def file_exists(self): """ returns True or False """ diff --git a/module/plugins/hoster/PornhubCom.py b/module/plugins/hoster/PornhubCom.py index 60b57d2c8..01204010d 100644 --- a/module/plugins/hoster/PornhubCom.py +++ b/module/plugins/hoster/PornhubCom.py @@ -25,10 +25,12 @@ class PornhubCom(Hoster): pyfile.name = self.get_file_name() self.download(self.get_file_url()) + def download_html(self): url = self.pyfile.url self.html = self.load(url) + def get_file_url(self): """ returns the absolute downloadable filepath """ @@ -57,6 +59,7 @@ class PornhubCom(Hoster): return re.search(r'flv_url.*(http.*?)##post_roll', content).group(1) + def get_file_name(self): if not self.html: self.download_html() @@ -73,6 +76,7 @@ class PornhubCom(Hoster): return name + '.flv' + def file_exists(self): """ returns True or False """ diff --git a/module/plugins/hoster/PremiumTo.py b/module/plugins/hoster/PremiumTo.py index ed96f315b..8595304c4 100644 --- a/module/plugins/hoster/PremiumTo.py +++ b/module/plugins/hoster/PremiumTo.py @@ -26,6 +26,7 @@ class PremiumTo(Hoster): self.resumeDownload = True self.chunkLimit = 1 + def process(self, pyfile): if not self.account: self.logError(_("Please enter your %s account or deactivate this plugin") % "premium.to") @@ -66,6 +67,7 @@ class PremiumTo(Hoster): if err: self.fail(err) + def getTraffic(self): try: api_r = self.load("http://premium.to/api/straffic.php", diff --git a/module/plugins/hoster/QuickshareCz.py b/module/plugins/hoster/QuickshareCz.py index 5946565c6..12de0fa5b 100644 --- a/module/plugins/hoster/QuickshareCz.py +++ b/module/plugins/hoster/QuickshareCz.py @@ -53,6 +53,7 @@ class QuickshareCz(SimpleHoster): if check == "err": self.fail("File not m or plugin defect") + def handleFree(self): # get download url download_url = '%s/download.php' % self.jsvars['server'] @@ -83,6 +84,7 @@ class QuickshareCz(SimpleHoster): # download file self.download(download_url) + def handlePremium(self): download_url = '%s/download_premium.php' % self.jsvars['server'] data = dict((x, self.jsvars[x]) for x in self.jsvars if x in ("ID1", "ID2", "ID4", "ID5")) diff --git a/module/plugins/hoster/RPNetBiz.py b/module/plugins/hoster/RPNetBiz.py index 3132001ed..0d032ef2f 100644 --- a/module/plugins/hoster/RPNetBiz.py +++ b/module/plugins/hoster/RPNetBiz.py @@ -22,6 +22,7 @@ class RPNetBiz(Hoster): self.chunkLimit = -1 self.resumeDownload = True + def process(self, pyfile): if re.match(self.__pattern__, pyfile.url): link_status = {'generated': pyfile.url} diff --git a/module/plugins/hoster/RapidshareCom.py b/module/plugins/hoster/RapidshareCom.py index befbbb123..2dd36b84e 100644 --- a/module/plugins/hoster/RapidshareCom.py +++ b/module/plugins/hoster/RapidshareCom.py @@ -70,10 +70,12 @@ class RapidshareCom(Hoster): self.chunkLimit = -1 if self.premium else 1 self.multiDL = self.resumeDownload = self.premium + def process(self, pyfile): self.url = pyfile.url self.prepare() + def prepare(self): m = re.match(self.__pattern__, self.url) @@ -106,6 +108,7 @@ class RapidshareCom(Hoster): else: self.fail("Unknown response code.") + def handleFree(self): while self.no_download: self.dl_dict = self.freeWait() @@ -128,12 +131,14 @@ class RapidshareCom(Hoster): self.offset += 5 self.handleFree() + def handlePremium(self): info = self.account.getAccountInfo(self.user, True) self.logDebug("%s: Use Premium Account" % self.__name__) url = self.api_data['mirror'] self.download(url, get={"directstart": 1}) + def download_api_data(self, force=False): """ http://images.rapidshare.com/apidoc.txt @@ -168,6 +173,7 @@ class RapidshareCom(Hoster): self.api_data['mirror'] = "http://rs%(serverid)s%(shorthost)s.rapidshare.com/files/%(fileid)s/%(filename)s" % self.api_data + def freeWait(self): """downloads html with the important information """ @@ -219,6 +225,7 @@ class RapidshareCom(Hoster): return dl_dict + def get_file_name(self): if self.api_data['filename']: return self.api_data['filename'] diff --git a/module/plugins/hoster/RealdebridCom.py b/module/plugins/hoster/RealdebridCom.py index fe6db98cb..cf1f825ef 100644 --- a/module/plugins/hoster/RealdebridCom.py +++ b/module/plugins/hoster/RealdebridCom.py @@ -32,10 +32,12 @@ class RealdebridCom(Hoster): name += "%s.tmp" % randrange(100, 999) return name + def setup(self): self.chunkLimit = 3 self.resumeDownload = True + def process(self, pyfile): if re.match(self.__pattern__, pyfile.url): new_url = pyfile.url diff --git a/module/plugins/hoster/RedtubeCom.py b/module/plugins/hoster/RedtubeCom.py index f8ac81693..d136d145b 100644 --- a/module/plugins/hoster/RedtubeCom.py +++ b/module/plugins/hoster/RedtubeCom.py @@ -26,10 +26,12 @@ class RedtubeCom(Hoster): pyfile.name = self.get_file_name() self.download(self.get_file_url()) + def download_html(self): url = self.pyfile.url self.html = self.load(url) + def get_file_url(self): """ returns the absolute downloadable filepath """ @@ -40,12 +42,14 @@ class RedtubeCom(Hoster): return file_url + def get_file_name(self): if not self.html: self.download_html() return re.search('<title>(.*?)- RedTube - Free Porn Videos', self.html).group(1).strip() + ".flv" + def file_exists(self): """ returns True or False """ diff --git a/module/plugins/hoster/RehostTo.py b/module/plugins/hoster/RehostTo.py index e1f719c19..80465724d 100644 --- a/module/plugins/hoster/RehostTo.py +++ b/module/plugins/hoster/RehostTo.py @@ -20,10 +20,12 @@ class RehostTo(Hoster): def getFilename(self, url): return unquote(url.rsplit("/", 1)[1]) + def setup(self): self.chunkLimit = 1 self.resumeDownload = True + def process(self, pyfile): if not self.account: self.logError(_("Please enter your %s account or deactivate this plugin") % "rehost.to") diff --git a/module/plugins/hoster/RemixshareCom.py b/module/plugins/hoster/RemixshareCom.py index 4e812b20d..94be78b4f 100644 --- a/module/plugins/hoster/RemixshareCom.py +++ b/module/plugins/hoster/RemixshareCom.py @@ -38,6 +38,7 @@ class RemixshareCom(SimpleHoster): self.multiDL = True self.chunkLimit = 1 + def handleFree(self): b = re.search(self.LINK_PATTERN, self.html) if not b: diff --git a/module/plugins/hoster/ShareplaceCom.py b/module/plugins/hoster/ShareplaceCom.py index 84be2706f..bef14de0f 100644 --- a/module/plugins/hoster/ShareplaceCom.py +++ b/module/plugins/hoster/ShareplaceCom.py @@ -24,6 +24,7 @@ class ShareplaceCom(Hoster): self.prepare() self.download(self.get_file_url()) + def prepare(self): if not self.file_exists(): self.offline() @@ -35,6 +36,7 @@ class ShareplaceCom(Hoster): self.logDebug("%s: Waiting %d seconds." % (self.__name__, wait_time)) self.wait() + def get_waiting_time(self): if not self.html: self.download_html() @@ -48,10 +50,12 @@ class ShareplaceCom(Hoster): return sec + def download_html(self): url = re.sub("shareplace.com\/\?", "shareplace.com//index1.php/?a=", self.pyfile.url) self.html = self.load(url, decode=True) + def get_file_url(self): """ returns the absolute downloadable filepath """ @@ -66,12 +70,14 @@ class ShareplaceCom(Hoster): else: self.fail("absolute filepath could not be found. offline? ") + def get_file_name(self): if not self.html: self.download_html() return re.search("\s*(.*?)\s*", self.html).group(1) + def file_exists(self): """ returns True or False """ diff --git a/module/plugins/hoster/SimplyPremiumCom.py b/module/plugins/hoster/SimplyPremiumCom.py index e78a1f469..965c1421a 100644 --- a/module/plugins/hoster/SimplyPremiumCom.py +++ b/module/plugins/hoster/SimplyPremiumCom.py @@ -24,6 +24,7 @@ class SimplyPremiumCom(Hoster): self.chunkLimit = 16 self.resumeDownload = False + def process(self, pyfile): if re.match(self.__pattern__, pyfile.url): new_url = pyfile.url diff --git a/module/plugins/hoster/SimplydebridCom.py b/module/plugins/hoster/SimplydebridCom.py index c7df990e3..dea82591d 100644 --- a/module/plugins/hoster/SimplydebridCom.py +++ b/module/plugins/hoster/SimplydebridCom.py @@ -21,6 +21,7 @@ class SimplydebridCom(Hoster): self.resumeDownload = self.multiDL = True self.chunkLimit = 1 + def process(self, pyfile): if not self.account: self.logError(_("Please enter your %s account or deactivate this plugin") % "simply-debrid.com") diff --git a/module/plugins/hoster/StreamCz.py b/module/plugins/hoster/StreamCz.py index 1459ca5f1..d4ebd7701 100644 --- a/module/plugins/hoster/StreamCz.py +++ b/module/plugins/hoster/StreamCz.py @@ -42,8 +42,8 @@ class StreamCz(Hoster): self.multiDL = True self.resumeDownload = True - def process(self, pyfile): + def process(self, pyfile): self.html = self.load(pyfile.url, decode=True) if re.search(self.OFFLINE_PATTERN, self.html): diff --git a/module/plugins/hoster/TwoSharedCom.py b/module/plugins/hoster/TwoSharedCom.py index 6b755219a..e1cdead9b 100644 --- a/module/plugins/hoster/TwoSharedCom.py +++ b/module/plugins/hoster/TwoSharedCom.py @@ -27,6 +27,7 @@ class TwoSharedCom(SimpleHoster): def setup(self): self.resumeDownload = self.multiDL = True + def handleFree(self): m = re.search(self.LINK_PATTERN, self.html) if m is None: diff --git a/module/plugins/hoster/UlozTo.py b/module/plugins/hoster/UlozTo.py index 2d4762ba6..9b70c8efa 100644 --- a/module/plugins/hoster/UlozTo.py +++ b/module/plugins/hoster/UlozTo.py @@ -44,6 +44,7 @@ class UlozTo(SimpleHoster): self.multiDL = self.premium self.resumeDownload = True + def process(self, pyfile): pyfile.url = re.sub(r"(?<=http://)([^/]+)", "www.ulozto.net", pyfile.url) self.html = self.load(pyfile.url, decode=True, cookies=True) @@ -81,6 +82,7 @@ class UlozTo(SimpleHoster): self.doCheckDownload() + def handleFree(self): action, inputs = self.parseHtmlForm('id="frm-downloadDialog-freeDownloadForm"') if not action or not inputs: @@ -115,11 +117,13 @@ class UlozTo(SimpleHoster): self.multiDL = True self.download("http://www.ulozto.net" + action, post=inputs, cookies=True, disposition=True) + def handlePremium(self): self.download(self.pyfile.url + "?do=directDownload", disposition=True) #parsed_url = self.findDownloadURL(premium=True) #self.download(parsed_url, post={"download": "Download"}) + def findDownloadURL(self, premium=False): msg = "%s link" % ("Premium" if premium else "Free") m = re.search(self.PREMIUM_URL_PATTERN if premium else self.FREE_URL_PATTERN, self.html) @@ -129,6 +133,7 @@ class UlozTo(SimpleHoster): self.logDebug("%s: %s" % (msg, parsed_url)) return parsed_url + def doCheckDownload(self): check = self.checkDownload({ "wrong_captcha": re.compile(r'