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