From 5499be89203a18ca61a21cfc7266cf0f4ebe6547 Mon Sep 17 00:00:00 2001 From: RaNaN Date: Thu, 15 Dec 2011 23:18:21 +0100 Subject: refractoring --- pyLoadCore.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'pyLoadCore.py') diff --git a/pyLoadCore.py b/pyLoadCore.py index e6b539097..a9faad908 100755 --- a/pyLoadCore.py +++ b/pyLoadCore.py @@ -41,10 +41,10 @@ from traceback import print_exc from module import InitHomeDir from module.plugins.AccountManager import AccountManager -from module.CaptchaManager import CaptchaManager +from module.interaction.CaptchaManager import CaptchaManager from module.ConfigParser import ConfigParser from module.plugins.PluginManager import PluginManager -from module.PullEvents import PullManager +from module.interaction.PullEvents import PullManager from module.network.RequestFactory import RequestFactory from module.web.ServerThread import WebServer from module.Scheduler import Scheduler -- cgit v1.2.3 From 4e918edba6c3808b095eab1bad137a2a8cab970d Mon Sep 17 00:00:00 2001 From: RaNaN Date: Sat, 17 Dec 2011 21:53:57 +0100 Subject: updated plugin api and plugin manager --- pyLoadCore.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'pyLoadCore.py') diff --git a/pyLoadCore.py b/pyLoadCore.py index a9faad908..35e667d01 100755 --- a/pyLoadCore.py +++ b/pyLoadCore.py @@ -20,7 +20,7 @@ @author: mkaay @version: v0.4.9 """ -CURRENT_VERSION = '0.4.9' +CURRENT_VERSION = '0.4.9.9-dev' import __builtin__ -- cgit v1.2.3 From 6eae782f13953dd0ba2bbe1b582cf33fd4d7d90a Mon Sep 17 00:00:00 2001 From: RaNaN Date: Mon, 19 Dec 2011 23:10:49 +0100 Subject: configparser v2, warning CONFIG will be DELETED. --- pyLoadCore.py | 31 ++++++++++++++++++++++++------- 1 file changed, 24 insertions(+), 7 deletions(-) (limited to 'pyLoadCore.py') diff --git a/pyLoadCore.py b/pyLoadCore.py index 35e667d01..7efab1061 100755 --- a/pyLoadCore.py +++ b/pyLoadCore.py @@ -42,7 +42,7 @@ from traceback import print_exc from module import InitHomeDir from module.plugins.AccountManager import AccountManager from module.interaction.CaptchaManager import CaptchaManager -from module.ConfigParser import ConfigParser +from module.config.ConfigParser import ConfigParser from module.plugins.PluginManager import PluginManager from module.interaction.PullEvents import PullManager from module.network.RequestFactory import RequestFactory @@ -58,6 +58,7 @@ from module.utils import freeSpace, formatSize, get_console_encoding from codecs import getwriter enc = get_console_encoding(sys.stdout.encoding) +sys._stdout = sys.stdout sys.stdout = getwriter(enc)(sys.stdout, errors="replace") # TODO List @@ -294,6 +295,9 @@ class Core(object): languages=[self.config['general']['language'],"en"],fallback=True) translation.install(True) + # load again so translations are propagated + self.config.loadDefault() + self.debug = self.doDebug or self.config['general']['debug_mode'] self.remote &= self.config['remote']['activated'] @@ -360,11 +364,6 @@ class Core(object): self.check_install("OpenSSL", _("OpenSSL for secure connection")) self.setupDB() - 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")) if self.deleteLinks: self.log.info(_("All links removed")) @@ -446,13 +445,22 @@ class Core(object): #some memory stats # from guppy import hpy # hp=hpy() +# print hp.heap() # import objgraph -# objgraph.show_most_common_types(limit=20) +# objgraph.show_most_common_types(limit=30) # import memdebug # memdebug.start(8002) +# from meliae import scanner +# scanner.dump_all_objects('objs.json') + + #debugger +# from IPython import embed +# sys.stdout = sys._stdout +# embed() locals().clear() +# dump = False while True: sleep(2) if self.do_restart: @@ -467,6 +475,15 @@ class Core(object): self.threadManager.work() self.scheduler.work() +# if not dump: +# sleep(10) +# print "dump objs" +# from meliae import scanner +# scanner.dump_all_objects(join(pypath, "objs.json")) +# dump = True + + import locale + def setupDB(self): self.db = DatabaseBackend(self) # the backend self.db.setup() -- cgit v1.2.3 From c9a359b75905d4910e42127cef8cbe62d4a13657 Mon Sep 17 00:00:00 2001 From: RaNaN Date: Tue, 20 Dec 2011 21:35:43 +0100 Subject: some bugfixes --- pyLoadCore.py | 20 +++++++------------- 1 file changed, 7 insertions(+), 13 deletions(-) (limited to 'pyLoadCore.py') diff --git a/pyLoadCore.py b/pyLoadCore.py index 7efab1061..3bf742310 100755 --- a/pyLoadCore.py +++ b/pyLoadCore.py @@ -25,7 +25,6 @@ CURRENT_VERSION = '0.4.9.9-dev' import __builtin__ from getopt import getopt, GetoptError -import module.common.pylgettext as gettext from imp import find_module import logging import logging.handlers @@ -33,12 +32,17 @@ import os from os import _exit, execl, getcwd, makedirs, remove, sep, walk, chdir, close from os.path import exists, join import signal -import subprocess import sys from sys import argv, executable, exit from time import time, sleep from traceback import print_exc +import locale +locale.locale_alias = locale.windows_locale = {} #save ~100kb ram, no known sideeffects for now + +import subprocess +subprocess.__doc__ = None # the module with the largest doc we are using + from module import InitHomeDir from module.plugins.AccountManager import AccountManager from module.interaction.CaptchaManager import CaptchaManager @@ -53,6 +57,7 @@ from module import remote from module.remote.RemoteManager import RemoteManager from module.database import DatabaseBackend, FileHandler +import module.common.pylgettext as gettext from module.utils import freeSpace, formatSize, get_console_encoding from codecs import getwriter @@ -460,7 +465,6 @@ class Core(object): locals().clear() -# dump = False while True: sleep(2) if self.do_restart: @@ -475,15 +479,6 @@ class Core(object): self.threadManager.work() self.scheduler.work() -# if not dump: -# sleep(10) -# print "dump objs" -# from meliae import scanner -# scanner.dump_all_objects(join(pypath, "objs.json")) -# dump = True - - import locale - def setupDB(self): self.db = DatabaseBackend(self) # the backend self.db.setup() @@ -622,7 +617,6 @@ class Core(object): def path(self, *args): return join(pypath, *args) - def deamon(): try: pid = os.fork() -- cgit v1.2.3 From 958bf611f5d9d117f19f824990ec6fd6b537e967 Mon Sep 17 00:00:00 2001 From: RaNaN Date: Thu, 22 Dec 2011 23:45:38 +0100 Subject: accountmanager v2, delete your accounts.conf and re-enter them in pyload, new nice debug functions, try core.shell() and core.breakpoint() --- pyLoadCore.py | 83 +++++++++++++++++++---------------------------------------- 1 file changed, 27 insertions(+), 56 deletions(-) (limited to 'pyLoadCore.py') diff --git a/pyLoadCore.py b/pyLoadCore.py index 3bf742310..0651f1127 100755 --- a/pyLoadCore.py +++ b/pyLoadCore.py @@ -48,7 +48,7 @@ from module.plugins.AccountManager import AccountManager from module.interaction.CaptchaManager import CaptchaManager from module.config.ConfigParser import ConfigParser from module.plugins.PluginManager import PluginManager -from module.interaction.PullEvents import PullManager +from module.interaction.EventManager import EventManager from module.network.RequestFactory import RequestFactory from module.web.ServerThread import WebServer from module.Scheduler import Scheduler @@ -58,7 +58,7 @@ from module.remote.RemoteManager import RemoteManager from module.database import DatabaseBackend, FileHandler import module.common.pylgettext as gettext -from module.utils import freeSpace, formatSize, get_console_encoding +from module.utils import freeSpace, formatSize, get_console_encoding, fs_encode from codecs import getwriter @@ -79,6 +79,7 @@ class Core(object): self.running = False self.daemon = False self.remote = True + self.pdb = None self.arg_links = [] self.pidfile = "pyload.pid" self.deleteLinks = False # will delete links on startup @@ -334,8 +335,6 @@ class Core(object): except Exception, e: print _("Failed changing user: %s") % e - self.check_file(self.config['log']['log_folder'], _("folder for logs"), True) - if self.debug: self.init_logger(logging.DEBUG) # logging level else: @@ -356,15 +355,9 @@ class Core(object): self.log.debug("Remote activated: %s" % self.remote) self.check_install("Crypto", _("pycrypto to decode container files")) - #img = self.check_install("Image", _("Python Image Libary (PIL) for captcha reading")) - #self.check_install("pycurl", _("pycurl to download any files"), True, True) - self.check_file("tmp", _("folder for temporary files"), True) - #tesser = self.check_install("tesseract", _("tesseract for captcha reading"), False) if os.name != "nt" else True self.captcha = True # checks seems to fail, althoug tesseract is available - self.check_file(self.config['general']['download_folder'], _("folder for downloads"), True) - if self.config['ssl']['activated']: self.check_install("OpenSSL", _("OpenSSL for secure connection")) @@ -393,7 +386,7 @@ class Core(object): #hell yeah, so many important managers :D self.pluginManager = PluginManager(self) - self.pullManager = PullManager(self) + self.pullManager = EventManager(self) self.accountManager = AccountManager(self) self.threadManager = ThreadManager(self) self.captchaManager = CaptchaManager(self) @@ -410,7 +403,12 @@ class Core(object): if web: self.init_webserver() - spaceLeft = freeSpace(self.config["general"]["download_folder"]) + dl_folder = fs_encode(self.config["general"]["download_folder"]) + + if not exists(dl_folder): + makedirs(dl_folder) + + spaceLeft = freeSpace(dl_folder) self.log.info(_("Free space: %s") % formatSize(spaceLeft)) @@ -433,8 +431,7 @@ class Core(object): #self.scheduler.addJob(0, self.accountManager.getAccountInfos) self.log.info(_("Activating Accounts...")) - self.accountManager.getAccountInfos() - + self.accountManager.refreshAllAccounts() self.threadManager.pause = False self.running = True @@ -458,11 +455,6 @@ class Core(object): # from meliae import scanner # scanner.dump_all_objects('objs.json') - #debugger -# from IPython import embed -# sys.stdout = sys._stdout -# embed() - locals().clear() while True: @@ -497,6 +489,9 @@ class Core(object): console.setFormatter(frm) self.log = logging.getLogger("log") # settable in config + if not exists(self.config['log']['log_folder']): + makedirs(self.config['log']['log_folder'], 0600) + if self.config['log']['file_log']: if self.config['log']['log_rotate']: file_handler = logging.handlers.RotatingFileHandler(join(self.config['log']['log_folder'], 'log.txt'), @@ -534,43 +529,6 @@ class Core(object): return False - def check_file(self, check_names, description="", folder=False, empty=True, essential=False, quiet=False): - """check wether needed files exists""" - tmp_names = [] - if not type(check_names) == list: - tmp_names.append(check_names) - else: - tmp_names.extend(check_names) - file_created = True - file_exists = True - for tmp_name in tmp_names: - if not exists(tmp_name): - file_exists = False - if empty: - try: - if folder: - tmp_name = tmp_name.replace("/", sep) - makedirs(tmp_name) - else: - open(tmp_name, "w") - except: - file_created = False - else: - file_created = False - - if not file_exists and not quiet: - if file_created: - #self.log.info( _("%s created") % description ) - pass - else: - if not empty: - 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: - exit() - def isClientConnected(self): return (self.lastClientConnected + 30) > time() @@ -613,6 +571,19 @@ class Core(object): self.deletePidFile() + def shell(self): + """ stop and open a ipython shell inplace""" + if self.debug: + from IPython import embed + sys.stdout = sys._stdout + embed() + + def breakpoint(self): + if self.debug: + from IPython.core.debugger import Pdb + sys.stdout = sys._stdout + if not self.pdb: self.pdb = Pdb() + self.pdb.set_trace() def path(self, *args): return join(pypath, *args) -- cgit v1.2.3