1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89
|
__version__ = "0.1.0 Beta" __author__ = "Zeuxis Lo" __appname__ = "Chromium Nightly Updater (Python)"
import urllib2, urllib, os, sys
def dlProgress(blocks_read, block_size, total_size, url = None): if not blocks_read: return if total_size < 0: print ('Read %d blocks' % blocks_read) else: percent = int(blocks_read*block_size*100/total_size) sys.stdout.write("\rDownloading File ..... %2d%%" % percent)
class Updater(): latestNumberFile = "" def __init__(self): self.latestNumberFileUrl = "http://build.chromium.org/buildbot/snapshots/chromium-rel-xp/LATEST" self.latestFileUrl = "http://build.chromium.org/buildbot/snapshots/chromium-rel-xp/" self.latestFileName = "chrome-win32.zip" self.saveFilePath = "chrome-win32-#number#.zip" def run(self): self.appInfo() self.downloadFile(self.getLatestNumber()) def appInfo(self): print("Application Info\n") self.printInfo("AppName", __appname__) self.printInfo("Author", __author__) self.printInfo("version", __version__)
def downloadFile(self, latestNumber): if latestNumber == None: print(">> Exception >> Can not found out latest number") return else: savePath = os.path.dirname(os.path.abspath(__file__)) fileName = self.saveFilePath.replace("#number#", latestNumber) fileUrl = self.getLatestFileUrl(latestNumber, self.latestFileName) self.printMessage("Latest Number", latestNumber) self.printMessage("Save to Path", savePath) self.printMessage("Save Filename", fileName)
print("\nTarget File Information\n") urlObject = urllib2.urlopen(fileUrl) meta = urlObject.info() urlObject.close() self.printMessage("Url Protocol", self.latestFileUrl[0:self.latestFileUrl.find(":")]) self.printMessage("Read Form Url", self.latestFileUrl.replace("http://", "")) self.printMessage("Read File Name", self.latestFileName) self.printMessage("Got File Size", meta.getheaders("Content-Length")[0])
print urlStream = urllib.urlretrieve(fileUrl, savePath + "/" + fileName, reporthook=dlProgress) print("\n\nDownload Completed")
def printMessage(self, subject, content): print(">> %-14s >> %s") % (subject, content)
def printInfo(self, subject, content): print("%-10s : %s") % (subject, content)
def getLatestFileUrl(self, latestNumber, latestFileName): return self.latestFileUrl + latestNumber + "/" + latestFileName def getLatestNumber(self): print("\nSearching latest number\n") page = urllib2.urlopen(self.latestNumberFileUrl) number = page.read() if number: return number else: return None if __name__ == '__main__': Updater().run()
|