summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar spoob <spoob@gmx.de> 2009-12-03 23:33:46 +0100
committerGravatar spoob <spoob@gmx.de> 2009-12-03 23:33:46 +0100
commitf98a9eea978ccf56d41f4ce355f2b514fc9e4af1 (patch)
tree1cb7e115b3d6f7053ef057cb7e84e9279b1d9601
parentbase for new gui (diff)
downloadpyload-f98a9eea978ccf56d41f4ce355f2b514fc9e4af1.tar.xz
Convert read_url_list to new Plugin
-rw-r--r--config2
-rw-r--r--module/plugins/CCF.py2
-rw-r--r--module/plugins/LinkList.py44
-rw-r--r--module/plugins/RSDF.py40
-rw-r--r--module/plugins/RapidshareCom.py2
-rw-r--r--module/thread_list.py30
-rwxr-xr-xpyLoadCore.py116
7 files changed, 144 insertions, 92 deletions
diff --git a/config b/config
index 5c81c7f65..c593674f6 100644
--- a/config
+++ b/config
@@ -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: