diff options
Diffstat (limited to 'module')
| -rw-r--r-- | module/plugins/internal/SimpleCrypter.py | 50 | 
1 files changed, 36 insertions, 14 deletions
| diff --git a/module/plugins/internal/SimpleCrypter.py b/module/plugins/internal/SimpleCrypter.py index 01d1895a6..d1938ec66 100644 --- a/module/plugins/internal/SimpleCrypter.py +++ b/module/plugins/internal/SimpleCrypter.py @@ -13,7 +13,7 @@ from module.utils import fixup, html_unescape  class SimpleCrypter(Crypter):      __name__    = "SimpleCrypter"      __type__    = "crypter" -    __version__ = "0.29" +    __version__ = "0.30"      __pattern__ = r'^unmatchable$'      __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),  #: Overrides core.config['general']['folder_per_package'] @@ -71,7 +71,8 @@ class SimpleCrypter(Crypter):      #@TODO: remove in 0.4.10      def init(self): -        self.info = {} +        self.info  = {}  #@TODO: Remove in 0.4.10 +        self.links = []          account_name = (self.__name__ + ".py").replace("Folder.py", "").replace(".py", "")          account = self.core.accountManager.getAccountPlugin(account_name) @@ -91,12 +92,16 @@ class SimpleCrypter(Crypter):          if self.LOGIN_PREMIUM and not self.premium:              self.fail(_("Required premium account not found")) +        self.req.setOption("timeout", 120) +          if isinstance(self.COOKIES, list):              set_cookies(self.req.cj, self.COOKIES)          self.pyfile.url = replace_patterns(self.pyfile.url, self.URL_REPLACEMENTS) -        self.html = self.load(self.pyfile.url, decode=not self.TEXT_ENCODING, cookies=bool(self.COOKIES)) + +    def preload(self): +        self.html = self.load(self.pyfile.url, cookies=bool(self.COOKIES), decode=not self.TEXT_ENCODING)          if isinstance(self.TEXT_ENCODING, basestring):              self.html = unicode(self.html, self.TEXT_ENCODING) @@ -105,11 +110,12 @@ class SimpleCrypter(Crypter):      def decrypt(self, pyfile):          self.prepare() +        self.preload() +          if self.html is None:              self.fail(_("No html retrieved")) -        if not self.info: -            self.getFileInfo() +        self.checkInfo()          self.links = self.getLinks() @@ -122,13 +128,8 @@ class SimpleCrypter(Crypter):              self.packages = [(self.info['name'], self.links, self.info['folder'])] -    def getFileInfo(self): -        name, size, status, url = parseFileInfo(self) - -        if name and name != url: -            self.pyfile.name = name -        else: -            self.pyfile.name = self.info['name'] = urlparse(html_unescape(name)).path.split("/")[-1] +    def checkStatus(self): +        status = self.info['status']          if status is 1:              self.offline() @@ -136,10 +137,31 @@ class SimpleCrypter(Crypter):          elif status is 6:              self.tempOffline() + +    def checkName(self): +        name = self.info['name'] +        url  = self.info['url'] + +        if name and name != url: +            self.pyfile.name = name +        else: +            self.pyfile.name = self.info['name'] = urlparse(html_unescape(name)).path.split('/')[-1] +          self.info['folder'] = self.pyfile.name -        self.logDebug("FILE NAME: %s" % self.pyfile.name) -        return self.info +        self.logDebug("File name: %s" % self.pyfile.name) + + +    def checkInfo(self): +        self.logDebug(_("File info (previous): %s") % self.info) + +        info = parseFileInfo(self.pyfile.url, self.html or "") +        self.info.update(info) + +        self.logDebug(_("File info (current): %s")  % self.info) + +        self.checkName() +        self.checkStatus()      def getLinks(self): | 
