diff options
author | spoob <spoob@gmx.de> | 2009-12-03 23:33:46 +0100 |
---|---|---|
committer | spoob <spoob@gmx.de> | 2009-12-03 23:33:46 +0100 |
commit | f98a9eea978ccf56d41f4ce355f2b514fc9e4af1 (patch) | |
tree | 1cb7e115b3d6f7053ef057cb7e84e9279b1d9601 | |
parent | base for new gui (diff) | |
download | pyload-f98a9eea978ccf56d41f4ce355f2b514fc9e4af1.tar.xz |
Convert read_url_list to new Plugin
-rw-r--r-- | config | 2 | ||||
-rw-r--r-- | module/plugins/CCF.py | 2 | ||||
-rw-r--r-- | module/plugins/LinkList.py | 44 | ||||
-rw-r--r-- | module/plugins/RSDF.py | 40 | ||||
-rw-r--r-- | module/plugins/RapidshareCom.py | 2 | ||||
-rw-r--r-- | module/thread_list.py | 30 | ||||
-rwxr-xr-x | pyLoadCore.py | 116 |
7 files changed, 144 insertions, 92 deletions
@@ -29,7 +29,7 @@ use_reconnect = False link_file = links.txt failed_file = failed_links.txt reconnect_method = reconnect_method -debug_mode = True +debug_mode = False #hours max_download_time = 5 diff --git a/module/plugins/CCF.py b/module/plugins/CCF.py index ba5b1c77d..7b6e3397f 100644 --- a/module/plugins/CCF.py +++ b/module/plugins/CCF.py @@ -17,7 +17,7 @@ class CCF(Plugin): props = {} props['name'] = "CCF" props['type'] = "container" - props['pattern'] = r".*\.ccf" + props['pattern'] = r"(?!http://).*\.ccf" props['version'] = "0.1" props['description'] = """CCF Container Convert Plugin""" props['author_name'] = ("Willnix") diff --git a/module/plugins/LinkList.py b/module/plugins/LinkList.py new file mode 100644 index 000000000..e496f2a57 --- /dev/null +++ b/module/plugins/LinkList.py @@ -0,0 +1,44 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +import re + +from module.Plugin import Plugin + +class LinkList(Plugin): + + def __init__(self, parent): + Plugin.__init__(self, parent) + props = {} + props['name'] = "LinkList" + props['type'] = "container" + props['pattern'] = r"(?!http://).*\.txt" + props['version'] = "0.1" + props['description'] = """Read Link Lists in txt format""" + props['author_name'] = ("Spoob") + props['author_mail'] = ("spoob@pyload.org") + self.props = props + self.parent = parent + self.html = None + self.read_config() + + def file_exists(self): + """ returns True or False + """ + return True + + def proceed(self, linkList, location): + tmpLinks = [] + txt = open(linkList, 'r') + links = txt.readlines() + for link in links: + if link != "\n": + tmpLinks.append(link) + txt.close() + + txt = open(linkList, 'w') + txt.write("") + txt.close() + #may delete read txt file? + + self.links = tmpLinks diff --git a/module/plugins/RSDF.py b/module/plugins/RSDF.py index 50fca9b1f..5ce8fd716 100644 --- a/module/plugins/RSDF.py +++ b/module/plugins/RSDF.py @@ -13,7 +13,7 @@ class RSDF(Plugin): props = {} props['name'] = "RSDF" props['type'] = "container" - props['pattern'] = r".*\.rsdf" + props['pattern'] = r"(?!http://).*\.rsdf" props['version'] = "0.2" props['description'] = """RSDF Container Decode Plugin""" props['author_name'] = ("RaNaN", "spoob") @@ -29,31 +29,27 @@ class RSDF(Plugin): return True def proceed(self, url, location): - try: - from Crypto.Cipher import AES + from Crypto.Cipher import AES - infile = url.replace("\n", "") - Key = binascii.unhexlify('8C35192D964DC3182C6F84F3252239EB4A320D2500000000') + infile = url.replace("\n", "") + Key = binascii.unhexlify('8C35192D964DC3182C6F84F3252239EB4A320D2500000000') - IV = binascii.unhexlify('FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF') - IV_Cipher = AES.new(Key, AES.MODE_ECB) - IV = IV_Cipher.encrypt(IV) + IV = binascii.unhexlify('FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF') + IV_Cipher = AES.new(Key, AES.MODE_ECB) + IV = IV_Cipher.encrypt(IV) - obj = AES.new(Key, AES.MODE_CFB, IV) + obj = AES.new(Key, AES.MODE_CFB, IV) - rsdf = open(infile, 'r') + rsdf = open(infile, 'r') - data = rsdf.read() - data = binascii.unhexlify(''.join(data.split())) - data = data.splitlines() + data = rsdf.read() + data = binascii.unhexlify(''.join(data.split())) + data = data.splitlines() - for link in data: - link = base64.b64decode(link) - link = obj.decrypt(link) - decryptedUrl = link.replace('CCF: ', '') - self.links.append(decryptedUrl) + for link in data: + link = base64.b64decode(link) + link = obj.decrypt(link) + decryptedUrl = link.replace('CCF: ', '') + self.links.append(decryptedUrl) - rsdf.close() - - except: - print "Kein Crypto installiert, RSDF Plugin kann nicht genutzt werden" + rsdf.close() diff --git a/module/plugins/RapidshareCom.py b/module/plugins/RapidshareCom.py index 29e9a7c1f..7daff3f8f 100644 --- a/module/plugins/RapidshareCom.py +++ b/module/plugins/RapidshareCom.py @@ -27,7 +27,7 @@ class RapidshareCom(Plugin): self.time_plus_wait = None #time() + wait in seconds self.want_reconnect = False self.no_slots = True - self.logger = logging.getLogger("log") + #~ self.logger = logging.getLogger("log") self.read_config() if self.config['premium']: self.multi_dl = True diff --git a/module/thread_list.py b/module/thread_list.py index fc886e4b4..55f237544 100644 --- a/module/thread_list.py +++ b/module/thread_list.py @@ -78,7 +78,10 @@ class Thread_List(object): if not pyfile.plugin.multi_dl: self.occ_plugins.append(pyfile.modul.__name__) pyfile.active = True - self.parent.logger.info('Download starts: ' + pyfile.url) + if pyfile.plugin.props['type'] == "container": + self.parent.logger.info('Get links from: ' + pyfile.url) + else: + self.parent.logger.info('Download starts: ' + pyfile.url) self.lock.release() return pyfile @@ -102,14 +105,27 @@ class Thread_List(object): self.py_downloading.remove(pyfile) if pyfile.status.type == "finished": - self.parent.logger.info('Download finished: ' + pyfile.url + ' @' + str(pyfile.status.get_speed()) + 'kb/s') - if pyfile.plugin.props['type'] == "container": - self.list.packager.removeFileFromPackage(pyfile.id, pyfile.package.id) + #works(!) but adds many packs to queue + newLinks = 0 + newPackager = self.list.packager.addNewPackage(pyfile.status.filename) for link in pyfile.plugin.links: - id = self.list.collector.addLink(link) - pyfile.packager.pullOutPackage(pyfile.package.id) - pyfile.packager.addFileToPackage(pyfile.package.id, pyfile.collector.popFile(id)) + newFile = self.list.collector.addLink(link) + self.list.packager.addFileToPackage(newPackager, self.list.collector.popFile(newFile)) + newLinks += 1 + self.list.packager.pushPackage2Queue(newPackager) + + if newLinks: + self.parent.logger.info("Parsed link from %s: %i" % (pyfile.status.filename, newLinks)) + else: + self.parent.logger.info("No links in %s" % pyfile.status.filename) + #~ self.list.packager.removeFileFromPackage(pyfile.id, pyfile.package.id) + #~ for link in pyfile.plugin.links: + #~ id = self.list.collector.addLink(link) + #~ pyfile.packager.pullOutPackage(pyfile.package.id) + #~ pyfile.packager.addFileToPackage(pyfile.package.id, pyfile.collector.popFile(id)) + else: + self.parent.logger.info("Download finished: %s" % pyfile.url) elif pyfile.status.type == "reconnected": pyfile.plugin.req.init_curl() diff --git a/pyLoadCore.py b/pyLoadCore.py index e66e29c15..eedb547bf 100755 --- a/pyLoadCore.py +++ b/pyLoadCore.py @@ -47,7 +47,7 @@ from re import sub from module.file_list import File_List from module.thread_list import Thread_List from module.network.Request import Request -from module.web.WebServer import WebServer +#~ from module.web.WebServer import WebServer import module.remote.SecureXMLRPCServer as Server import thread @@ -130,7 +130,6 @@ class Core(object): else: self.init_logger(logging.INFO) # logging level - self.check_update() path.append(self.plugin_folder) self.create_plugin_index() @@ -139,44 +138,27 @@ class Core(object): self.file_list = File_List(self) self.thread_list = Thread_List(self) + self.server_methods.check_update() + self.init_server() - self.init_webserver() + #~ self.init_webserver() # start webinterface like cli, gui etc + self.logger.info(_("Downloadtime: %s") % self.server_methods.is_time_download()) # debug only - self.read_url_list(self.config['general']['link_file']) - + #read url list @mkaay: pid, lid? + linkFile = self.config['general']['link_file'] + pid = self.file_list.packager.addNewPackage(package_name=linkFile) + lid = self.file_list.collector.addLink(linkFile) + self.file_list.packager.addFileToPackage(pid, self.file_list.collector.popFile(lid)) + self.file_list.packager.pushPackage2Queue(pid) + while True: sleep(2) if self.do_kill: self.logger.info("pyLoad quits") exit() - - def read_url_list(self, url_list): - """read links from txt""" - txt = open(url_list, 'r') - new_links = 0 - links = txt.readlines() - pid = self.file_list.packager.addNewPackage(package_name="links.txt") - for link in links: - if link != "\n": - lid = self.file_list.collector.addLink(link) - self.file_list.packager.addFileToPackage(pid, fl.collector.popFile(lid)) - new_links += 1 - - txt.close() - - if new_links: - self.logger.info("Parsed link from %s: %i" % (url_list, new_links)) - self.file_list.packager.pushPackage2Queue(pid) - else: - self.file_list.packager.removePackage(pid) - self.file_list.save() - txt = open(url_list, 'w') - txt.write("") - txt.close() - def init_server(self): try: server_addr = (self.config['remote']['listenaddr'], int(self.config['remote']['port'])) @@ -244,34 +226,20 @@ class Core(object): print _("could not find %s: %s") % (legend, check_name) if essential and not created: exit() - - def check_update(self): - """checks newst version""" - if self.config['updates']['search_updates']: - version_check = Request().load("http://update.pyload.org/index.php?do=dev%s&download=%s" %(CURRENT_VERSION, self.config['updates']['install_updates'])) - if version_check == "": - self.logger.info("No Updates for pyLoad") - return False - else: - if self.config['updates']['install_updates']: - try: - tmp_zip_name = __import__("tempfile").NamedTemporaryFile(suffix=".zip").name - tmp_zip = open(tmp_zip_name, 'w') - tmp_zip.write(version_check) - tmp_zip.close() - __import__("module.Unzip", globals(), locals(), "Unzip", -1).Unzip().extract(tmp_zip_name,"Test/") - return True - except: - self.logger.info("Auto install Faild") - return False + def restart(self): + pass + + #~ def update(self, file_update=None): + #~ try: + #~ if not file_update: + #~ tmp_zip = __import__("tempfile").NamedTemporaryFile(suffix=".zip").name + #~ file_update = Request().download("http://update.pyload.org/index.php?download=True", tmp_zip) + #~ __import__("module.Unzip", globals(), locals(), "Unzip", -1).Unzip().extract(tmp_zip,"Test/") + #~ self.logger.info(_("Updated pyLoad")) + #~ except: + #~ self.logger.info("Error on updating pyLoad") - else: - self.logger.info("New pyLoad Version %s available" % version_check) - return True - else: - return False - def create_plugin_index(self): for file_handler in glob(self.plugin_folder + sep + '*.py') + glob(self.plugin_folder + sep + 'DLC.pyc'): plugin_pattern = "" @@ -297,10 +265,11 @@ class Core(object): elif start < now and end < now and start > end: return True else: return False - def init_webserver(self): - self.webserver = WebServer(self) - if self.config['webinterface']['activated']: - self.webserver.start() + #~ def init_webserver(self): + #~ self.webserver = WebServer(self) + #~ if self.config['webinterface']['activated']: + #~ self.webserver.start() + #################################### ########## XMLRPC Methods ########## #################################### @@ -309,6 +278,33 @@ class ServerMethods(): def __init__(self, core): self.core = core + def check_update(self): + """checks newst version""" + if self.core.config['updates']['search_updates']: + version_check = Request().load("http://update.pyload.org/index.php?do=dev%s&download=%s" %(CURRENT_VERSION, self.core.config['updates']['install_updates'])) + if version_check == "": + self.core.logger.info("No Updates for pyLoad") + return False + else: + if self.core.config['updates']['install_updates']: + try: + tmp_zip_name = __import__("tempfile").NamedTemporaryFile(suffix=".zip").name + tmp_zip = open(tmp_zip_name, 'w') + tmp_zip.write(version_check) + tmp_zip.close() + __import__("module.Unzip", globals(), locals(), "Unzip", -1).Unzip().extract(tmp_zip_name,"Test/") + return True + + except: + self.logger.core.info("Auto install Faild") + return False + + else: + self.core.logger.info("New pyLoad Version %s available" % version_check) + return True + else: + return False + def status_downloads(self): downloads = [] for pyfile in self.core.thread_list.py_downloading: |