diff options
author | RaNaN <Mast3rRaNaN@hotmail.de> | 2011-07-04 23:11:15 +0200 |
---|---|---|
committer | RaNaN <Mast3rRaNaN@hotmail.de> | 2011-07-04 23:11:15 +0200 |
commit | 850c373f1a61b135cf71d13b9cde9c4d41463f9b (patch) | |
tree | d6c0bd18be3818ae1244b8b52516f03bc3c53c53 /module/plugins/hooks/UpdateManager.py | |
parent | closed #338 (diff) | |
download | pyload-850c373f1a61b135cf71d13b9cde9c4d41463f9b.tar.xz |
fixed some bugs, new externalscripts plugin
Diffstat (limited to 'module/plugins/hooks/UpdateManager.py')
-rw-r--r-- | module/plugins/hooks/UpdateManager.py | 29 |
1 files changed, 24 insertions, 5 deletions
diff --git a/module/plugins/hooks/UpdateManager.py b/module/plugins/hooks/UpdateManager.py index 026cd0c9f..10f50d1f0 100644 --- a/module/plugins/hooks/UpdateManager.py +++ b/module/plugins/hooks/UpdateManager.py @@ -17,6 +17,7 @@ @author: RaNaN @interface-version: 0.1 """ +import re from os.path import join from module.network.RequestFactory import getURL @@ -27,7 +28,7 @@ class UpdateManager(Hook): __version__ = "0.1" __description__ = """checks for updates""" __config__ = [("activated", "bool", "Activated", "True"), - ("interval", "int", "Check interval in minutes", "180")] + ("interval", "int", "Check interval in minutes", "360")] __author_name__ = ("RaNaN") __author_mail__ = ("ranan@pyload.org") @@ -36,12 +37,19 @@ class UpdateManager(Hook): self.updated = False self.reloaded = True + self.info = {"pyload": False, "plugins": False} + @threaded def periodical(self): update = self.checkForUpdate() - if not update: + if update: + self.info["pyload"] = True + else: + self.log.info(_("No Updates for pyLoad")) self.checkPlugins() + if self.updated and not self.reloaded: + self.info["plugins"] = True self.log.info(_("*** Plugins have been updated, please restart pyLoad ***")) elif self.updated and self.reloaded: self.log.info(_("Plugins updated and reloaded")) @@ -59,7 +67,6 @@ class UpdateManager(Hook): try: version_check = getURL("http://get.pyload.org/check/%s/" % self.core.server_methods.get_server_version()) if version_check == "": - self.log.info(_("No Updates for pyLoad")) return False else: self.log.info(_("*** New pyLoad Version %s available ***") % version_check) @@ -81,6 +88,8 @@ class UpdateManager(Hook): updates = updates.splitlines() + vre = re.compile(r'__version__.*=.*("|\')([0-9.]+)') + for plugin in updates: path, version = plugin.split(":") prefix, name = path.split("/") @@ -107,11 +116,21 @@ class UpdateManager(Hook): "version": float(version) }) - content = getURL("http://get.pyload.org/plugins/get/" + path) + try: + content = getURL("http://get.pyload.org/plugins/get/" + path) + except: + self.logWarning(_("Error when updating %s") % name) + continue + + m = vre.search(content) + if not m or m.group(2) != version: + self.logWarning(_("Error when updating %s") % name) + continue + f = open(join("userplugins", prefix, name), "wb") f.write(content) f.close() self.updated = True self.reloaded = False - self.core.pluginManager.reloadPlugins()
\ No newline at end of file + self.core.pluginManager.reloadPlugins() |