From 0331df435b912d8abfc012d15fd8be9ae90ad78d Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Sun, 7 Dec 2014 16:03:18 +0100 Subject: Fix previous merge --- module/plugins/accounts/RapiduNet.py | 45 ---------------- module/plugins/accounts/SafesharingEu.py | 16 ------ module/plugins/crypter/Go4UpCom.py | 49 ----------------- module/plugins/hooks/SkipRev.py | 81 ---------------------------- module/plugins/hoster/DodanePl.py | 18 ------- module/plugins/hoster/NowDownloadSx.py | 64 ----------------------- module/plugins/hoster/NowVideoSx.py | 44 ---------------- module/plugins/hoster/RapiduNet.py | 82 ----------------------------- module/plugins/hoster/SafesharingEu.py | 25 --------- module/plugins/hoster/UploadableCh.py | 90 -------------------------------- 10 files changed, 514 deletions(-) delete mode 100644 module/plugins/accounts/RapiduNet.py delete mode 100644 module/plugins/accounts/SafesharingEu.py delete mode 100644 module/plugins/crypter/Go4UpCom.py delete mode 100644 module/plugins/hooks/SkipRev.py delete mode 100644 module/plugins/hoster/DodanePl.py delete mode 100644 module/plugins/hoster/NowDownloadSx.py delete mode 100644 module/plugins/hoster/NowVideoSx.py delete mode 100644 module/plugins/hoster/RapiduNet.py delete mode 100644 module/plugins/hoster/SafesharingEu.py delete mode 100644 module/plugins/hoster/UploadableCh.py (limited to 'module/plugins') diff --git a/module/plugins/accounts/RapiduNet.py b/module/plugins/accounts/RapiduNet.py deleted file mode 100644 index 2fabb6120..000000000 --- a/module/plugins/accounts/RapiduNet.py +++ /dev/null @@ -1,45 +0,0 @@ -# -*- coding: utf-8 -*- - -import re -from module.plugins.Account import Account -from module.common.json_layer import json_loads - - -class RapiduNet(Account): - __name__ = "RapiduNet" - __type__ = "account" - __version__ = "0.01" - - __description__ = """Rapidu.net account plugin""" - __license__ = "GPLv3" - __authors__ = [("prOq", None)] - - - ACCOUNT_INFO_PATTERN = 'Account: (.*?)' - - - def loadAccountInfo(self, user, req): - premium = False - - req.load('https://rapidu.net/ajax.php?a=getChangeLang', post={"_go": "", "lang": "en"}) - self.html = req.load('https://rapidu.net/', decode=True) - - m = re.search(self.ACCOUNT_INFO_PATTERN, self.html) - if m: - if m.group(1) == "Premium": - premium = True - - return {"validuntil": None, "trafficleft": None, "premium": premium} - - - def login(self, user, data, req): - try: - json = req.load('https://rapidu.net/ajax.php?a=getUserLogin', post={"_go": "", "login": user, "pass": data['password'], "member": "1"}) - json = json_loads(json) - self.logDebug(json) - - if not json['message'] == "success": - self.wrongPassword() - except Exception, e: - self.logError(e) - diff --git a/module/plugins/accounts/SafesharingEu.py b/module/plugins/accounts/SafesharingEu.py deleted file mode 100644 index 2e58d33b3..000000000 --- a/module/plugins/accounts/SafesharingEu.py +++ /dev/null @@ -1,16 +0,0 @@ -# -*- coding: utf-8 -*- - -from module.plugins.internal.XFSAccount import XFSAccount - - -class SafesharingEu(XFSAccount): - __name__ = "SafesharingEu" - __type__ = "account" - __version__ = "0.02" - - __description__ = """Safesharing.eu account plugin""" - __license__ = "GPLv3" - __authors__ = [("guidobelix", "guidobelix@hotmail.it")] - - - HOSTER_DOMAIN = "safesharing.eu" diff --git a/module/plugins/crypter/Go4UpCom.py b/module/plugins/crypter/Go4UpCom.py deleted file mode 100644 index 102bc32b5..000000000 --- a/module/plugins/crypter/Go4UpCom.py +++ /dev/null @@ -1,49 +0,0 @@ -# -*- coding: utf-8 -*- - -import re - -from urlparse import urljoin - -from module.plugins.internal.SimpleCrypter import SimpleCrypter, create_getInfo - - -class Go4UpCom(SimpleCrypter): - __name__ = "Go4UpCom" - __type__ = "crypter" - __version__ = "0.11" - - __pattern__ = r'http://go4up\.com/(dl/\w{12}|rd/\w{12}/\d+)' - - __description__ = """Go4Up.com decrypter plugin""" - __license__ = "GPLv3" - __authors__ = [("rlindner81", "rlindner81@gmail.com"), - ("Walter Purcaro", "vuolter@gmail.com")] - - - LINK_PATTERN = r'(http://go4up\.com/rd/.+?)<' - - NAME_PATTERN = r'Download (.+?)<' - - OFFLINE_PATTERN = r'>\s*(404 Page Not Found|File not Found|Mirror does not exist)' - - - def getLinks(self - links = [] - - m = re.search(r'(/download/gethosts/.+?)"') - if m: - self.html = self.load(urljoin("http://go4up.com/", m.group(1))) - pages = [self.load(url) for url in re.findall(self.LINK_PATTERN, self.html)] - else: - pages = [self.html] - - for html in pages: - try: - links.append(re.search(r'<b><a href="(.+?)"', html).group(1)) - except: - continue - - return links - - -getInfo = create_getInfo(Go4UpCom) diff --git a/module/plugins/hooks/SkipRev.py b/module/plugins/hooks/SkipRev.py deleted file mode 100644 index 76a48a255..000000000 --- a/module/plugins/hooks/SkipRev.py +++ /dev/null @@ -1,81 +0,0 @@ -# -*- coding: utf-8 -*- - -import re - -from urllib import unquote -from urlparse import urljoin, urlparse - -from module.plugins.Hook import Hook -from module.plugins.Plugin import SkipDownload - - -class SkipRev(Hook): - __name__ = "SkipRev" - __type__ = "hook" - __version__ = "0.13" - - __config__ = [("auto", "bool", "Automatically keep all rev files needed by package", True), - ("tokeep", "int" , "Min number of rev files to keep for package" , 1), - ("unskip", "bool", "Restart a skipped rev when download fails" , True)] - - __description__ = """Skip files ending with extension rev""" - __license__ = "GPLv3" - __authors__ = [("Walter Purcaro", "vuolter@gmail.com")] - - - def _setup(self): - super(self.pyfile.plugin, self).setup() - if self.pyfile.hasStatus("skipped"): - raise SkipDownload(self.pyfile.getStatusName() or self.pyfile.pluginname) - - - def pyname(self, pyfile): - url = pyfile.url - plugin = pyfile.plugin - - if hasattr(plugin, "info") and 'name' in plugin.info and plugin.info['name']: - name = plugin.info['name'] - - elif hasattr(plugin, "parseInfo"): - name = next(plugin.parseInfo([url]))['name'] - - elif hasattr(plugin, "getInfo"): #@NOTE: if parseInfo was not found, getInfo should be missing too - name = plugin.getInfo(url)['name'] - - else: - self.logWarning("Unable to grab file name") - name = urlparse(unquote(url)).path.split('/')[-1]) - - return name - - - def downloadPreparing(self, pyfile): - if pyfile.getStatusName() is "unskipped" or not pyname(pyfile).endswith(".rev"): - return - - tokeep = self.getConfig("tokeep") - - if tokeep > 0: - saved = [True for link in pyfile.package().getChildren() \ - if link.name.endswith(".rev") and (link.hasStatus("finished") or link.hasStatus("downloading"))].count(True) - - if saved < tokeep: - return - - pyfile.setCustomStatus("SkipRev", "skipped") - pyfile.plugin.setup = _setup #: work-around: inject status checker inside the preprocessing routine of the plugin - - - def downloadFailed(self, pyfile): - if self.getConfig("auto") is False: - - if self.getConfig("unskip") is False: - return - - if not pyfile.name.endswith(".rev"): - return - - for link in pyfile.package().getChildren(): - if link.hasStatus("skipped") and link.name.endswith(".rev"): - link.setCustomStatus("unskipped", "queued") - return diff --git a/module/plugins/hoster/DodanePl.py b/module/plugins/hoster/DodanePl.py deleted file mode 100644 index 58f1c02d8..000000000 --- a/module/plugins/hoster/DodanePl.py +++ /dev/null @@ -1,18 +0,0 @@ -# -*- coding: utf-8 -*- - -from module.plugins.internal.DeadHoster import DeadHoster, parseFileInfo - - -class DodanePl(DeadHoster): - __name__ = "DodanePl" - __type__ = "hoster" - __version__ = "0.03" - - __pattern__ = r'http://(?:www\.)?dodane\.pl/file/\d+' - - __description__ = """Dodane.pl hoster plugin""" - __license__ = "GPLv3" - __authors__ = [("z00nx", "z00nx0@gmail.com")] - - -getInfo = create_getInfo(DodanePl) diff --git a/module/plugins/hoster/NowDownloadSx.py b/module/plugins/hoster/NowDownloadSx.py deleted file mode 100644 index d2ae08954..000000000 --- a/module/plugins/hoster/NowDownloadSx.py +++ /dev/null @@ -1,64 +0,0 @@ -# -*- coding: utf-8 -*- - -import re - -from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo -from module.utils import fixup - - -class NowDownloadSx(SimpleHoster): - __name__ = "NowDownloadSx" - __type__ = "hoster" - __version__ = "0.05" - - __pattern__ = r'http://(?:www\.)?nowdownload\.(at|ch|co|eu|sx)/(dl/|download\.php\?id=)\w+' - - __description__ = """NowDownload.sx hoster plugin""" - __license__ = "GPLv3" - __authors__ = [("godofdream", "soilfiction@gmail.com"), - ("Walter Purcaro", "vuolter@gmail.com")] - - - 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+)"' - CONTINUE_PATTERN = r'"(/dl2/\w+/\w+)"' - WAIT_PATTERN = r'\.countdown\(\{until: \+(\d+),' - LINK_PATTERN = r'(http://s\d+\.coolcdn\.info/nowdownload/.+?)["\']' - - NAME_REPLACEMENTS = [("&#?\w+;", fixup), (r'<[^>]*>', '')] - - - def setup(self): - self.resumeDownload = True - self.multiDL = True - self.chunkLimit = -1 - - - def handleFree(self): - 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.error() - - m = re.search(self.WAIT_PATTERN, self.html) - if m: - wait = int(m.group(1)) - else: - wait = 60 - - baseurl = "http://www.nowdownload.at" - self.html = self.load(baseurl + str(tokenlink.group(1))) - self.wait(wait) - - self.html = self.load(baseurl + str(continuelink.group(1))) - - url = re.search(self.LINK_PATTERN, self.html) - if url is None: - self.error(_("Download link not found")) - - self.download(str(url.group(1))) - - -getInfo = create_getInfo(NowDownloadSx) diff --git a/module/plugins/hoster/NowVideoSx.py b/module/plugins/hoster/NowVideoSx.py deleted file mode 100644 index b59bd79da..000000000 --- a/module/plugins/hoster/NowVideoSx.py +++ /dev/null @@ -1,44 +0,0 @@ -# -*- coding: utf-8 -*- - -import re - -from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo - - -class NowVideoSx(SimpleHoster): - __name__ = "NowVideoSx" - __type__ = "hoster" - __version__ = "0.07" - - __pattern__ = r'http://(?:www\.)?nowvideo\.(at|ch|co|eu|sx)/(video|mobile/#/videos)/(?P<ID>\w+)' - - __description__ = """NowVideo.sx hoster plugin""" - __license__ = "GPLv3" - __authors__ = [("Walter Purcaro", "vuolter@gmail.com")] - - - URL_REPLACEMENTS = [(__pattern__ + ".*", r'http://www.nowvideo.at/video/\g<ID>')] - - NAME_PATTERN = r'<h4>(?P<N>.+?)<' - OFFLINE_PATTERN = r'>This file no longer exists' - - LINK_FREE_PATTERN = r'<source src="(.+?)"' - LINK_PREMIUM_PATTERN = r'<div id="content_player" >\s*<a href="(.+?)"' - - - def setup(self): - self.resumeDownload = True - self.multiDL = True - - - def handleFree(self): - self.html = self.load("http://www.nowvideo.at/mobile/video.php", get={'id': self.info['pattern']['ID']}) - - m = re.search(self.LINK_FREE_PATTERN, self.html) - if m is None: - self.error(_("Free download link not found")) - - self.download(m.group(1)) - - -getInfo = create_getInfo(NowVideoSx) diff --git a/module/plugins/hoster/RapiduNet.py b/module/plugins/hoster/RapiduNet.py deleted file mode 100644 index e14b18a4f..000000000 --- a/module/plugins/hoster/RapiduNet.py +++ /dev/null @@ -1,82 +0,0 @@ -# -*- coding: utf-8 -*- - -import re - -from pycurl import HTTPHEADER -from time import time, altzone - -from module.common.json_layer import json_loads -from module.plugins.internal.CaptchaService import ReCaptcha -from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo - - -class RapiduNet(SimpleHoster): - __name__ = "RapiduNet" - __type__ = "hoster" - __version__ = "0.02" - - __pattern__ = r'https?://(?:www\.)?rapidu\.net/(?P<ID>\d{10})' - - __description__ = """Rapidu.net hoster plugin""" - __license__ = "GPLv3" - __authors__ = [("prOq", None)] - - - COOKIES = [("rapidu.net", "rapidu_lang", "en")] - - FILE_INFO_PATTERN = r'<h1 title="(?P<N>.*)">.*</h1>\s*<small>(?P<S>\d+(\.\d+)?)\s(?P<U>\w+)</small>' - OFFLINE_PATTERN = r'404 - File not found' - - ERROR_PATTERN = r'<div class="error">' - - RECAPTCHA_KEY = r'6Ld12ewSAAAAAHoE6WVP_pSfCdJcBQScVweQh8Io' - - - def setup(self): - self.resumeDownload = True - self.multiDL = True - self.limitDL = 0 if self.premium else 2 - - - def handleFree(self): - self.req.http.lastURL = self.pyfile.url - self.req.http.c.setopt(HTTPHEADER, ["X-Requested-With: XMLHttpRequest"]) - - jsvars = self.getJsonResponse("https://rapidu.net/ajax.php?a=getLoadTimeToDownload", {'_go': None}) - - if str(jsvars['timeToDownload']) is "stop": - t = (24 * 60 * 60) - (int(time()) % (24 *60 * 60)) + altzone - - self.logInfo("You've reach your daily download transfer") - - self.retry(10, 10 if t < 1 else None, "Try tomorrow again") #@NOTE: check t in case of not synchronised clock - - else: - self.wait(int(jsvars['timeToDownload']) - int(time())) - - recaptcha = ReCaptcha(self) - - for _i in xrange(10): - challenge, code = recaptcha.challenge(self.RECAPTCHA_KEY) - - jsvars = self.getJsonResponse("https://rapidu.net/ajax.php?a=getCheckCaptcha", - {'_go' : None, - 'captcha1': challenge, - 'captcha2': code, - 'fileId' : self.info['ID']}) - if jsvars['message'] == 'success': - self.download(jsvars['url']) - break - - - def getJsonResponse(self, url, post_data): - response = self.load(url, post=post_data, decode=True) - if not response.startswith('{'): - self.retry() - - self.logDebug(url, response) - - return json_loads(response) - - -getInfo = create_getInfo(RapiduNet) diff --git a/module/plugins/hoster/SafesharingEu.py b/module/plugins/hoster/SafesharingEu.py deleted file mode 100644 index f0936b9e8..000000000 --- a/module/plugins/hoster/SafesharingEu.py +++ /dev/null @@ -1,25 +0,0 @@ -# -*- coding: utf-8 -*- - -from module.plugins.internal.XFSHoster import XFSHoster, create_getInfo - - -class SafesharingEu(XFSHoster): - __name__ = "SafesharingEu" - __type__ = "hoster" - __version__ = "0.05" - - __pattern__ = r'https?://(?:www\.)?safesharing\.eu/\w{12}' - - __description__ = """Safesharing.eu hoster plugin""" - __license__ = "GPLv3" - __authors__ = [("zapp-brannigan", "fuerst.reinje@web.de")] - - - HOSTER_DOMAIN = "safesharing.eu" - - WAIT_PATTERN = r'You have to wait (\d+) minutes' - - ERROR_PATTERN = r'(?:<div class="alert alert-danger">)(.+?)(?:</div>)' - - -getInfo = create_getInfo(SafesharingEu) diff --git a/module/plugins/hoster/UploadableCh.py b/module/plugins/hoster/UploadableCh.py deleted file mode 100644 index 77b3d7d8a..000000000 --- a/module/plugins/hoster/UploadableCh.py +++ /dev/null @@ -1,90 +0,0 @@ -# -*- coding: utf-8 -*- - -import re - -from time import sleep - -from module.plugins.internal.CaptchaService import ReCaptcha -from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo - - -class UploadableCh(SimpleHoster): - __name__ = "UploadableCh" - __type__ = "hoster" - __version__ = "0.02" - - __pattern__ = r'http://(?:www\.)?uploadable\.ch/file/(?P<ID>\w+)' - - __description__ = """Uploadable.ch hoster plugin""" - __license__ = "GPLv3" - __authors__ = [("zapp-brannigan", "fuerst.reinje@web.de"), - ("Walter Purcaro", "vuolter@gmail.com")] - - - FILE_INFO_PATTERN = r'div id=\"file_name\" title=.*>(?P<N>.+)<span class=\"filename_normal\">\((?P<S>[\d.]+) (?P<U>\w+)\)</span><' - - OFFLINE_PATTERN = r'>(File not available|This file is no longer available)' - TEMP_OFFLINE_PATTERN = r'<div class="icon_err">' - - WAIT_PATTERN = r'data-time="(\d+)" data-format' - - FILE_URL_REPLACEMENTS = [(__pattern__ + ".*", r'http://www.uploadable.ch/file/\g<ID>')] - - - def setup(self): - self.multiDL = False - self.chunkLimit = 1 - - - def handleFree(self): - # Click the "free user" button and wait - a = self.load(self.pyfile.url, cookies=True, post={'downloadLink': "wait"}, decode=True) - self.logDebug(a) - - m = re.search(self.WAIT_PATTERN, a) - if m is not None: - self.wait(int(m.group(1))) #: Expected output: {"waitTime":30} - else: - self.error("WAIT_PATTERN") - - # Make the recaptcha appear and show it the pyload interface - b = self.load(self.pyfile.url, cookies=True, post={'checkDownload': "check"}, decode=True) - self.logDebug(b) #: Expected output: {"success":"showCaptcha"} - - recaptcha = ReCaptcha(self) - - challenge, captcha = recaptcha.challenge(self.RECAPTCHA_KEY) - - # Submit the captcha solution - self.load("http://www.uploadable.ch/checkReCaptcha.php", - cookies=True, - post={'recaptcha_challenge_field' : challenge, - 'recaptcha_response_field' : captcha, - 'recaptcha_shortencode_field': self.info['ID']}, - decode=True) - - self.wait(3) - - # Get ready for downloading - self.load(self.pyfile.url, cookies=True, post={'downloadLink': "show"}, decode=True) - - self.wait(3) - - # Download the file - self.download(self.pyfile.url, cookies=True, post={'download': "normal"}, disposition=True) - - - def checkFile(self): - check = self.checkDownload({'wait_or_reconnect': re.compile("Please wait for"), - 'is_html' : re.compile("<head>")}) - - if check == "wait_or_reconnect": - self.logInfo("Downloadlimit reached, please wait or reconnect") - self.wait(60 * 60, True) - self.retry() - - elif check == "is_html": - self.error("Downloaded file is an html file") - - -getInfo = create_getInfo(UploadableCh) -- cgit v1.2.3