diff options
Diffstat (limited to 'module/plugins/hoster')
22 files changed, 0 insertions, 890 deletions
| diff --git a/module/plugins/hoster/EnteruploadCom.py b/module/plugins/hoster/EnteruploadCom.py deleted file mode 100644 index bbd613f57..000000000 --- a/module/plugins/hoster/EnteruploadCom.py +++ /dev/null @@ -1,18 +0,0 @@ -# -*- coding: utf-8 -*- - -from module.plugins.internal.DeadHoster import DeadHoster, create_getInfo - - -class EnteruploadCom(DeadHoster): -    __name__    = "EnteruploadCom" -    __type__    = "hoster" -    __version__ = "0.02" - -    __pattern__ = r'http://(?:www\.)?enterupload\.com/\w+' - -    __description__ = """EnterUpload.com hoster plugin""" -    __license__     = "GPLv3" -    __authors__     = [("zoidberg", "zoidberg@mujmail.cz")] - - -getInfo = create_getInfo(EnteruploadCom) diff --git a/module/plugins/hoster/FileSharkPl.py b/module/plugins/hoster/FileSharkPl.py deleted file mode 100644 index 5a9cbb456..000000000 --- a/module/plugins/hoster/FileSharkPl.py +++ /dev/null @@ -1,137 +0,0 @@ -# -*- coding: utf-8 -*- - -import re - -from urlparse import urljoin - -from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo - - -class FileSharkPl(SimpleHoster): -    __name__    = "FileSharkPl" -    __type__    = "hoster" -    __version__ = "0.01" - -    __pattern__ = r'http://(?:www\.)?fileshark\.pl/pobierz/\d{6}/\w{5}' - -    __description__ = """FileShark.pl hoster plugin""" -    __license__     = "GPLv3" -    __authors__     = [("prOq", None), -                       ("Walter Purcaro", "vuolter@gmail.com")] - - -    NAME_PATTERN = r'<h2 class="name-file">(?P<N>.+)</h2>' -    SIZE_PATTERN = r'<p class="size-file">(.*?)<strong>(?P<S>\d+\.?\d*)\s(?P<U>\w+)</strong></p>' - -    OFFLINE_PATTERN = '(P|p)lik zosta. (usuni.ty|przeniesiony)' - -    DOWNLOAD_ALERT = r'<p class="lead text-center alert alert-warning">(.*?)</p>' -    IP_BLOCKED_PATTERN = 'Strona jest dost.pna wy..cznie dla u.ytkownik.w znajduj.cych si. na terenie Polski' -    DOWNLOAD_SLOTS_ERROR_PATTERN = r'Osi.gni.to maksymaln. liczb. .ci.ganych jednocze.nie plik.w\.' - -    DOWNLOAD_URL_FREE = r'<a href="(.*?)" class="btn-upload-free">' -    DOWNLOAD_URL_PREMIUM = r'<a href="(.*?)" class="btn-upload-premium">' - -    SECONDS_PATTERN = r'var timeToDownload = (\d+);' - -    CAPTCHA_IMG_PATTERN = '<img src="data:image/jpeg;base64,(.*?)" title="captcha"' -    CAPTCHA_TOKEN_PATTERN = r'name="form\[_token\]" value="(.*?)" />' - - -    def setup(self): -        self.resumeDownload = True -        if self.premium: -            self.multiDL = True -            self.limitDL = 20 -        else: -            self.multiDL = False - - -    def prepare(self): -        super(FileSharkPl, self).prepare() - -        m = re.search(self.DOWNLOAD_ALERT, self.html): -        if m: -            return - -        alert = m.group(1) - -        if re.match(self.IP_BLOCKED_PATTERN, alert): -            self.fail(_("Only connections from Polish IP are allowed")) -        elif re.match(self.DOWNLOAD_SLOTS_ERROR_PATTERN, alert): -            self.logInfo(_("No free download slots available")) -            self.retry(10, 30 * 60, _("Still no free download slots available")) -        else: -            self.logInfo(alert) -            self.retry(10, 10 * 60, _("Try again later")) - - -    #@NOTE: handlePremium method was never been tested -    def handlePremium(self): -        self.logDebug("Premium accounts support in experimental modus!") -        m = re.search(self.DOWNLOAD_URL_PREMIUM, self.html) -        file_url = urljoin("http://fileshark.pl", m.group(1)) - -        self.download(file_url, disposition=True) -        self.checkDownload() - - -    def handleFree(self): -        m = re.search(self.DOWNLOAD_URL_FREE, self.html) -        if m is None: -            self.error(_("Download url not found")) - -        file_url = urljoin("http://fileshark.pl", m.group(1)) - -        m = re.search(self.SECONDS_PATTERN, self.html) -        if m: -            seconds = int(m.group(1)) -            self.logDebug("Wait %s seconds" % seconds) -            self.wait(seconds + 2) - -        action, inputs = self.parseHtmlForm('action=""') -        m = re.search(self.CAPTCHA_TOKEN_PATTERN, self.html) -        if m is None: -            self.retry(reason=_("Captcha form not found")) - -        inputs['form[_token]'] = m.group(1) - -        m = re.search(self.CAPTCHA_IMG_PATTERN, self.html) -        if m is None: -            self.retry(reason=_("Captcha image not found")) - -        tmp_load = self.load -        self.load = self.decode64  #: injects decode64 inside decryptCaptcha - -        inputs['form[captcha]'] = self.decryptCaptcha(m.group(1), imgtype='jpeg') -        inputs['form[start]'] = "" - -        self.load = tmp_load - -        self.download(file_url, post=inputs, cookies=True, disposition=True) -        self.checkDownload() - - -    def checkDownload(self): -        check = super(FileSharkPl, self).checkDownload({ -            'wrong_captcha': re.compile(r'<label for="form_captcha" generated="true" class="error">(.*?)</label>'), -            'wait_pattern': re.compile(self.SECONDS_PATTERN), -            'DL-found': re.compile('<a href="(.*)">') -        }) - -        if check == "DL-found": -            self.correctCaptcha() - -        elif check == "wrong_captcha": -            self.invalidCaptcha() -            self.retry(10, 1, _("Wrong captcha solution")) - -        elif check == "wait_pattern": -            self.retry() - - -    def decode64(self, data, *args, **kwargs): -        return data.decode("base64") - - -getInfo = create_getInfo(FileSharkPl) diff --git a/module/plugins/hoster/FilesonicCom.py b/module/plugins/hoster/FilesonicCom.py deleted file mode 100644 index 8bfa0fa2e..000000000 --- a/module/plugins/hoster/FilesonicCom.py +++ /dev/null @@ -1,19 +0,0 @@ -# -*- coding: utf-8 -*- - -from module.plugins.internal.DeadHoster import DeadHoster, create_getInfo - - -class FilesonicCom(DeadHoster): -    __name__    = "FilesonicCom" -    __type__    = "hoster" -    __version__ = "0.35" - -    __pattern__ = r'http://(?:www\.)?filesonic\.com/file/\w+' - -    __description__ = """Filesonic.com hoster plugin""" -    __license__     = "GPLv3" -    __authors__     = [("jeix", "jeix@hasnomail.de"), -                       ("paulking", None)] - - -getInfo = create_getInfo(FilesonicCom) diff --git a/module/plugins/hoster/JunocloudMe.py b/module/plugins/hoster/JunocloudMe.py deleted file mode 100644 index 0f839960a..000000000 --- a/module/plugins/hoster/JunocloudMe.py +++ /dev/null @@ -1,29 +0,0 @@ -# -*- coding: utf-8 -*- - -from module.plugins.internal.XFSHoster import XFSHoster, create_getInfo - - -class JunocloudMe(XFSHoster): -    __name__    = "JunocloudMe" -    __type__    = "hoster" -    __version__ = "0.03" - -    __pattern__ = r'http://(?:\w+\.)?junocloud\.me/\w{12}' - -    __description__ = """Junocloud.me hoster plugin""" -    __license__     = "GPLv3" -    __authors__     = [("guidobelix", "guidobelix@hotmail.it")] - - -    HOSTER_DOMAIN = "junocloud.me" - -    URL_REPLACEMENTS = [(r'/(?:embed-)?(\w{12}).*', r'/\1'), (r'//www\.', "//dl3.")] - -    NAME_PATTERN = r'<p class="request_file">http://junocloud.me/w{12}/(?P<N>.+?)</p>' -    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) diff --git a/module/plugins/hoster/Keep2shareCc.py b/module/plugins/hoster/Keep2shareCc.py deleted file mode 100644 index fd8a5524d..000000000 --- a/module/plugins/hoster/Keep2shareCc.py +++ /dev/null @@ -1,118 +0,0 @@ -# -*- coding: utf-8 -*- - -import re - -from urlparse import urlparse, urljoin - -from module.plugins.internal.CaptchaService import ReCaptcha -from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo - - -class Keep2shareCc(SimpleHoster): -    __name__    = "Keep2shareCc" -    __type__    = "hoster" -    __version__ = "0.15" - -    __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"), -                       ("Walter Purcaro", "vuolter@gmail.com")] - - -    NAME_PATTERN = r'File: <span>(?P<N>.+)</span>' -    SIZE_PATTERN = r'Size: (?P<S>[^<]+)</div>' -    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' - - -    def handleFree(self): -        self.sanitize_url() -        self.html = self.load(self.pyfile.url) - -        self.fid = re.search(r'<input type="hidden" name="slow_id" value="([^"]+)">', self.html).group(1) -        self.html = self.load(self.pyfile.url, post={'yt0': '', 'slow_id': self.fid}) - -        if ">Downloading is not possible" in self.html: -            self.fail("Free user can't download large files") - -        m = re.search(r"function download\(\){.*window\.location\.href = '([^']+)';", self.html, re.S) -        if m:  # Direct mode -            self.startDownload(m.group(1)) -        else: -            self.handleCaptcha() - -            self.wait(30) - -            self.html = self.load(self.pyfile.url, post={'uniqueId': self.fid, 'free': 1}) - -            m = re.search(self.WAIT_PATTERN, self.html) -            if m: -                self.logDebug("Hoster told us to wait for %s" % m.group(1)) -                # string to time convert courtesy of https://stackoverflow.com/questions/10663720 -                ftr = [3600, 60, 1] -                wait_time = sum([a * b for a, b in zip(ftr, map(int, m.group(1).split(':')))]) -                self.wait(wait_time, True) -                self.retry() - -            m = re.search(self.MULTIDL_ERROR, self.html) -            if m: -                # if someone is already downloading on our line, wait 30min and retry -                self.logDebug("Already downloading, waiting for 30 minutes") -                self.wait(30 * 60, True) -                self.retry() - -            m = re.search(self.LINK_PATTERN, self.html) -            if m is None: -                self.error(_("LINK_PATTERN not found")) -            self.startDownload(m.group(1)) - - -    def handleCaptcha(self): -        recaptcha = ReCaptcha(self) - -        for _i in xrange(5): -            post_data = {'free': 1, -                         'freeDownloadRequest': 1, -                         'uniqueId': self.fid, -                         'yt0': ''} - -            m = re.search(self.CAPTCHA_PATTERN, self.html) -            if m: -                captcha_url = urljoin(self.base_url, m.group(1)) -                post_data['CaptchaForm[code]'] = self.decryptCaptcha(captcha_url) -            else: -                challenge, response = recaptcha.challenge() -                post_data.update({'recaptcha_challenge_field': challenge, -                                  'recaptcha_response_field': response}) - -            self.html = self.load(self.pyfile.url, post=post_data) - -            if 'recaptcha' not in self.html: -                self.correctCaptcha() -                break -            else: -                self.invalidCaptcha() -        else: -            self.fail(_("All captcha attempts failed")) - - -    def startDownload(self, url): -        d = urljoin(self.base_url, url) -        self.download(d, disposition=True) - - -    def sanitize_url(self): -        header = self.load(self.pyfile.url, just_header=True) -        if 'location' in header: -            self.pyfile.url = header['location'] -        p = urlparse(self.pyfile.url) -        self.base_url = "%s://%s" % (p.scheme, p.hostname) - - -getInfo = create_getInfo(Keep2shareCc) diff --git a/module/plugins/hoster/KickloadCom.py b/module/plugins/hoster/KickloadCom.py deleted file mode 100644 index 1c39db46c..000000000 --- a/module/plugins/hoster/KickloadCom.py +++ /dev/null @@ -1,18 +0,0 @@ -# -*- coding: utf-8 -*- - -from module.plugins.internal.DeadHoster import DeadHoster, create_getInfo - - -class KickloadCom(DeadHoster): -    __name__    = "KickloadCom" -    __type__    = "hoster" -    __version__ = "0.21" - -    __pattern__ = r'http://(?:www\.)?kickload\.com/get/.+' - -    __description__ = """Kickload.com hoster plugin""" -    __license__     = "GPLv3" -    __authors__     = [("mkaay", "mkaay@mkaay.de")] - - -getInfo = create_getInfo(KickloadCom) diff --git a/module/plugins/hoster/MegaCoNz.py b/module/plugins/hoster/MegaCoNz.py deleted file mode 100644 index 2129fbfc8..000000000 --- a/module/plugins/hoster/MegaCoNz.py +++ /dev/null @@ -1,144 +0,0 @@ -# -*- coding: utf-8 -*- - -import random -import re - -from array import array -from base64 import standard_b64decode -from os import remove - -from Crypto.Cipher import AES -from Crypto.Util import Counter -from pycurl import SSL_CIPHER_LIST - -from module.common.json_layer import json_loads, json_dumps -from module.plugins.Hoster import Hoster - - -class MegaCoNz(Hoster): -    __name__    = "MegaCoNz" -    __type__    = "hoster" -    __version__ = "0.16" - -    __pattern__ = r'https?://(\w+\.)?mega\.co\.nz/#!([\w!-]+)' - -    __description__ = """Mega.co.nz hoster plugin""" -    __license__     = "GPLv3" -    __authors__     = [("RaNaN", "ranan@pyload.org")] - - -    API_URL = "https://g.api.mega.co.nz/cs?id=%d" -    FILE_SUFFIX = ".crypted" - - -    def b64_decode(self, data): -        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 -        uid = random.randint(10 << 9, 10 ** 10) - -        res = self.load(self.API_URL % uid, post=json_dumps([kwargs])) -        self.logDebug("Api Response: " + res) -        return json_loads(res) - - -    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) -        if not attr.startswith("MEGA"): -            self.fail(_("Decryption failed")) - -        # Data is padded, 0-bytes must be stripped -        return json_loads(re.search(r'{.+?}', attr).group(0)) - - -    def decryptFile(self, key): -        """  Decrypts the file at lastDownload` """ - -        # upper 64 bit of counter start -        n = key[16:24] - -        # convert counter to long and shift bytes -        ctr = Counter.new(128, initial_value=long(n.encode("hex"), 16) << 64) -        cipher = AES.new(self.getCipherKey(key), AES.MODE_CTR, counter=ctr) - -        self.pyfile.setStatus("decrypting") - -        file_crypted = self.lastDownload -        file_decrypted = file_crypted.rsplit(self.FILE_SUFFIX)[0] - -        try: -            f = open(file_crypted, "rb") -            df = open(file_decrypted, "wb") -        except IOError, e: -            self.fail(str(e)) - -        # TODO: calculate CBC-MAC for checksum - -        size = 2 ** 15  # buffer size, 32k -        while True: -            buf = f.read(size) -            if not buf: -                break - -            df.write(cipher.decrypt(buf)) - -        f.close() -        df.close() -        remove(file_crypted) - -        self.lastDownload = file_decrypted - - -    def process(self, pyfile): -        key = None - -        # match is guaranteed because plugin was chosen to handle url -        node = re.match(self.__pattern__, pyfile.url).group(2) -        if "!" in node: -            node, key = node.split("!") - -        self.logDebug("File id: %s | Key: %s" % (node, key)) - -        if not key: -            self.fail(_("No file key provided in the URL")) - -        # g is for requesting a download url -        # this is similar to the calls in the mega js app, documentation is very bad -        dl = self.callApi(a="g", g=1, p=node, ssl=1)[0] - -        if "e" in dl: -            e = dl['e'] -            # ETEMPUNAVAIL (-18): Resource temporarily not available, please try again later -            if e == -18: -                self.retry() -            else: -                self.fail(_("Error code:") + e) - -        # TODO: map other error codes, e.g -        # EACCESS (-11): Access violation (e.g., trying to write to a read-only share) - -        key = self.b64_decode(key) -        attr = self.decryptAttr(dl['at'], key) - -        pyfile.name = attr['n'] + self.FILE_SUFFIX - -        self.req.http.c.setopt(SSL_CIPHER_LIST, "RC4-MD5:DEFAULT") - -        self.download(dl['g']) -        self.decryptFile(key) - -        # Everything is finished and final name can be set -        pyfile.name = attr['n'] diff --git a/module/plugins/hoster/MegaRapidCz.py b/module/plugins/hoster/MegaRapidCz.py deleted file mode 100644 index b3100b6d4..000000000 --- a/module/plugins/hoster/MegaRapidCz.py +++ /dev/null @@ -1,71 +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) -        yield parseFileInfo(MegaRapidCz, url, html) - - -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")] - - -    NAME_PATTERN = r'<h1[^>]*><span[^>]*>(?:<a[^>]*>)?(?P<N>[^<]+)' -    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 - -    LINK_PATTERN = r'<a href="([^"]+)" title="Stahnout">([^<]+)</a>' -    ERR_LOGIN_PATTERN = ur'<div class="error_div"><strong>Stahování je přístupné pouze přihlášeným uživatelům' -    ERR_CREDIT_PATTERN = ur'<div class="error_div"><strong>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(wait_time=60, 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(wait_time=60, 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/MegauploadCom.py b/module/plugins/hoster/MegauploadCom.py deleted file mode 100644 index 7f51a8a46..000000000 --- a/module/plugins/hoster/MegauploadCom.py +++ /dev/null @@ -1,18 +0,0 @@ -# -*- coding: utf-8 -*- - -from module.plugins.internal.DeadHoster import DeadHoster, create_getInfo - - -class MegauploadCom(DeadHoster): -    __name__    = "MegauploadCom" -    __type__    = "hoster" -    __version__ = "0.31" - -    __pattern__ = r'http://(?:www\.)?megaupload\.com/\?.*&?(d|v)=\w+' - -    __description__ = """Megaupload.com hoster plugin""" -    __license__     = "GPLv3" -    __authors__     = [("spoob", "spoob@pyload.org")] - - -getInfo = create_getInfo(MegauploadCom) diff --git a/module/plugins/hoster/MegavideoCom.py b/module/plugins/hoster/MegavideoCom.py deleted file mode 100644 index 24905ce62..000000000 --- a/module/plugins/hoster/MegavideoCom.py +++ /dev/null @@ -1,19 +0,0 @@ -# -*- coding: utf-8 -*- - -from module.plugins.internal.DeadHoster import DeadHoster, create_getInfo - - -class MegavideoCom(DeadHoster): -    __name__    = "MegavideoCom" -    __type__    = "hoster" -    __version__ = "0.21" - -    __pattern__ = r'http://(?:www\.)?megavideo\.com/\?.*&?(d|v)=\w+' - -    __description__ = """Megavideo.com hoster plugin""" -    __license__     = "GPLv3" -    __authors__     = [("jeix", "jeix@hasnomail.de"), -                       ("mkaay", "mkaay@mkaay.de")] - - -getInfo = create_getInfo(MegavideoCom) diff --git a/module/plugins/hoster/NahrajCz.py b/module/plugins/hoster/NahrajCz.py deleted file mode 100644 index 6b5699408..000000000 --- a/module/plugins/hoster/NahrajCz.py +++ /dev/null @@ -1,18 +0,0 @@ -# -*- coding: utf-8 -*- - -from module.plugins.internal.DeadHoster import DeadHoster, create_getInfo - - -class NahrajCz(DeadHoster): -    __name__    = "NahrajCz" -    __type__    = "hoster" -    __version__ = "0.21" - -    __pattern__ = r'http://(?:www\.)?nahraj\.cz/content/download/.+' - -    __description__ = """Nahraj.cz hoster plugin""" -    __license__     = "GPLv3" -    __authors__     = [("zoidberg", "zoidberg@mujmail.cz")] - - -getInfo = create_getInfo(NahrajCz) diff --git a/module/plugins/hoster/NowVideoAt.py b/module/plugins/hoster/NowVideoAt.py deleted file mode 100644 index 53d782d06..000000000 --- a/module/plugins/hoster/NowVideoAt.py +++ /dev/null @@ -1,44 +0,0 @@ -# -*- coding: utf-8 -*- - -import re - -from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo - - -class NowVideoAt(SimpleHoster): -    __name__    = "NowVideoAt" -    __type__    = "hoster" -    __version__ = "0.05" - -    __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")] - - -    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.multiDL = True -        self.resumeDownload = True - - -    def handleFree(self): -        self.html = self.load("http://www.nowvideo.at/mobile/video.php", get={'id': self.info['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(NowVideoAt) diff --git a/module/plugins/hoster/OronCom.py b/module/plugins/hoster/OronCom.py deleted file mode 100644 index 7e8423ec9..000000000 --- a/module/plugins/hoster/OronCom.py +++ /dev/null @@ -1,19 +0,0 @@ -# -*- coding: utf-8 -*- - -from module.plugins.internal.DeadHoster import DeadHoster, create_getInfo - - -class OronCom(DeadHoster): -    __name__    = "OronCom" -    __type__    = "hoster" -    __version__ = "0.14" - -    __pattern__ = r'https?://(?:www\.)?oron\.com/\w{12}' - -    __description__ = """Oron.com hoster plugin""" -    __license__     = "GPLv3" -    __authors__     = [("chrox", "chrox@pyload.org"), -                       ("DHMH", "DHMH@pyload.org")] - - -getInfo = create_getInfo(OronCom) diff --git a/module/plugins/hoster/PandaplaNet.py b/module/plugins/hoster/PandaplaNet.py deleted file mode 100644 index 78a1ed177..000000000 --- a/module/plugins/hoster/PandaplaNet.py +++ /dev/null @@ -1,18 +0,0 @@ -# -*- coding: utf-8 -*- - -from module.plugins.internal.DeadHoster import DeadHoster, create_getInfo - - -class PandaplaNet(DeadHoster): -    __name__    = "PandaplaNet" -    __type__    = "hoster" -    __version__ = "0.03" - -    __pattern__ = r'http://(?:www\.)?pandapla\.net/\w{12}' - -    __description__ = """Pandapla.net hoster plugin""" -    __license__     = "GPLv3" -    __authors__     = [("t4skforce", "t4skforce1337[AT]gmail[DOT]com")] - - -getInfo = create_getInfo(PandaplaNet) diff --git a/module/plugins/hoster/PrzeklejPl.py b/module/plugins/hoster/PrzeklejPl.py deleted file mode 100644 index 3a59a2c9e..000000000 --- a/module/plugins/hoster/PrzeklejPl.py +++ /dev/null @@ -1,18 +0,0 @@ -# -*- coding: utf-8 -*- - -from module.plugins.internal.DeadHoster import DeadHoster, create_getInfo - - -class PrzeklejPl(DeadHoster): -    __name__    = "PrzeklejPl" -    __type__    = "hoster" -    __version__ = "0.11" - -    __pattern__ = r'http://(?:www\.)?przeklej\.pl/plik/.+' - -    __description__ = """Przeklej.pl hoster plugin""" -    __license__     = "GPLv3" -    __authors__     = [("zoidberg", "zoidberg@mujmail.cz")] - - -getInfo = create_getInfo(PrzeklejPl) diff --git a/module/plugins/hoster/RapidfileshareNet.py b/module/plugins/hoster/RapidfileshareNet.py deleted file mode 100644 index ae53411c3..000000000 --- a/module/plugins/hoster/RapidfileshareNet.py +++ /dev/null @@ -1,31 +0,0 @@ -# -*- coding: utf-8 -*- - -from module.plugins.internal.XFSHoster import XFSHoster, create_getInfo - - -class RapidfileshareNet(XFSHoster): -    __name__    = "RapidfileshareNet" -    __type__    = "hoster" -    __version__ = "0.02" - -    __pattern__ = r'http://(?:www\.)?rapidfileshare\.net/\w{12}' - -    __description__ = """Rapidfileshare.net hoster plugin""" -    __license__     = "GPLv3" -    __authors__     = [("guidobelix", "guidobelix@hotmail.it")] - - -    HOSTER_DOMAIN = "rapidfileshare.net" - -    NAME_PATTERN = r'<input type="hidden" name="fname" value="(?P<N>.+?)">' -    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) diff --git a/module/plugins/hoster/SharingmatrixCom.py b/module/plugins/hoster/SharingmatrixCom.py deleted file mode 100644 index fa08a4a8f..000000000 --- a/module/plugins/hoster/SharingmatrixCom.py +++ /dev/null @@ -1,19 +0,0 @@ -# -*- coding: utf-8 -*- - -from module.plugins.internal.DeadHoster import DeadHoster, create_getInfo - - -class SharingmatrixCom(DeadHoster): -    __name__    = "SharingmatrixCom" -    __type__    = "hoster" -    __version__ = "0.01" - -    __pattern__ = r'http://(?:www\.)?sharingmatrix\.com/file/\w+' - -    __description__ = """Sharingmatrix.com hoster plugin""" -    __license__     = "GPLv3" -    __authors__     = [("jeix", "jeix@hasnomail.de"), -                       ("paulking", None)] - - -getInfo = create_getInfo(SharingmatrixCom) diff --git a/module/plugins/hoster/StorageTo.py b/module/plugins/hoster/StorageTo.py deleted file mode 100644 index bedc2934f..000000000 --- a/module/plugins/hoster/StorageTo.py +++ /dev/null @@ -1,18 +0,0 @@ -# -*- coding: utf-8 -*- - -from module.plugins.internal.DeadHoster import DeadHoster, create_getInfo - - -class StorageTo(DeadHoster): -    __name__    = "StorageTo" -    __type__    = "hoster" -    __version__ = "0.01" - -    __pattern__ = r'http://(?:www\.)?storage\.to/get/.+' - -    __description__ = """Storage.to hoster plugin""" -    __license__     = "GPLv3" -    __authors__     = [("mkaay", "mkaay@mkaay.de")] - - -getInfo = create_getInfo(StorageTo) diff --git a/module/plugins/hoster/UpleaCom.py b/module/plugins/hoster/UpleaCom.py deleted file mode 100644 index 409d7b4ca..000000000 --- a/module/plugins/hoster/UpleaCom.py +++ /dev/null @@ -1,60 +0,0 @@ -# -*- coding: utf-8 -*- - -import re - -from urlparse import urljoin - -from module.plugins.internal.XFSHoster import XFSHoster, create_getInfo - - -class UpleaCom(XFSHoster): -    __name__    = "UpleaCom" -    __type__    = "hoster" -    __version__ = "0.04" - -    __pattern__ = r'https?://(?:www\.)?uplea\.com/dl/\w{15}' - -    __description__ = """Uplea.com hoster plugin""" -    __license__     = "GPLv3" -    __authors__     = [("Redleon", None)] - - -    HOSTER_DOMAIN = "uplea.com" - -    NAME_PATTERN = r'class="agmd size18">(?P<N>.+?)<' -    SIZE_PATTERN = r'size14">(?P<S>[\d.,]+) (?P<U>[\w^_])</span>' - -    OFFLINE_PATTERN = r'>You followed an invalid or expired link' - -    LINK_PATTERN = r'"(http?://\w+\.uplea\.com/anonym/.*?)"' -    WAIT_PATTERN = r'timeText:([\d.]+),' -    VARS_PATTERN = r'class="cel_tbl_step1_foot">\s<a href="(/step/.+)">' - - -    def setup(self): -        self.multiDL = False -        self.chunkLimit = 1 -        self.resumeDownload = True - - -    def handleFree(self): -        m = re.search(self.VARS_PATTERN, self.html) -        if m is None: -            self.error("VARS_PATTERN not found") - -        self.html = self.load(urljoin("http://uplea.com/", m.groups(1))) - -        m = re.search(self.WAIT_PATTERN, self.html) -        if m: -            self.wait(m.group(1), True) -            self.retry() - -        m = re.search(self.LINK_PATTERN, self.html) -        if m is None: -            self.error("LINK_PATTERN not found") - -        self.wait(15) -        self.download(m.group(1), disposition=True) - - -getInfo = create_getInfo(UpleaCom) diff --git a/module/plugins/hoster/UploadboxCom.py b/module/plugins/hoster/UploadboxCom.py deleted file mode 100644 index 031c5f761..000000000 --- a/module/plugins/hoster/UploadboxCom.py +++ /dev/null @@ -1,18 +0,0 @@ -# -*- coding: utf-8 -*- - -from module.plugins.internal.DeadHoster import DeadHoster, create_getInfo - - -class UploadboxCom(DeadHoster): -    __name__    = "Uploadbox" -    __type__    = "hoster" -    __version__ = "0.05" - -    __pattern__ = r'http://(?:www\.)?uploadbox\.com/files/.+' - -    __description__ = """UploadBox.com hoster plugin""" -    __license__     = "GPLv3" -    __authors__     = [("zoidberg", "zoidberg@mujmail.cz")] - - -getInfo = create_getInfo(UploadboxCom) diff --git a/module/plugins/hoster/UploadhereCom.py b/module/plugins/hoster/UploadhereCom.py deleted file mode 100644 index 8da30be46..000000000 --- a/module/plugins/hoster/UploadhereCom.py +++ /dev/null @@ -1,18 +0,0 @@ -# -*- coding: utf-8 -*- - -from module.plugins.internal.DeadHoster import DeadHoster, create_getInfo - - -class UploadhereCom(DeadHoster): -    __name__    = "UploadhereCom" -    __type__    = "hoster" -    __version__ = "0.12" - -    __pattern__ = r'http://(?:www\.)?uploadhere\.com/\w{10}' - -    __description__ = """Uploadhere.com hoster plugin""" -    __license__     = "GPLv3" -    __authors__     = [("zoidberg", "zoidberg@mujmail.cz")] - - -getInfo = create_getInfo(UploadhereCom) diff --git a/module/plugins/hoster/UploadkingCom.py b/module/plugins/hoster/UploadkingCom.py deleted file mode 100644 index 743e700eb..000000000 --- a/module/plugins/hoster/UploadkingCom.py +++ /dev/null @@ -1,18 +0,0 @@ -# -*- coding: utf-8 -*- - -from module.plugins.internal.DeadHoster import DeadHoster, create_getInfo - - -class UploadkingCom(DeadHoster): -    __name__    = "UploadkingCom" -    __type__    = "hoster" -    __version__ = "0.14" - -    __pattern__ = r'http://(?:www\.)?uploadking\.com/\w{10}' - -    __description__ = """UploadKing.com hoster plugin""" -    __license__     = "GPLv3" -    __authors__     = [("zoidberg", "zoidberg@mujmail.cz")] - - -getInfo = create_getInfo(UploadkingCom) | 
