<commit_before># -*- coding: utf-8 -*-

from module.plugins.Plugin import Plugin
from utils import save_path


class Crypter(Plugin):
    __name__    = "Crypter"
    __type__    = "crypter"
    __version__ = "0.2"

    __pattern__ = None
    __config__  = [("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)]

    __description__ = """Base decrypter plugin"""
    __license__     = "GPLv3"
    __authors__     = [("<NAME>", "<EMAIL>")]


    def __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 = []

        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()


    def decrypt(self, pyfile):
        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,
                          "%d links" % len(links),
                          "Saved to folder: %s" % folder if folder else "Saved to download folder")

            links = map(lambda x: x.decode("utf-8"), links)

            pid = self.api.addPackage(name, links, package_queue)

            if package_password:
                self.api.setPackageData(pid, {"password": package_password})

            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})<commit_msg>[Crypter] Fixed<commit_after># -*- coding: utf-8 -*-

from module.plugins.Plugin import Plugin
from module.utils import save_path


class Crypter(Plugin):
    __name__    = "Crypter"
    __type__    = "crypter"
    __version__ = "0.3"

    __pattern__ = None
    __config__  = [("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)]

    __description__ = """Base decrypter plugin"""
    __license__     = "GPLv3"
    __authors__     = [("<NAME>", "<EMAIL>")]


    def __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 = []

        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()


    def decrypt(self, pyfile):
        raise NotImplementedError


    def generatePackages(self):
        """ generate new packages from self.urls """

        packages = map(lambda name, links: (name, links, None), self.core.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,
                          "%d links" % len(links),
                          "Saved to folder: %s" % folder if folder else "Saved to download folder")

            links = map(lambda x: x.decode("utf-8"), links)

            pid = self.core.api.addPackage(name, links, package_queue)

            if package_password:
                self.core.api.setPackageData(pid, {"password": <PASSWORD>})

            setFolder = lambda x: self.core.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})
{'fraction_non_alphanumeric': 0.12021182700794351, 'fraction_numerical': 0.00176522506619594, 'mean_word_length': 2.4235649546827793, 'pattern_counts': {'":': 8, '<': 8, '<?xml version=': 0, '>': 8, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 2, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '5868414', 'n_tokens_mistral': 1655, 'n_tokens_neox': 1579, 'n_words': 410}