summaryrefslogtreecommitdiffstats
path: root/module
diff options
context:
space:
mode:
authorGravatar Walter Purcaro <vuolter@gmail.com> 2014-10-27 23:00:44 +0100
committerGravatar Walter Purcaro <vuolter@gmail.com> 2014-10-27 23:00:44 +0100
commit691c4974df7cd3305c78e518dbcbc638adc36f88 (patch)
tree693df0cdf2d7248479f314096c8a3874db14f81f /module
parentIncrease LOW_SPEED_TIME to try to avoid pycurl error 28 (diff)
downloadpyload-691c4974df7cd3305c78e518dbcbc638adc36f88.tar.xz
[Crypter] Rewitten
Diffstat (limited to 'module')
-rw-r--r--module/plugins/Crypter.py77
1 files changed, 61 insertions, 16 deletions
diff --git a/module/plugins/Crypter.py b/module/plugins/Crypter.py
index be6d9cbc3..61cdeddc9 100644
--- a/module/plugins/Crypter.py
+++ b/module/plugins/Crypter.py
@@ -1,36 +1,45 @@
# -*- coding: utf-8 -*-
from module.plugins.Plugin import Plugin
+from utils import save_path
class Crypter(Plugin):
- __name__ = "Crypter"
- __type__ = "crypter"
- __version__ = "0.1"
+ __name__ = "Crypter"
+ __type__ = "crypter"
+ __version__ = "0.2"
__pattern__ = None
+ __config__ = [] #: [("name", "type", "desc", "default")]
__description__ = """Base decrypter plugin"""
- __license__ = "GPLv3"
- __authors__ = [("mkaay", "mkaay@mkaay.de")]
+ __license__ = "GPLv3"
+ __authors__ = [("Walter Purcaro", "vuolter@gmail.com")]
def __init__(self, pyfile):
- Plugin.__init__(self, pyfile)
-
#: Put all packages here. It's a list of tuples like: ( name, [list of links], folder )
self.packages = []
#: List of urls, pyLoad will generate packagenames
self.urls = []
- self.multiDL = True
- self.limitDL = 0
+ self.__config__.extend([("use_subfolder", "bool", "Save package to subfolder", True), #: Overrides core.config['general']['folder_per_package']
+ ("subfolder_per_package", "bool", "Create a subfolder for each package", True)])
+
+ Plugin.__init__(self, pyfile)
def process(self, pyfile):
""" main method """
+
self.decrypt(pyfile)
+
+ if self.urls:
+ self.generatePackages()
+ elif not self.packages:
+ self.error(_("No link extracted"), "decrypt")
+
self.createPackages()
@@ -38,18 +47,54 @@ class Crypter(Plugin):
raise NotImplementedError
+ def generatePackages(self):
+ """ generate new packages from self.urls """
+
+ packages = map(lambda name, links: (name, links, None), self.api.generatePackages(self.urls).iteritems())
+ self.packages.extend(packages)
+
+
def createPackages(self):
""" create new packages from self.packages """
+
+ package_folder = self.pyfile.package().folder
+ package_password = self.pyfile.package().password
+ package_queue = self.pyfile.package().queue
+
+ use_subfolder = self.getConfig('use_subfolder')
+ subfolder_per_package = self.getConfig('subfolder_per_package')
+
+ folder_per_package = self.config['general']['folder_per_package']
+
for pack in self.packages:
+ name, links, folder = pack
- self.logDebug("Parsed package %(name)s with %(len)d links" % { "name" : pack[0], "len" : len(pack[1]) } )
+ self.logDebug("Parsed package: " + name,
+ "%d links" % len(links),
+ "Saved to folder: %s" % folder if folder else "Saved to download folder")
- links = [x.decode("utf-8") for x in pack[1]]
+ links = map(lambda x: x.decode("utf-8"), links)
- pid = self.core.api.addPackage(pack[0], links, self.pyfile.package().queue)
+ pid = self.api.addPackage(name, links, package_queue)
- if self.pyfile.package().password:
- self.core.api.setPackageData(pid, {"password": self.pyfile.package().password})
+ if package_password:
+ self.api.setPackageData(pid, {"password": package_password})
- if self.urls:
- self.core.api.generateAndAddPackages(self.urls)
+ setFolder = lambda x: self.api.setPackageData(pid, {"folder": x or ""}) #: Workaround to not break API addPackage method
+
+ if use_subfolder:
+ if not subfolder_per_package:
+ setFolder(package_folder)
+ self.logDebug("Set package %(name)s folder to: %(folder)s" % {"name": name, "folder": folder})
+
+ elif not folder_per_package or name != folder:
+ if not folder:
+ folder = name.replace("http://", "").replace(":", "").replace("/", "_").replace("\\", "_")
+
+ folder = save_path(folder) #@TODO: move to deep code checks
+
+ setFolder(folder)
+ self.logDebug("Set package %(name)s folder to: %(folder)s" % {"name": name, "folder": folder})
+
+ elif folder_per_package:
+ setFolder(None)