Ejemplo n.º 1
0
    def run(self):
        plugins = accumulate(self.data)
        crypter = {}

        # db or info result
        cb = self.update_db if self.pid > 1 else self.update_result

        # filter out crypter plugins
        for name in self.manager.pyload.pgm.get_plugins("crypter"):
            if name in plugins:
                crypter[name] = plugins[name]
                del plugins[name]

        if crypter:
            # decrypt them
            links, packages = self.decrypt(crypter, err=True)
            # push these as initial result and save package names
            cb(links)
            for pack in packages:
                for url in pack.get_urls():
                    self.names[url] = pack.name

                links.extend(pack.links)
                cb(pack.links)

            # TODO: no plugin information pushed to GUI
            # parse links and merge
            hoster, crypter = self.manager.pyload.pgm.parse_urls(
                l.url for l in links)
            accumulate(hoster + crypter, plugins)

        self.progress = ProgressInfo(
            "BasePlugin", "", _("online check"), 0, 0,
            sum(len(urls) for urls in plugins.values()), self.owner,
            ProgressType.LinkCheck)

        for pluginname, urls in plugins.items():
            plugin = self.manager.pyload.pgm.load_module("hoster", pluginname)
            klass = self.manager.pyload.pgm.get_plugin_class("hoster",
                                                             pluginname,
                                                             overwrite=False)
            if hasmethod(klass, "get_info"):
                self.fetch_for_plugin(klass, urls, cb)
            # TODO: this branch can be removed in the future
            elif hasmethod(plugin, "get_info"):
                self.pyload.log.debug(
                    "Deprecated .get_info() method on module level, use staticmethod instead"
                )
                self.fetch_for_plugin(plugin, urls, cb)

        if self.oc:
            self.oc.done = True

        self.names.clear()
        self.manager.timestamp = time() + 5 * 60
        self.progress = None
        self.finished()
Ejemplo n.º 2
0
    def update_result(self, result):
        tmp = {}
        res = []
        # separate these with name and without
        for link in result:
            if link.url in self.names:
                tmp[link] = self.names[link.url]
            else:
                res.append(link)

        data = parse.packs((link.name, link) for link in res)
        # merge in packages that already have a name
        data = accumulate(tmp.items(), data)

        # TODO: self.oc is None ?!
        self.manager.set_info_results(self.oc, data)
Ejemplo n.º 3
0
    def run(self):
        pack = self.pyload.files.get_package(self.pid)
        api = self.pyload.api.with_user_context(self.owner)
        links, packages = self.decrypt(accumulate(self.data), pack.password)

        # if there is only one package links will be added to current one
        if len(packages) == 1:
            # TODO: also rename the package (optionally)
            links.extend(packages[0].links)
            del packages[0]

        if links:
            self.pyload.log.info(
                _("Decrypted {0:d} links into package {1}").format(
                    len(links), pack.name))
            api.add_links(self.pid, [l.url for l in links])

        for p in packages:
            api.add_package(p.name, p.get_urls(), pack.password)

        self.pyload.files.set_download_status(
            self.fid, DownloadStatus.Finished
            if not self.error else DownloadStatus.Failed)
        self.manager.done(self)
Ejemplo n.º 4
0
    links = [x.strip() for x in fp.readlines()]
urls = []
flags = {}

for l in links:
    if not l or l.startswith("#"):
        continue
    if l.startswith("http"):
        if "||" in l:
            l, flag = l.split("||")
            flags[l] = flag

        urls.append(l)

h, crypter = c.pgm.parse_urls(urls)
plugins = accumulate(crypter)
for plugin, urls in plugins.items():

    def meta_class(plugin):
        class _testerClass(CrypterPluginTester):
            pass

        _testerClass.__name__ = plugin
        return _testerClass

    _testerClass = meta_class(plugin)

    for i, url in enumerate(urls):

        def meta(plugin, url, flag, sig):
            def _test(self):
Ejemplo n.º 5
0
del sections['files']

urls = []
status = {}

for k, v in sections.items():
    if k not in statusmap:
        print("Unknown status {0}".format(k))
    for url in v:
        urls.append(url)
        status[url] = k

hoster, c = c.pgm.parse_urls(urls)

plugins = accumulate(hoster)
for plugin, urls in plugins.items():
    # closure functions to retain local scope
    def meta_class(plugin):
        class _testerClass(HosterPluginTester):
            pass

        _testerClass.__name__ = plugin
        return _testerClass

    _testerClass = meta_class(plugin)

    for i, url in enumerate(urls):

        def meta(__plugin, url, status, sig):
            def _test(self):
Ejemplo n.º 6
0
del sections['files']

urls = []
status = {}

for k, v in sections.items():
    if k not in statusmap:
        print("Unknown status {0}".format(k))
    for url in v:
        urls.append(url)
        status[url] = k

hoster, c = c.pgm.parse_urls(urls)

plugins = accumulate(hoster)
for plugin, urls in plugins.items():
    # closure functions to retain local scope
    def meta_class(plugin):
        class _testerClass(HosterPluginTester):
            pass
        _testerClass.__name__ = plugin
        return _testerClass

    _testerClass = meta_class(plugin)

    for i, url in enumerate(urls):
        def meta(__plugin, url, status, sig):
            def _test(self):
                self.test_plugin(__plugin, url, status)
Ejemplo n.º 7
0
flags = {}

crypterlinks = os.path.join(os.path.dirname(__file__), 'crypterlinks.txt')
with lopen(crypterlinks) as fp:
    links = (line.strip() for line in bufread(fp, buffering=1))
    for l in links:
        if not l or l.startswith('#'):
            continue
        if l.startswith('http'):
            if '||' in l:
                l, flag = l.split('||')
                flags[l] = flag
            urls.append(l)

h, crypter = c.pgm.parse_urls(urls)
plugins = accumulate(crypter)
for plugin, urls in plugins.items():

    def meta_class(plugin):
        class _testerClass(CrypterPluginTester):
            pass
        _testerClass.__name__ = plugin
        return _testerClass

    _testerClass = meta_class(plugin)

    for i, url in enumerate(urls):
        def meta(plugin, url, flag, sig):
            def _test(self):
                self.test_plugin(plugin, url, flag)