diff options
Diffstat (limited to 'module/plugins/internal/Container.py')
-rw-r--r-- | module/plugins/internal/Container.py | 56 |
1 files changed, 24 insertions, 32 deletions
diff --git a/module/plugins/internal/Container.py b/module/plugins/internal/Container.py index cff4ac4ec..db14a286e 100644 --- a/module/plugins/internal/Container.py +++ b/module/plugins/internal/Container.py @@ -4,21 +4,22 @@ from __future__ import with_statement import os import re +import urlparse from module.plugins.internal.Crypter import Crypter -from module.plugins.internal.utils import encode, exists, fs_join +from module.plugins.internal.misc import encode, exists class Container(Crypter): __name__ = "Container" __type__ = "container" - __version__ = "0.09" + __version__ = "0.10" __status__ = "stable" __pattern__ = r'^unmatchable$' - __config__ = [("activated" , "bool", "Activated" , True), - ("use_subfolder" , "bool", "Save package to subfolder" , True), - ("subfolder_per_package", "bool", "Create a subfolder for each package", True)] + __config__ = [("activated" , "bool" , "Activated" , True ), + ("use_premium" , "bool" , "Use premium account if available", True ), + ("folder_per_package", "Default;Yes;No", "Create folder for each package" , "Default")] __description__ = """Base container decrypter plugin""" __license__ = "GPLv3" @@ -30,30 +31,39 @@ class Container(Crypter): """ Main method """ - self._load2disk() + self._make_tmpfile() self.decrypt(pyfile) - self.delete_tmp() - if self.links: self._generate_packages() elif not self.packages: self.error(_("No link grabbed"), "decrypt") + self._delete_tmpfile() + self._create_packages() - def _load2disk(self): + def _delete_tmpfile(self): + if self.pyfile.name.startswith("tmp_"): + self.remove(pyfile.url, trash=False) + + + def _make_tmpfile(self): """ Loads container to disk if its stored remotely and overwrite url, or check existent on several places at disk """ - if self.pyfile.url.startswith("http"): - self.pyfile.name = re.findall("([^\/=]+)", self.pyfile.url)[-1] + remote = bool(urlparse.urlparse(self.pyfile.url).netloc) + + if remote: content = self.load(self.pyfile.url) - self.pyfile.url = fs_join(self.pyload.config.get("general", "download_folder"), self.pyfile.name) + + self.pyfile.name = "tmp_" + self.pyfile.name + self.pyfile.url = os.path.join(self.pyload.config.get("general", "download_folder"), self.pyfile.name) + try: with open(self.pyfile.url, "wb") as f: f.write(encode(content)) @@ -61,23 +71,5 @@ class Container(Crypter): except IOError, e: self.fail(e) - else: - self.pyfile.name = os.path.basename(self.pyfile.url) - - if not exists(self.pyfile.url): - if exists(fs_join(pypath, self.pyfile.url)): - self.pyfile.url = fs_join(pypath, self.pyfile.url) - else: - self.fail(_("File not exists")) - else: - self.data = self.pyfile.url #@NOTE: ??? - - - def delete_tmp(self): - if not self.pyfile.name.startswith("tmp_"): - return - - try: - os.remove(self.pyfile.url) - except OSError, e: - self.log_warning(_("Error removing `%s`") % self.pyfile.url, e) + elif not exists(self.pyfile.url): + self.fail(_("File not found")) |