diff options
author | RaNaN <Mast3rRaNaN@hotmail.de> | 2011-09-01 11:45:19 +0200 |
---|---|---|
committer | RaNaN <Mast3rRaNaN@hotmail.de> | 2011-09-01 11:45:19 +0200 |
commit | 5eb9ef7b53ac398478791e75df92269f8e3b3963 (patch) | |
tree | 078731ae0d7714b5e661c13045e5618a56355caf | |
parent | fix last commit (diff) | |
download | pyload-5eb9ef7b53ac398478791e75df92269f8e3b3963.tar.xz |
closed #385
-rw-r--r-- | module/common/json.py | 12 | ||||
-rw-r--r-- | module/config/default.conf | 2 | ||||
-rw-r--r-- | module/plugins/hoster/FileserveCom.py | 1 | ||||
-rw-r--r-- | module/plugins/hoster/MegauploadCom.py | 5 | ||||
-rwxr-xr-x | pyLoadCore.py | 85 |
5 files changed, 63 insertions, 42 deletions
diff --git a/module/common/json.py b/module/common/json.py new file mode 100644 index 000000000..e9ed003a0 --- /dev/null +++ b/module/common/json.py @@ -0,0 +1,12 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + + +# abstraction layer for json operations + +try: # since python 2.7 + from json import loads as json_loads + from json import dumps as json_dumps +except ImportError: + from module.lib.simplejson import loads as json_loads + from module.lib.simplejson import dumps as json_dumps
\ No newline at end of file diff --git a/module/config/default.conf b/module/config/default.conf index 71d8c7023..eef8f6347 100644 --- a/module/config/default.conf +++ b/module/config/default.conf @@ -19,6 +19,8 @@ log - "Log": bool file_log : "File Log" = True
folder log_folder : "Folder" = Logs
int log_count : "Count" = 5
+ int log_size : "Size in kb" = 100
+ bool log_rotate : "Log Rotate" = True
general - "General":
en;de;fr;it;es;sv;ru;pl;cs;pt_BR language : "Language" = en
folder download_folder : "Download Folder" = Downloads
diff --git a/module/plugins/hoster/FileserveCom.py b/module/plugins/hoster/FileserveCom.py index 53a970226..1ee19b00c 100644 --- a/module/plugins/hoster/FileserveCom.py +++ b/module/plugins/hoster/FileserveCom.py @@ -2,7 +2,6 @@ from __future__ import with_statement
import re
-from base64 import standard_b64encode
from module.plugins.Hoster import Hoster
from module.plugins.ReCaptcha import ReCaptcha
diff --git a/module/plugins/hoster/MegauploadCom.py b/module/plugins/hoster/MegauploadCom.py index a5dc0b72e..4854dcef7 100644 --- a/module/plugins/hoster/MegauploadCom.py +++ b/module/plugins/hoster/MegauploadCom.py @@ -143,8 +143,9 @@ class MegauploadCom(Hoster): for i in range(10):
page = self.load("http://www.megaupload.com/?c=premium&l=1", decode=True)
+ # MU thinks dl is already running
if "Please finish this download before starting another one." in page and i != 9:
- sleep(1)
+ sleep(2)
elif i != 9:
try:
wait = re.search(r"Please wait (\d+) minutes", page).group(1)
@@ -152,7 +153,7 @@ class MegauploadCom(Hoster): except :
pass
else:
- wait = 1
+ wait = 2 # lowest limit seems to be 2 minutes
self.log.info(_("Megaupload: waiting %d minutes") % int(wait))
self.setWait(int(wait)*60, True)
diff --git a/pyLoadCore.py b/pyLoadCore.py index 13bfe2d12..bb1bd28f3 100755 --- a/pyLoadCore.py +++ b/pyLoadCore.py @@ -54,16 +54,16 @@ from module.common.JsEngine import JsEngine from module.remote.RemoteManager import RemoteManager from module.database import DatabaseBackend, FileHandler - from module.utils import freeSpace, formatSize from codecs import getwriter + if os.name == "nt": enc = "cp850" else: enc = "utf8" -sys.stdout = getwriter(enc)(sys.stdout, errors = "replace") +sys.stdout = getwriter(enc)(sys.stdout, errors="replace") # TODO List @@ -77,11 +77,12 @@ class Core(object): self.daemon = False self.arg_links = [] self.pidfile = "pyload.pid" - + if len(argv) > 1: try: options, args = getopt(argv[1:], 'vchdusq', - ["version", "clear", "clean", "help", "debug", "user", "setup", "configdir=", "changedir", "daemon", "quit", "status"]) + ["version", "clear", "clean", "help", "debug", "user", "setup", "configdir=", "changedir", "daemon", + "quit", "status"]) for option, argument in options: if option in ("-v", "--version"): @@ -130,7 +131,7 @@ class Core(object): elif option == "--clean": self.cleanTree() exit() - + except GetoptError: print 'Unknown Argument(s) "%s"' % " ".join(argv[1:]) self.print_help() @@ -141,7 +142,7 @@ class Core(object): print "pyLoad v%s 2008-2011 the pyLoad Team" % CURRENT_VERSION print "" if sys.argv[0].endswith(".py"): - print "Usage: python pyLoadCore.py [options]" + print "Usage: python pyLoadCore.py [options]" else: print "Usage: pyLoadCore [options]" print "" @@ -153,10 +154,10 @@ class Core(object): print " -d, --debug", " " * 12, "Enable debug mode" print " -s, --setup", " " * 12, "Run Setup Assistent" print " --configdir=<dir>", " " * 6, "Run with <dir> as config directory" - print " --changedir", " "* 12, "Change config dir permanently" + print " --changedir", " " * 12, "Change config dir permanently" print " --daemon", " " * 15, "Daemonmize after start" print " --status", " " * 15, "Display pid if running or False" - print " --clean", " " * 16 , "Remove .pyc/.pyo files" + print " --clean", " " * 16, "Remove .pyc/.pyo files" print " -q, --quit", " " * 13, "Quit running pyLoad instance" print " -h, --help", " " * 13, "Display this help screen" print "" @@ -173,19 +174,19 @@ class Core(object): self.shutdown() self.log.info(_("Received Quit signal")) _exit(1) - + def writePidFile(self): self.deletePidFile() pid = os.getpid() f = open(self.pidfile, "wb") f.write(str(pid)) f.close() - + def deletePidFile(self): if self.checkPidFile(): self.log.debug("Deleting old pidfile %s" % self.pidfile) os.remove(self.pidfile) - + def checkPidFile(self): """ return pid as int or 0""" if os.path.isfile(self.pidfile): @@ -216,7 +217,7 @@ class Core(object): pid = self.isAlreadyRunning() if not pid: print "No pyLoad running." - return + return try: os.kill(pid, 3) #SIGUIT @@ -249,12 +250,12 @@ class Core(object): print join(path, f) remove(join(path, f)) - + def start(self, rpc=True, web=True): """ starts the fun :D """ self.version = CURRENT_VERSION - + if not exists("pyload.conf"): from module.setup import Setup @@ -289,13 +290,13 @@ class Core(object): exit() if os.name != "nt" and self.config["general"]["renice"]: - os.system("renice %d %d" % (self.config["general"]["renice"], os.getpid()) ) + os.system("renice %d %d" % (self.config["general"]["renice"], os.getpid())) if self.config["permission"]["change_group"]: - if os.name != "nt": try: from grp import getgrnam + group = getgrnam(self.config["permission"]["group"]) os.setgid(group[2]) except Exception, e: @@ -305,6 +306,7 @@ class Core(object): if os.name != "nt": try: from pwd import getpwnam + user = getpwnam(self.config["permission"]["user"]) os.setuid(user[2]) except Exception, e: @@ -346,15 +348,16 @@ class Core(object): if self.config.oldRemoteData: self.log.info(_("Moving old user config to DB")) self.db.addUser(self.config.oldRemoteData["username"], self.config.oldRemoteData["password"]) - + self.log.info(_("Please check your logindata with ./pyLoadCore.py -u")) - + self.requestFactory = RequestFactory(self) __builtin__.pyreq = self.requestFactory self.lastClientConnected = 0 from module.Api import Api + self.api = Api(self) self.scheduler = Scheduler(self) @@ -374,14 +377,14 @@ class Core(object): if rpc: self.remoteManager.startBackends() - + if web: self.init_webserver() #linkFile = self.config['general']['link_file'] spaceLeft = freeSpace(self.config["general"]["download_folder"]) - + self.log.info(_("Free space: %s") % formatSize(spaceLeft)) self.config.save() #save so config files gets filled @@ -405,7 +408,6 @@ class Core(object): self.log.info(_("Activating Accounts...")) self.accountManager.getAccountInfos() - self.threadManager.pause = False self.running = True @@ -425,7 +427,7 @@ class Core(object): # objgraph.show_most_common_types(limit=20) # import memdebug # memdebug.start(8002) - + locals().clear() while True: @@ -445,10 +447,10 @@ class Core(object): def setupDB(self): self.db = DatabaseBackend(self) # the backend self.db.setup() - + self.files = FileHandler(self) self.db.manager = self.files #ugly? - + def init_webserver(self): if self.config['webinterface']['activated']: self.webserver = WebServer(self) @@ -461,11 +463,14 @@ class Core(object): self.log = logging.getLogger("log") # settable in config if self.config['log']['file_log']: - file_handler = logging.handlers.RotatingFileHandler(join(self.config['log']['log_folder'], 'log.txt'), - maxBytes=102400, - backupCount=int(self.config['log']['log_count']), - encoding="utf8" - ) #100 kib each + if self.config['log']['log_rotate']: + file_handler = logging.handlers.RotatingFileHandler(join(self.config['log']['log_folder'], 'log.txt'), + maxBytes=self.config['log']['log_size'] * 1024, + backupCount=int(self.config['log']['log_count']), + encoding="utf8") + else: + file_handler = logging.FileHandler(join(self.config['log']['log_folder'], 'log.txt'), encoding="utf8") + file_handler.setFormatter(frm) self.log.addHandler(file_handler) @@ -476,7 +481,7 @@ class Core(object): for h in list(self.log.handlers): self.log.removeHandler(h) h.close() - + def check_install(self, check_name, legend, python=True, essential=False): """check wether needed tools are installed""" try: @@ -524,7 +529,8 @@ class Core(object): pass else: if not empty: - self.log.warning(_("could not find %(desc)s: %(name)s") % {"desc": description, "name": tmp_name}) + self.log.warning( + _("could not find %(desc)s: %(name)s") % {"desc": description, "name": tmp_name}) else: print _("could not create %(desc)s: %(name)s") % {"desc": description, "name": tmp_name} if essential: @@ -562,12 +568,13 @@ class Core(object): finally: self.files.syncSave() self.shuttedDown = True - + self.deletePidFile() - def path(self, * args): - return join(pypath, * args) + def path(self, *args): + return join(pypath, *args) + def deamon(): try: @@ -575,7 +582,7 @@ def deamon(): if pid > 0: sys.exit(0) except OSError, e: - print >>sys.stderr, "fork #1 failed: %d (%s)" % (e.errno, e.strerror) + print >> sys.stderr, "fork #1 failed: %d (%s)" % (e.errno, e.strerror) sys.exit(1) # decouple from parent environment @@ -590,18 +597,18 @@ def deamon(): print "Daemon PID %d" % pid sys.exit(0) except OSError, e: - print >>sys.stderr, "fork #2 failed: %d (%s)" % (e.errno, e.strerror) + print >> sys.stderr, "fork #2 failed: %d (%s)" % (e.errno, e.strerror) sys.exit(1) # Iterate through and close some file descriptors. for fd in range(0, 3): try: os.close(fd) - except OSError: # ERROR, fd wasn't open to begin with (ignored) + except OSError: # ERROR, fd wasn't open to begin with (ignored) pass - os.open(os.devnull, os.O_RDWR) # standard input (0) - os.dup2(0, 1) # standard output (1) + os.open(os.devnull, os.O_RDWR) # standard input (0) + os.dup2(0, 1) # standard output (1) os.dup2(0, 2) pyload_core = Core() |