diff options
Diffstat (limited to 'pyload/plugins/Crypter.py')
-rw-r--r-- | pyload/plugins/Crypter.py | 27 |
1 files changed, 23 insertions, 4 deletions
diff --git a/pyload/plugins/Crypter.py b/pyload/plugins/Crypter.py index 1401d68b8..d14960308 100644 --- a/pyload/plugins/Crypter.py +++ b/pyload/plugins/Crypter.py @@ -8,8 +8,10 @@ from pyload.utils.packagetools import parseNames from Base import Base, Retry + class Package: """ Container that indicates that a new package should be created """ + def __init__(self, name, urls=None, folder=None): self.name = name self.urls = urls if urls else [] @@ -40,8 +42,10 @@ class Package: def __hash__(self): return hash(self.name) ^ hash(frozenset(self.urls)) ^ hash(self.name) + class PyFileMockup: """ Legacy class needed by old crypter plugins """ + def __init__(self, url, pack): self.url = url self.name = url @@ -51,6 +55,7 @@ class PyFileMockup: def package(self): return self._package + class Crypter(Base): """ Base class for (de)crypter plugins. Overwrite decrypt* methods. @@ -74,6 +79,9 @@ class Crypter(Base): #: Prefix to annotate that the submited string for decrypting is indeed file content CONTENT_PREFIX = "filecontent:" + #: Optional name of an account plugin that should be used, but does not guarantee that one is available + USE_ACCOUNT = None + @classmethod def decrypt(cls, core, url_or_urls): """Static method to decrypt urls or content. Can be used by other plugins. @@ -100,9 +108,20 @@ class Crypter(Base): # eliminate duplicates return uniqify(ret) + # TODO: pass user to crypter + # TODO: crypter could not only know url, but also the name and size def __init__(self, core, package=None, password=None): Base.__init__(self, core) - self.req = core.requestFactory.getRequest() + + self.req = None + # load account if set + if self.USE_ACCOUNT: + self.account = self.core.accountManager.selectAccount(self.USE_ACCOUNT, self.user) + if self.account: + self.req = self.account.getAccountRequest() + + if self.req is None: + self.req = core.requestFactory.getRequest() # Package the plugin was initialized for, don't use this, its not guaranteed to be set self.package = package @@ -158,7 +177,7 @@ class Crypter(Base): :param urls: list of urls :return: list of `Package` """ - return [Package(name, purls) for name, purls in parseNames([(url,url) for url in urls]).iteritems()] + return [Package(name, purls) for name, purls in parseNames([(url, url) for url in urls]).iteritems()] def _decrypt(self, urls): """ Internal method to select decrypting method @@ -198,7 +217,7 @@ class Crypter(Base): result.extend(to_list(self.decryptFile(c))) try: if f.startswith("tmp_"): remove(f) - except : + except: pass return result @@ -264,7 +283,7 @@ class Crypter(Base): res = [Package(name, urls) for name, urls in self.packages] res.extend(self.urls) return res - + def clean(self): if hasattr(self, "req"): self.req.close() |