diff options
| author | 2014-12-30 20:21:23 +0100 | |
|---|---|---|
| committer | 2014-12-30 20:21:23 +0100 | |
| commit | ac9ba34bd5e629ddfbe67dec88ff2e0653e80356 (patch) | |
| tree | f77bc281bd083145b19e82bf0e5ff34f5cd6f01a /module/plugins/hoster/RealdebridCom.py | |
| parent | [Oboom] new hoster and account (diff) | |
| parent | Update some MultiHoster __pattern__ (diff) | |
| download | pyload-ac9ba34bd5e629ddfbe67dec88ff2e0653e80356.tar.xz | |
Merge pull request #1 from pyload/stable
Merge
Diffstat (limited to 'module/plugins/hoster/RealdebridCom.py')
| -rw-r--r-- | module/plugins/hoster/RealdebridCom.py | 96 | 
1 files changed, 47 insertions, 49 deletions
| diff --git a/module/plugins/hoster/RealdebridCom.py b/module/plugins/hoster/RealdebridCom.py index 36fcd194c..0332ae9da 100644 --- a/module/plugins/hoster/RealdebridCom.py +++ b/module/plugins/hoster/RealdebridCom.py @@ -1,88 +1,86 @@  # -*- coding: utf-8 -*-  import re -from time import time -from urllib import quote, unquote +  from random import randrange +from urllib import quote, unquote +from time import time -from module.utils import parseFileSize  from module.common.json_layer import json_loads -from module.plugins.Hoster import Hoster +from module.plugins.internal.MultiHoster import MultiHoster, create_getInfo +from module.utils import parseFileSize + +class RealdebridCom(MultiHoster): +    __name__    = "RealdebridCom" +    __type__    = "hoster" +    __version__ = "0.62" -class RealdebridCom(Hoster): -    __name__ = "RealdebridCom" -    __version__ = "0.53" -    __type__ = "hoster" +    __pattern__ = r'https?://((?:www\.|s\d+\.)?real-debrid\.com/dl/|[\w^_]\.rdb\.so/d/)[\w^_]+' -    __pattern__ = r'https?://(?:[^/]*\.)?real-debrid\..*'      __description__ = """Real-Debrid.com hoster plugin""" -    __author_name__ = "Devirex Hazzard" -    __author_mail__ = "naibaf_11@yahoo.de" +    __license__     = "GPLv3" +    __authors__     = [("Devirex Hazzard", "naibaf_11@yahoo.de")] +      def getFilename(self, url):          try:              name = unquote(url.rsplit("/", 1)[1])          except IndexError:              name = "Unknown_Filename..." -        if not name or name.endswith(".."):  # incomplete filename, append random stuff +        if not name or name.endswith(".."):  #: incomplete filename, append random stuff              name += "%s.tmp" % randrange(100, 999)          return name +      def setup(self): -        self.chunkLimit = 3 +        self.chunkLimit     = 3          self.resumeDownload = True -    def process(self, pyfile): -        if re.match(self.__pattern__, pyfile.url): -            new_url = pyfile.url -        elif not self.account: -            self.logError(_("Please enter your %s account or deactivate this plugin") % "Real-debrid") -            self.fail("No Real-debrid account provided") -        else: -            self.logDebug("Old URL: %s" % pyfile.url) -            password = self.getPassword().splitlines() -            if not password: -                password = "" -            else: -                password = password[0] -            url = "https://real-debrid.com/ajax/unrestrict.php?lang=en&link=%s&password=%s&time=%s" % ( -                quote(pyfile.url, ""), password, int(time() * 1000)) -            page = self.load(url) -            data = json_loads(page) +    def handlePremium(self): +        data = json_loads(self.load("https://real-debrid.com/ajax/unrestrict.php", +                                    get={'lang'    : "en", +                                         'link'    : self.pyfile.url, +                                         'password': self.getPassword(), +                                         'time'    : int(time() * 1000)})) -            self.logDebug("Returned Data: %s" % data) +        self.logDebug("Returned Data: %s" % data) -            if data["error"] != 0: -                if data["message"] == "Your file is unavailable on the hoster.": -                    self.offline() -                else: -                    self.logWarning(data["message"]) -                    self.tempOffline() +        if data['error'] != 0: +            if data['message'] == "Your file is unavailable on the hoster.": +                self.offline()              else: -                if pyfile.name is not None and pyfile.name.endswith('.tmp') and data["file_name"]: -                    pyfile.name = data["file_name"] -                pyfile.size = parseFileSize(data["file_size"]) -                new_url = data['generated_links'][0][-1] +                self.logWarning(data['message']) +                self.tempOffline() +        else: +            if self.pyfile.name is not None and self.pyfile.name.endswith('.tmp') and data['file_name']: +                self.pyfile.name = data['file_name'] +            self.pyfile.size = parseFileSize(data['file_size']) +            self.link = data['generated_links'][0][-1]          if self.getConfig("https"): -            new_url = new_url.replace("http://", "https://") +            self.link = self.link.replace("http://", "https://")          else: -            new_url = new_url.replace("https://", "http://") +            self.link = self.link.replace("https://", "http://") -        if new_url != pyfile.url: -            self.logDebug("New URL: %s" % new_url) +        if self.link != self.pyfile.url: +            self.logDebug("New URL: %s" % self.link) -        if pyfile.name.startswith("http") or pyfile.name.startswith("Unknown") or pyfile.name.endswith('..'): +        if self.pyfile.name.startswith("http") or self.pyfile.name.startswith("Unknown") or self.pyfile.name.endswith('..'):              #only use when name wasnt already set -            pyfile.name = self.getFilename(new_url) +            self.pyfile.name = self.getFilename(self.link) + -        self.download(new_url, disposition=True) +    def checkFile(self): +        super(RealdebridCom, self).checkFile()          check = self.checkDownload(              {"error": "<title>An error occured while processing your request</title>"})          if check == "error":              #usual this download can safely be retried -            self.retry(wait_time=60, reason="An error occured while generating link.") +            self.retry(wait_time=60, reason=_("An error occured while generating link")) + + +getInfo = create_getInfo(RealdebridCom) | 
