summaryrefslogtreecommitdiffstats
path: root/pyLoadUpdater.py
diff options
context:
space:
mode:
authorGravatar RaNaN <Mast3rRaNaN@hotmail.de> 2009-08-01 14:01:08 +0200
committerGravatar RaNaN <Mast3rRaNaN@hotmail.de> 2009-08-01 14:01:08 +0200
commita264d2932e827d5b2678a96a12f2d8b82a2b3d18 (patch)
tree3025fa79c9c8c677ab59465e99edce652f44c8a3 /pyLoadUpdater.py
parentfixed bug if reconnect method not found (diff)
downloadpyload-a264d2932e827d5b2678a96a12f2d8b82a2b3d18.tar.xz
new pyLoad Updater
Diffstat (limited to 'pyLoadUpdater.py')
-rw-r--r--pyLoadUpdater.py113
1 files changed, 113 insertions, 0 deletions
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