diff options
-rw-r--r-- | pyLoadCore.py | 30 | ||||
-rw-r--r-- | pyLoadUpdater.py | 113 |
2 files changed, 129 insertions, 14 deletions
diff --git a/pyLoadCore.py b/pyLoadCore.py index cc1eee920..2039eba9f 100644 --- a/pyLoadCore.py +++ b/pyLoadCore.py @@ -17,7 +17,7 @@ # along with this program; if not, see <http://www.gnu.org/licenses/>. # ### -CURRENT_VERSION = '0.1' +CURRENT_VERSION = '0.0.5' import ConfigParser import gettext @@ -62,7 +62,7 @@ class Core(object): self.init_logger(logging.DEBUG) # logging level - #self.check_update() + self.check_update() self.logger.info(_("Downloadtime: %s") % self.is_dltime()) # debug only @@ -118,16 +118,15 @@ class Core(object): txt.write("") txt.close() - #def check_update(self): - #"""checks newst version - #""" - #newst_version = urllib2.urlopen("http://pyload.nady.biz/files/version.txt").readline().strip() - #if CURRENT_VERSION < newst_version: - #self.logger.info(_("new update %s on pyload.org") % newst_version) #newer version out - #elif CURRENT_VERSION == newst_version: - #self.logger.info(_("newst version %s in use:") % CURRENT_VERSION) #using newst version - #else: - #self.logger.info(_("beta version %s in use:") % CURRENT_VERSION) #using beta version + def check_update(self): + """checks newst version + """ + newst_version = urllib2.urlopen("http://pyloadupdate.appspot.com/", "version="+CURRENT_VERSION).readline() + if newst_version == "True": + self.logger.info("New version available, please run Updater") + else: + self.logger.info("pyLoad is up-to-date") + def check_create(self, check_name, legend, folder=True): if not exists(check_name): @@ -223,7 +222,9 @@ class Core(object): self._test_print_status() self.server_test() sleep(2) - if self.do_kill: exit() + if self.do_kill: + self.logger.info("pyLoad quits") + exit() def server_test(self): obj = RequestObject() @@ -244,6 +245,7 @@ class Core(object): def kill(self): self.do_kill = True + self.logger.info("Going to kill pyLoad") exit() return True @@ -256,7 +258,7 @@ class Core(object): while self.thread_list.py_downloading: sleep(1) - + self.logger.info("Going to shutdown pyLoad") exit() def add_links(self, links): diff --git a/pyLoadUpdater.py b/pyLoadUpdater.py new file mode 100644 index 000000000..69575da8a --- /dev/null +++ b/pyLoadUpdater.py @@ -0,0 +1,113 @@ +import urllib +import urllib2 +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# +#Copyright (C) 2009 RaNaN +# +#This program is free software; you can redistribute it and/or modify +#it under the terms of the GNU General Public License as published by +#the Free Software Foundation; either version 3 of the License, +#or (at your option) any later version. +# +#This program is distributed in the hope that it will be useful, +#but WITHOUT ANY WARRANTY; without even the implied warranty of +#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +#See the GNU General Public License for more details. +# +#You should have received a copy of the GNU General Public License +# along with this program; if not, see <http://www.gnu.org/licenses/>. +# +### + + +## read version from core +import re +import zipfile +import os + +class Unzip: + def __init__(self): + pass + + def extract(self, file, dir): + if not dir.endswith(':') and not os.path.exists(dir): + os.mkdir(dir) + + zf = zipfile.ZipFile(file) + + # create directory structure to house files + self._createstructure(file, dir) + + # extract files to directory structure + for i, name in enumerate(zf.namelist()): + + if not name.endswith('/') and not name.endswith("config"): + print "extracting", name.replace("pyload/","") + outfile = open(os.path.join(dir, name.replace("pyload/","")), 'wb') + outfile.write(zf.read(name)) + outfile.flush() + outfile.close() + + + def _createstructure(self, file, dir): + self._makedirs(self._listdirs(file), dir) + + def _makedirs(self, directories, basedir): + """ Create any directories that don't currently exist """ + for dir in directories: + curdir = os.path.join(basedir, dir) + if not os.path.exists(curdir): + os.mkdir(curdir) + + def _listdirs(self, file): + """ Grabs all the directories in the zip structure + This is necessary to create the structure before trying + to extract the file to it. """ + zf = zipfile.ZipFile(file) + + dirs = [] + + for name in zf.namelist(): + if name.endswith('/'): + dirs.append(name.replace("pyload/","")) + + dirs.sort() + return dirs + + +def main(): + print "Updating pyLoad" + + try: + f = open("pyLoadCore.py", "rb") + version = re.search(r"CURRENT_VERSION = '([0-9.]+)'",f.read()).group(1) + f.close() + except: + version = "0.0.0" + + + print "Your version:", version + + req = urllib2.urlopen("http://pyloadupdate.appspot.com/", "version="+version) + result = req.readline() + + if result == "False": + print "pyLoad is up-to-date, nothing to do." + return False + + req = urllib2.urlopen("http://pyloadupdate.appspot.com/") + result = req.readline() + print "Newest Version:", result + print "Download new Version" + + urllib.urlretrieve("http://pyloadupdate.appspot.com/download", "lastest_version.zip") + + u = Unzip() + u.extract("lastest_version.zip",".") + + + + +if __name__ == "__main__": + main()
\ No newline at end of file |