summaryrefslogtreecommitdiffstats
path: root/module/plugins
diff options
context:
space:
mode:
Diffstat (limited to 'module/plugins')
-rw-r--r--module/plugins/accounts/RapiduNet.py45
-rw-r--r--module/plugins/accounts/SafesharingEu.py16
-rw-r--r--module/plugins/crypter/Go4UpCom.py49
-rw-r--r--module/plugins/hooks/SkipRev.py81
-rw-r--r--module/plugins/hoster/DodanePl.py18
-rw-r--r--module/plugins/hoster/NowDownloadSx.py64
-rw-r--r--module/plugins/hoster/NowVideoSx.py44
-rw-r--r--module/plugins/hoster/RapiduNet.py82
-rw-r--r--module/plugins/hoster/SafesharingEu.py25
-rw-r--r--module/plugins/hoster/UploadableCh.py90
10 files changed, 0 insertions, 514 deletions
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 = '<a href="premium/" style="padding-left: 0px;">Account: <b>(.*?)</b></a>'
-
-
- 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'<title>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)